Foros del Web » Programando para Internet » PHP »

Cálculo en PHP

Estas en el tema de Cálculo en PHP en el foro de PHP en Foros del Web. Hola les tengo una inquietud, estoy mostrando unos registros de una base de datos.. en dicha base de datos tengo 2 campos con las cuales ...
  #1 (permalink)  
Antiguo 20/10/2004, 12:15
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 14 años, 6 meses
Puntos: 0
Cálculo en PHP

Hola les tengo una inquietud, estoy mostrando unos registros de una base de datos.. en dicha base de datos tengo 2 campos con las cuales hago un cálculo..

cantidad y costo_unitario

Ok a la salida de los datos debo mostrar un subtotal por registro para ellos yo hago la siguiente formula

Código PHP:
$subtotal= ($row[cantidad] * $row[costo_unitario]);
echo 
"$" .number_format($subtotal2'.'','); 
ok hasta ahi todo bien, pero al momento de calcular el total se me complica porque tengo que sumar el subtotal de los n registros que me da la base de datos en una consulta. Ademas creo que tengo que meter ese cálculo fuera del While para que no se repita el total.



__________________
Un Saludo, Andinistas.
"Llegaron... Ellos tenían la biblia y nosotros la tierra... y nos dijieron: 'Cierren los ojos y recen.' Cerramos los ojos y cuando los abrimos,
ellos tenían la tierra y nosotros la biblia." Abadío Green.
  #2 (permalink)  
Antiguo 20/10/2004, 12:17
Avatar de HiTek  
Fecha de Ingreso: noviembre-2003
Ubicación: LF, Santiago.Chile
Mensajes: 217
Antigüedad: 14 años, 1 mes
Puntos: 0
podrias colocar el ciclo while completo, para tener mas info acerca de tu problema...no es dificil solucionarlo, pero falta info...salu2
  #3 (permalink)  
Antiguo 20/10/2004, 12:21
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 14 años, 6 meses
Puntos: 0
ahi va

ok el codigo para que os oriente un poco

Código PHP:
while($row = mysql_fetch_array($_pagi_result)){
$cont=0;

$apellidos= $row[cod_persona];
$nombres= $row[cod_persona];
$codigo2= $row[cod_sectorintervencion];
$codigo3= $row[id_sub_item];
$codigo4= $row[txt_codigo];
$codigo5= $row[unidad_de_medida];


// DlookUp es una función que hace un inner join de datos para mostrar otros
//obtengo datos de la persona que ingresó el registro
$nom = DLookUp("personas", "txt_apellidos", "cod_persona=" . tosql($apellidos, "Text"));
$prenom = DLookUp("personas", "txt_nombres", "cod_persona=" . tosql($nombres, "Text"));

//obtengo  el código y el nombre del código del sector de intervención
$sectori = DLookUp("proyecto_sectorintervencion", "txt_sectorintervencion, txt_codigo_sectorintervencion", "cod_sectorintervencion=" . tosql($codigo2, "Text"));

//obtengo el código de naciones unidas y la descripción
$itemun = DLookUp("presupuesto_sub_item", "txt_sub_item", "id_sub_item=" . tosql($codigo3, "Text"));

//obtengo el código del proyecto y el nombre del proyecto
$proyecto = DLookUp("proyectos", "txt_titulo", "cod_proyecto=" . tosql($codigo4, "Text"));

//obtengo el nombre de la unidad de medida
$unidad_medida = DLookUp("presupuesto_unidad_medida", "txt_unidad_medida", "id_unidad_medida=" . tosql($codigo5, "Text"));

// le coloco colores a las celdas de acuerdo al css
if ($alternate == "1") {
$color = "tableData2";
$alternate = "2";
}
else
{
$color = "tableData";
$alternate = "1";
}
?>
  <tr class="<?=$color?>">
        <td width="7%" class="texto"><div align="center"><?=$prenom?><br><?=$nom?></div></td>
        <td width="8%" class="texto"><div align="center"><?= mostrarFechaCorta($row[fecha])?></div></td>
        <td width="11%" class="texto"><?=$sectori?></td>
        <td width="5%" class="texto"><?=$itemun?></td>
        <td width="24%" class="texto"><?=$proyecto?></td>
        <td width="9%" class="texto"><?=$row[detalle_linea_calculo]?></td>
        <td width="11%" class="texto"><?=$unidad_medida?></td>
        <td width="6%" class="texto"><div align="center"><?=$row[cantidad]?></div></td>
        <td width="8%" class="texto"><div align="right"><?
        
echo "$" .number_format($row[costo_unitario], 2'.'','); ?></div></td>
        <td width="11%" class="texto"><div align="right"><?

$subtotal
= ($row[cantidad] * $row[costo_unitario]);
$total = (($cont++)+ $subtotal);

echo 
"$" .number_format($subtotal2'.'',');        
?></div></td>
  </tr>

}
__________________
Un Saludo, Andinistas.
"Llegaron... Ellos tenían la biblia y nosotros la tierra... y nos dijieron: 'Cierren los ojos y recen.' Cerramos los ojos y cuando los abrimos,
ellos tenían la tierra y nosotros la biblia." Abadío Green.
  #4 (permalink)  
