Foros del Web » Programando para Internet » PHP »

suma de columnas

Estas en el tema de suma de columnas en el foro de PHP en Foros del Web. Hola buenas tardes. Estoy revisando el foro y no doy con la solución, siempre me da error mysql. Tengo una db con nombre serviciosdiarios y ...
  #1 (permalink)  
Antiguo 09/10/2019, 11:58
 
Fecha de Ingreso: febrero-2011
Mensajes: 62
Antigüedad: 8 años, 7 meses
Puntos: 0
suma de columnas

Hola buenas tardes.

Estoy revisando el foro y no doy con la solución, siempre me da error mysql.

Tengo una db con nombre serviciosdiarios y bastantes columnas, entre ellas una que es el importe (totalefectivo) y otra fecha_ingreso.

Quisiera que me sumara los importes de cierta fecha_ingreso, en esa fecha puede haber 3, 4, 8 importes, no son siempre ni el mismo numero de ingresos ni la misma cantidad.

No he podido individualizar los registros para sumarlos, pues no son siempre el mismo numero de registros y con GROUP BY tampoco soy capaz.

Os pongo el código que utilizo por si me podeis decir donde tengo el error.

Código PHP:
            <?php                      
                
include ("ctrl/configuracion.php");

                if (! 
$link mysql_connect($server$db_user$db_pass)) {
                    echo 
"No pudo conectare con mysql"
                exit; 
                }
            
                if (! 
mysql_select_db ($database$link)) {
                    echo 
"No se PUDO selecionar la base de Datos" ;
                exit;
                }

                
$sql mysql_query("SELECT SUM(totalefectivo) FROM $serviciosdiarios WHERE fecha_ingreso = $fecha_ingreso GROUP BY($fecha_ingreso)");
                
$resultado mysql_query $sql $link );
                
                if (! 
$resultado ) {
                       echo 
"Error de MySQL: "mysql_error () ;           
                exit;
                }                    
                
                while(
$row=mysql_fetch_assoc($resultado)){
                     
$total+=$row['totalefectivo'];
                     echo 
'$total';
                }
                
mysql_free_result $resultado );         
            
?>
Muchas gracias de antemano.

Un saludo.
  #2 (permalink)  
Antiguo 09/10/2019, 20:11
 
Fecha de Ingreso: abril-2006
Mensajes: 303
Antigüedad: 13 años, 5 meses
Puntos: 55
Respuesta: suma de columnas

antes de que trabajes consultas SQL directo con PHP procura, crearte un archivo .sql y que contenga las CONSULTAS MySql , usa PHPMYADMIN o WORKBENCH para hacer Consultas directamente en MYSQL y asi te marque los errores y tambien te muestre los resultados que quieras
de lo contrario cometeras errores como esto
Código MySQL:
Ver original
  1. SELECT SUM(totalefectivo) FROM $serviciosdiarios WHERE fecha_ingreso = $fecha_ingreso GROUP BY($fecha_ingreso)

donde la parte de GROUP BY , donde se espera el NOMBRE de la columna y en su lugar estas dando un valor

y OJO la variable $fecha_ingreso debe tener la fecha en FORMATO de tiempo de MYSQL
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.me/pools/c/87BTML2gwr
  #3 (permalink)  
Antiguo 10/10/2019, 12:38
 
Fecha de Ingreso: febrero-2011
Mensajes: 62
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: suma de columnas

Gracias por la atención.

Si que podría ser el formato de las fechas. por que lo he corregido algo y he quitado el error Mysql.

También he quitado el valor de GROUP BY y le he dado el nombre de la columna.

Ahora lo tengo en el wile, la variable $total me da 0, Vamos que no realiza la suma o se queda con valor 0

Pongo el código para intentar corregirlo.

Código PHP:
            <?php                      
                
include ("ctrl/configuracion.php");
                
                if (! 
$link mysql_connect($server$db_user$db_pass)) {
                    echo 
"No pudo conectare con mysql"
                exit; 
                }
            
                if (! 
mysql_select_db ($database$link)) {
                    echo 
"No se PUDO selecionar la base de Datos" ;
                exit;
                }

                
$fecha_banco = ($_GET['fecha_ingreso']);
        
                
$obj_fecha1 DateTime::createFromFormat('d/m/Y'$fecha_banco);
                
