Comunidad de diseño web y desarrollo en internet online

Sumar campos resultado de una consulta php mysql ¡ayuda!

Citar            
MensajeEscrito el 08 Abr 2013 04:48 am
Bueno la verdad que estoy empezando en esto y se me presenta el siguiente problema:
Hago una consulta a la tabla recibos donde filtro por nombre de comercio y por fecha
y deseo sumar el monto total de todos los recibos de la consulta y hasta ahora no lo consigo me da el total de todos los registros, Gracias de antemano a quien me pueda echar una mano.
Esta es la consulta:

Código PHP :

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$colname_recibos = "-1";
if (isset($_GET['comercio'])) {
  $colname_recibos = $_GET['comercio'];
}
$colname2_recibos = "-1";
if (isset($_GET['fechapago'])) {
  $colname2_recibos = $_GET['fechapago'];
}
mysql_select_db($database_usersconexion, $usersconexion);
$query_recibos = sprintf("SELECT * FROM tbrecibos WHERE comercio LIKE %s AND fechapago  LIKE %s", GetSQLValueString("%" . $colname_recibos . "%", "text"),GetSQLValueString("%" . $colname2_recibos . "%", "text"));

$recibos = mysql_query($query_recibos, $usersconexion) or die(mysql_error());
$row_recibos = mysql_fetch_assoc($recibos);
$totalRows_recibos = mysql_num_rows($recibos);$colname_recibos = "-1";

if (isset($_GET['comercio'])) {
  $colname_recibos = $_GET['comercio'];
}
$colname2_recibos = "-1";
if (isset($_GET['fechapago'])) {
  $colname2_recibos = $_GET['fechapago'];
}
 $total = 0 ;
mysql_select_db($database_usersconexion, $usersconexion);
$query_recibos = sprintf("SELECT * FROM tbrecibos WHERE comercio LIKE %s AND fechapago  LIKE %s", GetSQLValueString("%" . $colname_recibos . "%", "text"),GetSQLValueString("%" . $colname2_recibos . "%", "text"));
$recibos = mysql_query($query_recibos, $usersconexion) or die(mysql_error());
$row_recibos = mysql_fetch_assoc($recibos);
$totalRows_recibos = mysql_num_rows($recibos);



Y este es el totalizador que me totaliza todos los registros y no la consulta:


Código PHP :

$query_recibos=mysql_query("SELECT * FROM tbrecibos ");
while($row_recibos=mysql_fetch_assoc($query_recibos)){
$total= $total + $row_recibos['total'];
}
echo $total //muestra la suma total



Llevo 1 dia como loco con esto.

[img]https://mail.google.com/mail/u/0/?ui=2&ik=b6e0dd5c71&view=att&th=13de7f8b5039842c&attid=0.1&disp=emb&realattid=ii_13de7f89ba16fb65&zw&atsh=1[/img]

Por aldelcon

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Abr 2013 04:53 am
[img]https://mail.google.com/mail/u/0/?ui=2&ik=b6e0dd5c71&view=att&th=13de2ec8958de2d9&attid=0.0.1&disp=emb&realattid=ii_13de2eb05bb94f27&zw&atsh=1[/img]

Por aldelcon

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Abr 2013 06:06 am

aldelcon escribió:


Código PHP :

$query_recibos=mysql_query("SELECT * FROM tbrecibos ");
while($row_recibos=mysql_fetch_assoc($query_recibos)){
$total= $total + $row_recibos['total'];
}
echo $total //muestra la suma total



El error es que estás realizando la consulta nuevamente sin filtrarla, si la usarás en la misma página podrías tomar la variable $recibos de arriba y ejecutar con mysql_fetch_array así:

Código PHP :

while($row_recibos=mysql_fetch_array($recibos)){
$total= $total + $row_recibos['total'];
}
echo $total //muestra la suma total


Espero que te sea útil simplificarlo un poco como te estoy indicando, si no te funciona o tienes dudas vuelve a postear, estaré pendiente.

Por NeftaliYagua

18 de clabLevel



Genero:Masculino  

Activista, Desarrollador, Empresario

chrome
Citar            
MensajeEscrito el 08 Abr 2013 03:10 pm
Neftali gracias por tu pronta respuesta pero no me funciono los codigos php estan en la misma pagina y si hago como dices el resultado total me da = 0.

como yo lo tengo me suma pero el total de todos los registros y no el total de la consulta

Por aldelcon

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Abr 2013 06:49 pm
Publica las tablas, te armaré el código desde 0, allí hay 3 consultas donde podría haber una sola, lo simplificaré con una explicación.

Pero necesito que publiques las tablas.

