Foros del Web » Programando para Internet » PHP »

Suma de campos por campo correspondiente

Estas en el tema de Suma de campos por campo correspondiente en el foro de PHP en Foros del Web. hola amigos tengo una consulta que me imprime todos mis registros en una tabla... donde tengo un campo llamado "numero" y otro llamado "iva".. y ...
  #1 (permalink)  
Antiguo 11/06/2012, 07:53
Avatar de totti026  
Fecha de Ingreso: junio-2011
Mensajes: 150
Antigüedad: 12 años, 10 meses
Puntos: 4
Pregunta Suma de campos por campo correspondiente

hola amigos tengo una consulta que me imprime todos mis registros en una tabla...
donde tengo un campo llamado "numero" y otro llamado "iva".. y otros mas.

en el campo "numero" Puede ser cualquier numero entero comenzando desde "1" en adelante.

ejemplo:


y lo que quiero esque rigiendome por el campo "numero", me sume el "iva" segun el numero que correspona, osea que de todos los "1" me haga la suma del iva,
de todos los "2" igual el iva y del numero "3" lo mismo. y me los imprima justo debajo cuando termina cada numero:



Este es mi codigo de la tabla:

Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3. $fila_campos=mysql_query("SELECT * FROM registros WHERE id_proyecto=$id_proyecto;") or die (mysql_error());
  4. ?>
  5. <table>
  6.     <thead>
  7.         <tr>
  8.           <th><div>numero</div></th>
  9.           <th><div>nombre</div></th>
  10.           <th><div>direccion</div></th>
  11.           <th><div>telefono</div></th>
  12.           <th><div>producto</div></th>
  13.           <th><div>costo</div></th>
  14.           <th><div>iva</div></th>        
  15.          
  16.         </tr>
  17.     </thead>
  18.         <?php  
  19.    
  20.     while ($fila=mysql_fetch_array($fila_campos))
  21.     {
  22.        
  23.     ?>
  24.         <tr>
  25.           <td>
  26.           <div><?php  echo $fila["numero"]; ?></div></td>
  27.           <td >
  28.           <div ><?php  echo $fila["nombre"]; ?></div></td>
  29.           <td >
  30.           <div ><?php  echo $fila["direccion"]; ?></div></td>
  31.           <td >
  32.           <div ><?php  echo $fila["telefono"]; ?></div></td>
  33.           <td >
  34.           <div ><?php  echo $fila["producto"]; ?></div></td>
  35.           <td >
  36.           <div ><?php  echo $fila["costo"]; ?></div></td>
  37.           <td >
  38.           <div ><?php  echo $fila["iva"]; ?></div></td>
  39.                    
  40.         </tr>
  41.         <?php
  42.     }
  43.     ?>
  44.        
  45.       </table>

Gracias por su ayuda...
  #2 (permalink)  
Antiguo 11/06/2012, 08:34
 
Fecha de Ingreso: junio-2012
Ubicación: Argentina - Buenos Aires
Mensajes: 135
Antigüedad: 11 años, 10 meses
Puntos: 32
Respuesta: Suma de campos por campo correspondiente

Primero ordena la consulta por el campo numero

Código PHP:
Ver original
  1. $fila_campos=mysql_query('SELECT * FROM registros WHERE id_proyecto=$id_proyecto ORDER BY numero ASC');

Despues pone un if adentro del while con una logica de suma y listo

Código PHP:
Ver original
  1. $un = -1;
  2.  $totiva = 0;
  3.  while ($fila=mysql_fetch_array($fila_campos))
  4.     {
  5.         echo "
  6.  
  7.        <tr>
  8.          <td><div>".$fila['numero']."</div></td>
  9.          <td><div>".$fila['nombre']."</div></td>
  10.          <td><div>".$fila['direccion']."</div></td>
  11.          <td><div>".$fila['telefono']."</div></td>
  12.          <td><div>".$fila['producto']."</div></td>
  13.          <td><div>".$fila['costo']."</div></td>
  14.          <td><div>".$fila['iva']."</div></td>                    
  15.         </tr>";    
  16.         if($fila['numero'] != $un )
  17.         {
  18.             if($un != -1)
  19.             {
  20.                 echo "<tr><td colspan='7'>Total IVA:'".$totiva."'</td></tr>";
  21.             }
  22.             $un = $fila['numero'];
  23.             $totiva = 0;
  24.         }
  25.         else{
  26.             $totiva = $totiva + $fila['iva'];
  27.         }
  28.     }

Espero sirva, saludos.
__________________
http://www.latinium.com.ar/
  #3 (permalink)  