$fecha_banco date_format($obj_fecha1"Y-m-d");

                
$sql "SELECT fecha_ingreso, SUM(totalefectivo) FROM $serviciosdiarios WHERE fecha_ingreso = '$fecha_banco' GROUP BY(fecha_ingreso)";
                
$resultado mysql_query $sql $link );
                
                if (! 
$resultado ) {
                       echo 
"Error de MySQL: "mysql_error () ;           
                exit;
                }                    
                
                while(
$row mysql_fetch_assoc($resultado)){
                     
$total += $row['totalefectivo'];
                     echo 
$total;
                }
                
mysql_free_result $resultado );         
            
?>
Gracias de nuevo
  #4 (permalink)  
Antiguo 11/10/2019, 02:39
Avatar de vb2005  
Fecha de Ingreso: noviembre-2005
Ubicación: Paderborn - Alemania
Mensajes: 550
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: suma de columnas

La consulta no tiene mucho sentido.

No sirve de nada hacer un where columna1=constante y luego hacer un group by columna1

El group by lo puedes quitar en este caso al igual que select fecha_ingreso, ya que también es una constante que ya tienes.
__________________
www.marcher.com.uy - Web personal
Nerd's Corner - Desarrollo de software a medida
  #5 (permalink)  
Antiguo 11/10/2019, 08:07
 
Fecha de Ingreso: abril-2006
Mensajes: 303
Antigüedad: 13 años, 5 meses
Puntos: 55
Respuesta: suma de columnas

como te comente, sigues teniendo errores por q no probaste en un ambiente controlado tu consulta mysql

mira tu codigo
Código MySQL:
Ver original
  1. SELECT fecha_ingreso, SUM(totalefectivo) FROM $serviciosdiarios WHERE fecha_ingreso = '$fecha_banco' GROUP BY(fecha_ingreso)

y luego mira este otro

Código MySQL:
Ver original
  1. SELECT fecha_ingreso, SUM(totalefectivo) FROM serviciosdiarios WHERE fecha_ingreso = '$fecha_banco' GROUP BY(fecha_ingreso)

notas la diferencia?? el simbolo DOLAR en php significa Variable eso creo que ya lo tienes claro, pero que hace una Variable en el nombre de una TABLA? almenos que tu tabla sea variable
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.me/pools/c/87BTML2gwr
  #6 (permalink)  
Antiguo 11/10/2019, 13:06
 
Fecha de Ingreso: febrero-2011
Mensajes: 62
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: suma de columnas

Gracias nuevo

La variable de la tabla es porque recoge el nombre de la tabla de otro archivo, de ahí el "include" al inicio del php. eso me funciona bien.

La conexión y las fechas también.

En la consulta me muestra bien la fecha del servicio, el total efectivo de cada día y la fecha de ingreso.

Esta en una tabla y quería que debajo en otra celda me saliese el total efectivo sumado de los días correspondientes.

No se como enviar una imagen del resultado.

He modificado el código en lo que me has dicho quedando asi:

Código PHP:
<?php                       
                
include ("ctrl/configuracion.php"); 
                 
                if (! 
$link mysql_connect($server$db_user$db_pass)) { 
                    echo 
"No pudo conectare con mysql";  
                exit;  
                } 
             
                if (! 
mysql_select_db ($database$link)) { 
                    echo 
"No se PUDO selecionar la base de Datos" 
                exit; 
                } 

                
$fecha_banco = ($_GET['fecha_ingreso']); 
         
                
$obj_fecha1 DateTime::createFromFormat('d/m/Y'$fecha_banco); 
                
$fecha_banco date_format($obj_fecha1"Y-m-d"); 

                
$sql "SELECT SUM(totalefectivo) FROM $serviciosdiarios WHERE fecha_ingreso = '$fecha_banco'";
                
$resultado mysql_query $sql $link ); 
                 
                if (! 
$resultado ) { 
                       echo 
"Error de MySQL: "mysql_error () ;            
                exit; 
                }                     
                 
                while(
$row mysql_fetch_assoc($resultado)){ 
                     
$total += $row['totalefectivo']; 
                     echo 
$total
                } 
                
mysql_free_result $resultado );          
            