Por NeftaliYagua

18 de clabLevel



Genero:Masculino  

Activista, Desarrollador, Empresario

chrome
Citar            
MensajeEscrito el 08 Abr 2013 08:45 pm
tienes la tabla ocupo que filtre pos 'comercio' y 'fechapago'



[url=https://mail-attachment.googleusercontent.com/attachment/u/0/?ui=2&ik=b6e0dd5c71&view=att&th=13deb647e4d8ae7c&attid=0.1&disp=inline&realattid=f_hfa3z0ln0&safe=1&zw&saduie=AG9B_P-TgiMdmHbPvCGK5j67RgVl&sadet=1365453896004&sads=a6PGATzTFwgCnKet_3GqT0ueHN0&sadssc=1][/url]Aqui

[img]https://mail-attachment.googleusercontent.com/attachment/u/0/?ui=2&ik=b6e0dd5c71&view=att&th=13deb647e4d8ae7c&attid=0.1&disp=inline&realattid=f_hfa3z0ln0&safe=1&zw&saduie=AG9B_P-TgiMdmHbPvCGK5j67RgVl&sadet=1365453896004&sads=a6PGATzTFwgCnKet_3GqT0ueHN0&sadssc=1[/img]

Por aldelcon

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Abr 2013 08:47 pm
no se por que no me agarra la imagen:
en este enlace puedes ver la tabla:


https://mail-attachment.googleusercontent.com/attachment/u/0/?ui=2&ik=b6e0dd5c71&view=att&th=13deb647e4d8ae7c&attid=0.1&disp=inline&realattid=f_hfa3z0ln0&safe=1&zw&saduie=AG9B_P-TgiMdmHbPvCGK5j67RgVl&sadet=1365453896004&sads=a6PGATzTFwgCnKet_3GqT0ueHN0&sadssc=1

Por aldelcon

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Abr 2013 03:13 am
HE CONSEGUIDO QUE ME TIRE EL TOTAL PERO AHORA SOO ME MUESTRA UNA FILA ESTO PA' VOLVERSE LOCO

Código PHP :

$colname_recibos = "-1";
if (isset($_GET['comercio'])) {
  $colname_recibos = $_GET['comercio'];
}
$colname2_recibos = "-1";
if (isset($_GET['fechapago'])) {
  $colname2_recibos = $_GET['fechapago'];
}
mysql_select_db($database_usersconexion, $usersconexion);
$query_recibos = sprintf("SELECT SUM(total) as Stotal, fechapago, comercio, factura, total, idrecibo, vencimiento, periodo, basico, mantenim, iv, abonado, nombre, usuario FROM tbrecibos WHERE comercio LIKE %s AND fechapago  LIKE %s ", GetSQLValueString("%" . $colname_recibos . "%", "text"),GetSQLValueString("%" . $colname2_recibos . "%", "text"));
$recibos = mysql_query($query_recibos, $usersconexion) or die(mysql_error());
$row_recibos = mysql_fetch_array($recibos);
$totalRows_recibos = mysql_num_rows($recibos);$colname_recibos = "-1";





<div id="seleccion"> <table width="90%" border="1" align="center" cellpadding="1" cellspacing="1">
<tr bgcolor="#91BD09">
<td>idrecibo</td>
<td>fechapago</td>
<td>abonado</td>
<td>nombre</td>
<td>usuario</td>
<td>vencimiento</td>
<td>periodo</td>
<td>factura</td>
<td>basico</td>
<td>comercio</td>
<td>mantenim</td>
<td>iv</td>
<td>total</td>
<td>Stotal</td>
</tr>
<?php do { ?>
<tr>
<td><?php echo $row_recibos['idrecibo']; ?></td>
<td><?php echo $row_recibos['fechapago']; ?></td>
<td><?php echo $row_recibos['abonado']; ?></td>
<td><?php echo $row_recibos['nombre']; ?></td>
<td><?php echo $row_recibos['usuario']; ?></td>
<td><?php echo $row_recibos['vencimiento']; ?></td>
<td><?php echo $row_recibos['periodo']; ?></td>
<td><?php echo $row_recibos['factura']; ?></td>
<td><?php echo $row_recibos['basico']; ?></td>
<td><?php echo $row_recibos['comercio']; ?></td>
<td><?php echo $row_recibos['mantenim']; ?></td>
<td><?php echo $row_recibos['iv']; ?></td>
<td><?php echo $row_recibos['total']; ?></td>
<td><?php echo $row_recibos['Stotal']; ?></td>
</tr>

<?php } while ($row_recibos = mysql_fetch_assoc($recibos)); ?>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td></td>
<td></td>
<td></td>


</tr>
</table></div>

POR QUE SOLO ME TIRA UN REGISTRO SI DEBERIAN SER DOS?

Por aldelcon

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Abr 2013 02:06 pm

aldelcon escribió:

HE CONSEGUIDO QUE ME TIRE EL TOTAL PERO AHORA SOO ME MUESTRA UNA FILA ESTO PA' VOLVERSE LOCO

Código PHP :

$query_recibos = sprintf("SELECT SUM(total) as Stotal, fechapago, comercio, factura, total, idrecibo, vencimiento, periodo, basico, mantenim, iv, abonado, nombre, usuario FROM tbrecibos WHERE comercio LIKE %s AND fechapago  LIKE %s ", GetSQLValueString("%" . $colname_recibos . "%", "text"),GetSQLValueString("%" . $colname2_recibos . "%", "text"));


POR QUE SOLO ME TIRA UN REGISTRO SI DEBERIAN SER DOS?


Sucede porque SUM(total) agrupa los registros, a demás debes usar mysql_fetch_array() en vez de mysql_fetch_assoc()



Código PHP :

$colname_recibos = "-1";
if (isset($_GET['comercio'])) {
  $colname_recibos = $_GET['comercio'];
}
$colname2_recibos = "-1";
if (isset($_GET['fechapago'])) {
  $colname2_recibos = $_GET['fechapago'];
}
mysql_select_db($database_usersconexion, $usersconexion);
$query_recibos = sprintf("SELECT fechapago, comercio, factura, total, idrecibo, vencimiento, periodo, basico, mantenim, iv, abonado, nombre, usuario FROM tbrecibos WHERE comercio LIKE %s AND fechapago  LIKE %s ", GetSQLValueString("%" . $colname_recibos . "%", "text"),GetSQLValueString("%" . $colname2_recibos . "%", "text"));
$recibos = mysql_query($query_recibos, $usersconexion) or die(mysql_error());
$totalRows_recibos = mysql_num_rows($recibos); // Esta línea parece ser innecesaria.
$total=0;




Código PHP :

    <div id="seleccion">
<table width="90%" border="1" align="center" cellpadding="1" cellspacing="1">
<thead>
      <tr bgcolor="#91BD09">
        <td>idrecibo</td>
        <td>fechapago</td>
        <td>abonado</td>
        <td>nombre</td>
        <td>usuario</td>
        <td>vencimiento</td>
        <td>periodo</td>
        <td>factura</td>
        <td>basico</td>
        <td>comercio</td>
        <td>mantenim</td>
        <td>iv</td>
        <td>total</td>
        <td>Stotal</td>
      </tr>
</thead>
      <?php while ($row_recibos = mysql_fetch_array($recibos)) { ?>
         <?php $total+=$row_recibos['total']; ?>
        <tr>
          <td><?php echo $row_recibos['idrecibo']; ?></td>
          <td><?php echo $row_recibos['fechapago']; ?></td>
          <td><?php echo $row_recibos['abonado']; ?></td>
          <td><?php echo $row_recibos['nombre']; ?></td>
          <td><?php echo $row_recibos['usuario']; ?></td>
          <td><?php echo $row_recibos['vencimiento']; ?></td>
          <td><?php echo $row_recibos['periodo']; ?></td>
          <td><?php echo $row_recibos['factura']; ?></td>
          <td><?php echo $row_recibos['basico']; ?></td>
          <td><?php echo $row_recibos['comercio']; ?></td>
          <td><?php echo $row_recibos['mantenim']; ?></td>
          <td><?php echo $row_recibos['iv']; ?></td>
          <td><?php echo $row_recibos['total']; ?></td>
        </tr>
       
        <?php } ?>
     <tr>
          <td colspan="8" >Total:</td>
          <td colspan="5"><?php echo  $total ?></td>
        </tr>
        </table></div>


Intenta así a ver que tal va.

Por NeftaliYagua

18 de clabLevel



Genero:Masculino  

Activista, Desarrollador, Empresario

chrome
Citar            
MensajeEscrito el 09 Abr 2013 10:47 pm
Muchisimas gracias Neftali me has salvado la vida de verdad, todo perfecto.

Por aldelcon

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 10 Abr 2013 06:54 am

aldelcon escribió:

Muchisimas gracias Neftali me has salvado la vida de verdad, todo perfecto.


Para servir, siempre que esté a mi alcance, si está a mi alcance está a disposición. :wink:

Por NeftaliYagua

18 de clabLevel



Genero:Masculino  

Activista, Desarrollador, Empresario

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.