Antiguo 11/06/2012, 10:55
Avatar de totti026  
Fecha de Ingreso: junio-2011
Mensajes: 150
Antigüedad: 12 años, 10 meses
Puntos: 4
Respuesta: Suma de campos por campo correspondiente

hey gracias elgoncho99, mira este es el resultado:


como ves antes del "Total IVA:" me jala también el numero siguiente.
en la primera suma me da como resultado 7 porque no sume el primer valor que es 1 y deberia ser 8.
y ya al final no me muestra la suma...
  #4 (permalink)  
Antiguo 11/06/2012, 10:59
 
Fecha de Ingreso: junio-2012
Ubicación: Argentina - Buenos Aires
Mensajes: 135
Antigüedad: 11 años, 10 meses
Puntos: 32
Respuesta: Suma de campos por campo correspondiente

Pone el if antes

Código PHP:
Ver original
  1. $un = -1;
  2.  $totiva = 0;
  3.  while ($fila=mysql_fetch_array($fila_campos))
  4.     {
  5.         if($fila['numero'] != $un )
  6.         {
  7.             if($un != -1)
  8.             {
  9.                 echo "<tr><td colspan='7'>Total IVA:'".$totiva."'</td></tr>";
  10.             }
  11.             $un = $fila['numero'];
  12.             $totiva = 0;
  13.         }
  14.         else{
  15.             $totiva = $totiva + $fila['iva'];
  16.         }
  17.         echo "
  18.  
  19.        <tr>
  20.          <td><div>".$fila['numero']."</div></td>
  21.          <td><div>".$fila['nombre']."</div></td>
  22.          <td><div>".$fila['direccion']."</div></td>
  23.          <td><div>".$fila['telefono']."</div></td>
  24.          <td><div>".$fila['producto']."</div></td>
  25.          <td><div>".$fila['costo']."</div></td>
  26.          <td><div>".$fila['iva']."</div></td>                    
  27.        </tr>";    
  28.  
  29.     }
__________________
http://www.latinium.com.ar/
  #5 (permalink)  
Antiguo 11/06/2012, 11:36
Avatar de totti026  
Fecha de Ingreso: junio-2011
Mensajes: 150
Antigüedad: 12 años, 10 meses
Puntos: 4
Respuesta: Suma de campos por campo correspondiente

Perfecto elgoncho99! grax, ya se acomodaron por numero, solo la suma al parecer no me toma en cuenta el 1er valor... como se muestra en la imagen
y en la ultima suma osea en el numero "4" ya no me muestra el total:
  #6 (permalink)  
Antiguo 11/06/2012, 11:39
 
Fecha de Ingreso: junio-2012
Ubicación: Argentina - Buenos Aires
Mensajes: 135
Antigüedad: 11 años, 10 meses
Puntos: 32
Respuesta: Suma de campos por campo correspondiente

tenes que cambiar
Código PHP:
Ver original
  1. $totiva = 0;

por

Código PHP:
Ver original
  1. $totiva = $fila['iva';

Espero sirva, saludos.
__________________
http://www.latinium.com.ar/
  #7 (permalink)  
Antiguo 11/06/2012, 11:54
Avatar de totti026  
Fecha de Ingreso: junio-2011
Mensajes: 150
Antigüedad: 12 años, 10 meses
Puntos: 4
Respuesta: Suma de campos por campo correspondiente

muchas gracias hermano! de verdad que ha sido de gran ayuda. oye y para realizar ya la ultima suma porque ya ves que no la muestra... hasta que inserte un "5" la mostrará...sera con otra condición?
  #8 (permalink)  
Antiguo 11/06/2012, 12:03
 
Fecha de Ingreso: junio-2012
Ubicación: Argentina - Buenos Aires
Mensajes: 135
Antigüedad: 11 años, 10 meses
Puntos: 32
Respuesta: Suma de campos por campo correspondiente

Es que el while termina. Y aun el ultimo numero no cambio ($un)
agrega afuera del while esto.
Código PHP:
Ver original
  1. echo "<tr><td colspan='7'>Total IVA:'".$totiva."'</td></tr>";


Espero sirva, saludos.

PD: Ni pensaste creo que te resolvi el problema entero... jajaja!
__________________
http://www.latinium.com.ar/
  #9 (permalink)  
Antiguo 11/06/2012, 12:15
Avatar de totti026  
Fecha de Ingreso: junio-2011
Mensajes: 150
Antigüedad: 12 años, 10 meses
Puntos: 4
Respuesta: Suma de campos por campo correspondiente

Muchas muchas gracias! seguire practicando elgoncho99.
gracias por tu tiempo y saludos a Buenos Aires.

Etiquetas: campos, correspondiente, mysql, registro, sql, suma, tabla
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 07:20.