Enlaces
Esta en:

documentos
Arriba
Bind-9
Bind-8
Ad+bind
Dhcp
Kdephp
Shell
Trucos
Php
Documentos
Cuestiones php
Fedora
Legal
W2000 xp
COMOS
Errores dns

Re: [PHP-ES] Sumar campos de todos los registros y almacenar los totales

Write haof XML files: Vladimir Hernández <interco_at_linuxbaja.org>
Fecha: Thu, 24 Mar 2005 09:52:02 -0800

On Wed, 23 Mar 2005 13:04:24 -0300, Diego wrote
> Hola gente...
>
> Me presento.. me llamo Diego, soy un principiante y tambien este es
> mi primera post..
>
> Resulta que tengo la siguiente tabla en MySQL:
>
> | id | Col1 | Col2 | Col3 | Col4 | Col5 | Col6 | Total |
>
> Y necesito sumar los campos de las columnas 2, 4 y 5 y almacenar el
> resultado de cada registro en la columna Total. Necesito que sea con
> todos los registros y de una sola vez.
>
> Para sumar los registros y mostrar el resultado en el navegador estoy
> utilizando el siguiente script:
>
> echo "<table width='70%' border='1' cellspacing='2' cellpadding='2'>";
> echo
> "<tr><td>id</td><td>Col2</td><td>Col4</td><td>Col5</td><td>Total</td></tr>";
> //consulta los tipos de familia
> $consulta="SELECT *, Col2+Col4+Col5 AS total FROM tabla1";
> $resultado=mysql_query($consulta);
>
> while ($columnas=mysql_fetch_array($resultado)) {
> extract ($columnas);
> echo "<tr><td>$id</td><td>$Col2</td><td align='right'>$Col4</td>
> <td align='right'>$Col5</td><td align='right'>$total</td></tr>";
> }
>
> Con esto consigo que me muestre una tabla en el navegador con todos los
> registros y las sumas como yo quiero en la columna Total (registro
> por registro).
>
> Mi problema es que no se como guardar los resultados de cada suma en
> la columna Total de mi Tabla en la DB. Intente colocando:
>
> $actualizar="UDPADTE tabla1 SET Total=$total";
> mysql_query($actualizar);
>
> Pero con esto solo consigo que guarde en la columna Total de la
> Tabla de mi DB el mismo valor en todos los registros, que es el
> valor de la suma del ultimo registro, y no el valor que corresponde
> a cada suma.
>
> ¿Alguien me podria dar una idea de como hacerlo o donde encontrar la
> info que necesito? (busque por todos lados pero no fui capaz de
> encontrar lo que necesito)
>
> Gracias a todos
> Diego.
>
> --
> PHP Spanish Localization Talk Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php

Necesitas hacer la operación para cada registro. Supongo que tienes algún
campo que tenga diferente valor en cada registro. Suponiendo que se llama "id":
$selecciona_los_id_sql="SELECT id,col2,col4,col5 FROM tabla 1";
$selecciona_los_id_salida = mysql_query($selecciona_los_id_sql,$db);
$cuantos = mysql_num_rows($selecciona_los_id_salida);
for($i=0;$i<$cuantos;$i++){
  $array_temporal = mysql_fetch_row($selecciona_los_id_salida);
  $suma = $array_temporal[1]+$array_temporal[2]+$array_temporal[3];
  $actualizar_sql = "UPDATE tabla1 SET Total=$suma WHERE id=$array_temporal[0]
LIMIT 1";
  $actualizar_ya = mysql_query($actualizar_sql,$db);
}

Claro, en el mismo ciclo FOR donde obtienes la suma y la actualizas al total
puedes también poner tus instrucciones para que se generen los renglones de la
tabla.

Dos notas:
1- Seguro que hay una forma más elegante de hacerlo.
2- Te sugiero llamar a tus tablas por un nombre descriptivo, igual que a los
campos (v.gr. "tabla_clientes", "monto","impuesto", etc..).

Saludos

--
Vladimir Hernández
Linux Baja California
Grupo de usuarios de GNU/Linux
http://linuxbaja.org
Linux registered user # 374079
counter.li.org
-- 
PHP Spanish Localization Talk Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Nearby vie mar 25 2005 - 00:25:06 CET

Este archivo fue generado por hypermail 2.2.0 : mié nov 07 2007 - 20:55:33 CET


Página Principal
Google

Web
dns.bdat.net

Visita nuestro proveedor:
www.bdat.net

Publicidad:

Impresenteibols:Humor Jazz, música en vivo