?>
En lo que me has comentado de las consultas sql, el phpmyadmin que tengo es limitado solo para acceder a las bases de datos, es el que viene en un servidor nas que es el que uso.

Trabajo con dreanweaver, es el editor que tengo.

Si pudiese enviar la captura de pantalla de como queda, igual seria mas fácil, pero me pide la url, coloco la dirección donde se encuentra y no la reconoce.

Ejmp. http://c:\\Users\Pedro\Pictures\Titulo.JPEG

Gracias y perdón por ser tan torpe.
  #7 (permalink)  
Antiguo 12/10/2019, 10:35
 
Fecha de Ingreso: febrero-2011
Mensajes: 62
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: suma de columnas

Hola.

He corregido algo el código y lo he ordenado no se si bien, ya he visto como hacerlo en phpmyadmin, he copiado el código quitando la variable $sql y las dobles comillas y el resultado de la suma es correcto.

Pero sigo con errores,

$serviciosdiarios // Esta la he imprimido en el código con un echo y me da correcto

$fecha_banco // Esta la he imprimido igual y también me da correcto., el mismo de la db

Código PHP:

            <?php                      
                $fecha_banco 
= ($_GET['fecha_ingreso']);
        
                
$obj_fecha1 DateTime::createFromFormat('d/m/Y'$fecha_banco);
                
$fecha_banco date_format($obj_fecha1"Y-m-d");

                
                if (! 
$link mysql_connect($server$db_user$db_pass)) {
                    echo 
"No pudo conectare con mysql"
                exit; 
                }
            
                if (! 
mysql_select_db ($database$link)) {
                    echo 
"No se PUDO selecionar la base de Datos" ;
                exit;
                }

                
$sql "SELECT SUM(totalefectivo) FROM $serviciosdiarios WHERE fecha_ingreso = '$fecha_banco'";
                
$resultado mysql_query $sql $link );
                
                if (! 
$resultado ) {
                       echo 
"Error de MySQL: "mysql_error () ;           
                exit;
                }                    
                
                while(
$row mysql_fetch_assoc($resultado)){
                     
$total += $row['totalefectivo'];
                     echo 
$total;
                }
                
mysql_free_result $sql );
            
?>
La variable $resultado la he imprimido y me da como resultado "Resource id #9"
Y la variable $total me da como resultado "0"

No entiendo el error.

Gracias.
  #8 (permalink)  
Antiguo 12/10/2019, 19:27
 
Fecha de Ingreso: abril-2006
Mensajes: 303
Antigüedad: 13 años, 5 meses
Puntos: 55
Respuesta: suma de columnas

el error, es esta parte

Código PHP:
Ver original
  1. $total += $row['totalefectivo'];

como sabes que la suma que hiciste en el MYSQL lo que devuelve el SELECT tiene como nombre totalefectivo , la respuesta es que no lo tiene, en el PHPMYADMIN te mostraba el resultado, por que antes de devolverte el resultado, este mira que columna devolverte, y lo lista , previamente, eso para mostrarlo visualmente, ya que no le importa el Nombre, por que este solo usa Posiciones : 0,1,2,3,...etc

tu problema es que no sabes como obtener el Dato, o bien cambia mysql_fetch_assoc por mysql_fetch_array
o ponle un ALIAS(alias de MYSQL) a la SUMA que obtuviste

tu codigo correcto pero no puedes recuperar por ASOCIACION los datos
Código MySQL:
Ver original
  1. SELECT SUM(totalefectivo) FROM $serviciosdiarios WHERE fecha_ingreso = '$fecha_banco'
codigo correcto en el cual recuperas la informacion por Asociacion de nombres
Código MySQL:
Ver original
  1. SELECT SUM(totalefectivo) AS  totalefectivo FROM $serviciosdiarios WHERE fecha_ingreso = '$fecha_banco'
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.me/pools/c/87BTML2gwr
  #9 (permalink)  
Antiguo 13/10/2019, 01:45
 
Fecha de Ingreso: febrero-2011
Mensajes: 62
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: suma de columnas

Muchas gracias, tema resuelto.

Tienes razón me faltaba asignar el nombre a total efectivo.

Funciona.

Muchas gracias.



La zona horaria es GMT -6. Ahora son las 01:47.