Antiguo 20/10/2004, 12:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 16 años
Puntos: 126
Sabias que ....

En tu própia consulta SQL a tu BD puedes hacer cálculos y obtenerlos tipo:

SELECT (campo1*campo2) AS resultado,otrocampo FROM tabla ....

en row['resultado'] tendrás el resultado ..

Se me olvidó .. también puedes hacer SUM() (sumatorios) y demás operaciones aritméticas en SQL directamente ..

Un saludo,

Última edición por Cluster; 20/10/2004 a las 12:26
  #5 (permalink)  
Antiguo 20/10/2004, 12:33
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 7 meses
Puntos: 16
Hola,

Mas o menos, necesitas algo as:
Código PHP:
$total=0;
while (....) { 
//tu bucle while
....
$total+ = $subtotal;  // igual que $total=$total+$subtotal
// fin de tu bucle while
echo $total
Es lo que se llama un acumulador.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 20/10/2004, 12:34
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 14 años, 6 meses
Puntos: 0
ok

Ok cluster, lo voy a intentar y os cuento como me fue, habia olvidado por completo esa posiblidad. gracias
__________________
Un Saludo, Andinistas.
"Llegaron... Ellos tenían la biblia y nosotros la tierra... y nos dijieron: 'Cierren los ojos y recen.' Cerramos los ojos y cuando los abrimos,
ellos tenían la tierra y nosotros la biblia." Abadío Green.
  #7 (permalink)  
Antiguo 20/10/2004, 12:43
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 14 años, 6 meses
Puntos: 0
ok

Cita:
Iniciado por josemi
Hola,

Mas o menos, necesitas algo as:
Código PHP:
$total=0;
while (....) { 
//tu bucle while
....
$total+ = $subtotal;  // igual que $total=$total+$subtotal
// fin de tu bucle while
echo $total
Es lo que se llama un acumulador.

Saludos.
Ok ha funcionado como dice Josemi, aunque también está interesante hacerlo por consultas SQL..


__________________
Un Saludo, Andinistas.
"Llegaron... Ellos tenían la biblia y nosotros la tierra... y nos dijieron: 'Cierren los ojos y recen.' Cerramos los ojos y cuando los abrimos,
ellos tenían la tierra y nosotros la biblia." Abadío Green.
  #8 (permalink)  
Antiguo 20/10/2004, 12:48
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 14 años, 6 meses
Puntos: 0
=

Código PHP:
//Consulta SQL para calcular el subtotal de cantidad * costo_unitario
$subtotal "SELECT (cantidad * costo_unitario) AS subtotal FROM presupuesto_datos";

//Consulta SQL para calcular el total de los subtotales de los n registros de la tabla
$total"SELECT SUM(cantidad * costo_unitario) AS total FROM presupuesto_datos"
__________________
Un Saludo, Andinistas.
"Llegaron... Ellos tenían la biblia y nosotros la tierra... y nos dijieron: 'Cierren los ojos y recen.' Cerramos los ojos y cuando los abrimos,
ellos tenían la tierra y nosotros la biblia." Abadío Green.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:03.