Foros del Web » Programando para Internet » PHP »

Ayuda por favor

Estas en el tema de Ayuda por favor en el foro de PHP en Foros del Web. Buenas, espero que todos esten muy bien para que asi me puedan ayudar por aqui con este código, resulta que tengo una consulta de mi ...
  #1 (permalink)  
Antiguo 20/04/2010, 10:20
 
Fecha de Ingreso: marzo-2010
Mensajes: 152
Antigüedad: 14 años, 7 meses
Puntos: 1
Ayuda por favor

Buenas, espero que todos esten muy bien para que asi me puedan ayudar por aqui con este código, resulta que tengo una consulta de mi base de datos y quiero tener un total por mes, un total por año y un total general, el total por mes y el general lo hace pero todavia no consigo la forma de obtener el total por año, voy a mostrarle el codigo para ver que es lo que hago mal, porfitas necesito esta ayudaaaaaaa

Código PHP:
 while ($row=mysql_fetch_array($cSql)) {
echo 
"<tr>";
     echo 
"<td class=Estilo1>".$row["ANO"]."</td>";
     echo 
"<td class=Estilo1>".$mes."</td>";
     echo 
"<td class=Estilo1 align='right'>".$row["CUANTOS"]."</td>";
     echo 
"<td class=Estilo3 align='right'>".$row["DEBE"]."</td>";
     echo 
"<td class=Estilo4 align='right'>".$row["HABER"]."</td>";
     echo 
"<td class=Estilo4 align='right'>".$saldo."</td>";
         echo 
"</tr>";
//Aqui estoy mostrando los totales mensuales

// y con esto es que estoy tratando de tomar los totales anuales pero no me sale
for ( $i =$ano $i==$ano $i ++){
     echo 
"<tr>";
     echo 
"<td class=Estilo2>".$row["ANO"]."</td>";
     echo 
"<td class=Estilo2>Total</td>";
     echo 
"<td class=Estilo1 align='right'>".$cuantos."</td>";
     echo 
"<td class=Estilo3 align='right'>".$debe."</td>";
     echo 
"<td class=Estilo4 align='right'>".$haber."</td>";
     echo 
"<td class=Estilo4 align='right'>".$saldo."</td>";
     }
     echo 
"</tr>";
     }

Y entonces me hace los totales pero de una forma extraña ya que me muestra el año tantas veces este y lo que quieri en esta parte es algo asi

Año NºDocs Debe Haber Saldo
2009 Total 3 18.200,00 6.650,00 11.550,00

y no lo hace asi que porfa necesito su ayuda.....
  #2 (permalink)  
Antiguo 20/04/2010, 11:10
 
Fecha de Ingreso: abril-2010
Mensajes: 115
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Ayuda por favor

podrias poner tus consultas a sql para ver como estan? y darme una idea de como va la tabla
  #3 (permalink)  
Antiguo 20/04/2010, 11:55
 
Fecha de Ingreso: marzo-2010
Mensajes: 152
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Ayuda por favor

Ok, esta es la consulta y como la muestro

Código PHP:
$cSql=mysql_query("SELECT YEAR(FECHA) AS ANO, MONTH(FECHA) AS MES, COUNT(*) AS CUANTOS, SUM(IF(CXC= 1,NETO,0)) AS DEBE,
     SUM(IF(CXC=-1,NETO,0)) AS HABER FROM CLIENTE WHERE CODIGO='$codigo' GROUP BY YEAR(FECHA), MONTH(FECHA) ORDER BY FECHA"
);
    
     echo 
"<table>";
     echo 
"<tr>";
     echo 
"<td>A&ntilde;o</td>";
     echo 
"<td>Mes</td>";
     echo 
"<td>NºDocs</td>";
     echo 
"<td>Debe</td>";
     echo 
"<td>Haber</td>";
     echo 
"<td>Saldo</td>";
     echo 
"</tr>";

     while (
$row=mysql_fetch_array($cSql)) {
     
$ano=$row["ANO"];
     if (
$ano==$row["ANO"]) {
     
$debe+=$row["DEBE"];
     
$haber+=$row["HABER"];
     
$saldo=$debe-$haber;
     
$cuantos+=$row["CUANTOS"];
     }
     
$mes=$row["MES"];
     echo 
"<tr>";
     echo 
"<td>".$row["ANO"]."</td>";
     echo 
"<td>".$mes."</td>";
     echo 
"<td>".$row["CUANTOS"]."</td>";
     echo 
"<td>".$row["DEBE"]."</td>";
     echo 
"<td>".$row["HABER"]."</td>";
     echo 
"<td>".$saldo."</td>";
     echo 
"</tr>";
     
     for ( 
$i =$ano $i==$ano $i ++){
     echo 
"<tr>";
     echo 
"<td>".$row["ANO"]."</td>";
     echo 
"<td>Total</td>";
     echo 
"<td>".$cuantos."</td>";
     echo 
"<td>".$debe."</td>";
     echo 
"<td>".$haber."</td>";
     echo 
"<td>".$saldo."</td>";
     echo 
"</tr>";
     }
      }
     echo 
"</tr>";
     echo 
"</table>"
y el resultado que me esta dado es algo asi:


Estado de cuenta

Año Mes NºDocs Debe Haber Saldo
2009 Octubre 2 6.650,00 6.650,00 0,00
2009 Total 2 6.650,00 6.650,00 0,00
2009 Noviembre 1 11.550,00 0,00 11.550,00
2009 Total 3 18.200,00 6.650,00 11.550,00
2010 Enero 1 10.600,00 0,00 22.150,00
2010 Total 4 28.800,00 6.650,00 22.150,00
Total 4 28.800,00 6.650,00 22.150,00

Alli me repite y repite los años y se supone que luego de haber mostrado todos los meses del correspondiente año pasa a calcular es el total anual...
  #4 (permalink)  
Antiguo 20/04/2010, 12:08
 
Fecha de Ingreso: abril-2010
Mensajes: 115
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Ayuda por favor

deja veo si entendi, quieres ke salga algo asi como :

Año Mes NºDocs Debe Haber Saldo
2009 Octubre 2 6.650,00 6.650,00 0,00
Noviembre 1 11.550,00 0,00 11.550,00
Total 3 18.200,00 6.650,00 11.550,00
2010 Enero 1 10.600,00 0,00 22.150,00
Total 4 28.800,00 6.650,00 22.150,00
  #5 (permalink)  
Antiguo 20/04/2010, 12:24
 
Fecha de Ingreso: marzo-2010
Mensajes: 152
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Ayuda por favor

Sip, quiero algo asi, pero no me lo está dando, la primera parte que puede ser esta:


Año Mes NºDocs Debe Haber Saldo
2009 Octubre 2 6.650,00 6.650,00 0,00
2009 Noviembre 1 11.550,00 0,00 11.550,00


Me la da perfecto

La segunda parte, esta:


Año Mes NºDocs Debe Haber Saldo
2009 Total 3 18.200,00 6.650,00 11.550,00


No consigo como hacerla

y la tercera parte esta:

Año Mes NºDocs Debe Haber Saldo
Total 4 28.800,00 6.650,00 22.150,00



ya esta lista, solo me falta la segunda que la estoy intentando hacer asi:

Código PHP:
Ver original
  1. for ( $i =$ano ; $i==$ano ; $i ++){
  2.      echo "<tr>";
  3.      echo "<td>".$row["ANO"]."</td>";
  4.      echo "<td>Total</td>";
  5.      echo "<td>".$cuantos."</td>";
  6.      echo "<td>".$debe."</td>";
  7.      echo "<td>".$haber."</td>";
  8.      echo "<td>".$saldo."</td>";
  9.      echo "</tr>";
  10.      }
  11.       }
  12.      echo "</tr>";

y no me sale, me repite los años :(
  #6 (permalink)  
Antiguo 20/04/2010, 12:44
 
Fecha de Ingreso: abril-2010
Mensajes: 115
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Ayuda por favor

creo ke ya vi el error del for, pork no intentas ver el año minimo algo asi como
Código PHP:
Ver original
  1. $ano_min= mysql_query("select min(year) from cliente ");
  2. $ano_max=mysql_query("select max(year) from cliente ");
  3. for($i=$ano_min; $i<=$ano_max;$i++)
  #7 (permalink)  
Antiguo 20/04/2010, 12:57
 
Fecha de Ingreso: marzo-2010
Mensajes: 152
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Ayuda por favor

ok, lo voy a intentar y te aviso como me fue, ah y una cosita para eso tengo que hacer dos consultas??? me refiero para sacar el año minimo y el maximo, y bueno muchas gracias por ayudarme :)
  #8 (permalink)  
Antiguo 20/04/2010, 13:23
 
Fecha de Ingreso: abril-2010
Mensajes: 115
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Ayuda por favor

pues creo ke se puede hacer en una pero como no se mucho ke digamos mejor lo hago por separado
  #9 (permalink)  
Antiguo 20/04/2010, 13:55
 
Fecha de Ingreso: marzo-2010
Mensajes: 152
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Ayuda por favor

Hice la consulta asi:
Código PHP:
Ver original
  1. $cSql=mysql_query("SELECT YEAR(FECHA) AS ANO, MONTH(FECHA) AS MES, Min(YEAR(FECHA)) AS minimo, Max(YEAR(FECHA)) AS maximo,
  2.      COUNT(*) AS CUANTOS, SUM(IF(CXC= 1,NETO,0)) AS DEBE, SUM(IF(CXC=-1,NETO,0)) AS HABER FROM cliente   WHERE CODIGO='$codigo' GROUP BY YEAR(FECHA), MONTH(FECHA) ORDER BY FECHA");

y la muestro asi:

Código PHP:
Ver original
  1. while ($row=mysql_fetch_array($cSql)) {
  2.      $ano_min=$row["minimo"];
  3.      $ano_max=$row["maximo"];
  4.      $ano=$row["ANO"];
  5.      $mes=$row["MES"];
  6.      if ($ano==$ano) {
  7.      $debe+=$row["DEBE"];
  8.      $haber+=$row["HABER"];
  9.      $saldo=$debe-$haber;
  10.      $cuantos+=$row["CUANTOS"];
  11.      }
  12.      echo "<tr>";
  13.      echo "<td >".$row["ANO"]."</td>";
  14.      echo "<td >".$mes."</td>";
  15.      echo "<td >".$row["CUANTOS"]."</td>";
  16.      echo "<td>".$row["DEBE"]."</td>";
  17.      echo "<td>".$row["HABER"]."</td>";
  18.      echo "<td>".$saldo."</td>";
  19.      echo "</tr>";
  20.      for($i=$ano_min; $i<=$ano_max;$i++){
  21.              
  22.      echo "<tr>";
  23.      echo "<td>".$row["ANO"]."</td>";
  24.      echo "<td>Total</td>";
  25.      echo "<td>".$cuantos."</td>";
  26.      echo "<td>".$debe."</td>";
  27.      echo "<td>".$haber."</td>";
  28.      echo "<td>".$saldo."</td>";
  29.      echo "</tr>";
  30.      }
  31.      }
  32.      echo "</table>"."<br>"."<br>"."<br>";


e igual me sigue mostrando las cosas como no las quiero:(

me sale asi:

Año Mes NºDocs Debe Haber Saldo
2009 Octubre 2 6.650,00 6.650,00 0,00
2009 Total 2 6.650,00 6.650,00 0,00
2009 Noviembre 1 11.550,00 0,00 11.550,00
2009 Total 3 18.200,00 6.650,00 11.550,00
2010 Enero 1 10.600,00 0,00 22.150,00
2010 Total 4 28.800,00 6.650,00 22.150,00

Ves como se repiten los años :( hayy auxiliooo porfis¿Que estoy haciendo mal?
  #10 (permalink)  
Antiguo 20/04/2010, 14:54
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 20 años
Puntos: 6
Respuesta: Ayuda por favor

porque no usas un "group by AÑO" en la consulta SQL ?
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #11 (permalink)  
Antiguo 20/04/2010, 14:56
 
Fecha de Ingreso: marzo-2010
Mensajes: 152
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Ayuda por favor

Aqui lo estoy usando

GROUP BY YEAR(FECHA)
  #12 (permalink)  
Antiguo 20/04/2010, 15:05
 
Fecha de Ingreso: marzo-2010
Mensajes: 152
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Ayuda por favor

aldo1982 estaba confundida, obvio que si utilizo group by AÑO me hace eso, pero solo me mostraria los totales anuales, bueno ya tengo una idea muchas gracias, voy a intentar hacer varias consultas para ver si logro lo que quiero porque necesito el total mensual, anual y general en una sola tabla, y si encuentro alguna duda o error estare preguntando por aqui, gracias por contestar y echarme una manito =)
  #13 (permalink)  
Antiguo 21/04/2010, 09:16
 
Fecha de Ingreso: marzo-2010
Mensajes: 152
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Ayuda por favor

Hola, probe lo que me dijo aldo1982, pero asi me toma solo los totale spor año e intentado incluirlo en la otra consulta para que se genere asi:

Año Mes NºDocs Debe Haber Saldo
2009 Octubre 2 6.650,00 6.650,00 0,00
2009 Noviembre 1 11.550,00 0,00 11.550,00

2009 Total 3 18.200,00 6.650,00 11.550,00
2010 Enero 1 10.600,00 0,00 22.150,00
2010 Total 1 28.800,00 6.650,00 22.150,00


Esoo es lo que trato de hacer pero no lo consigo, intento he intento y nada de hecho tengo mis dos consultas pero asi solo tengo el total por años de un lado y el mensual d eotro y la idea es tenerlos a todos en una tabla como lo coloquè alli arriba, auxiliooooo si alguien sabe como puedo hacer
  #14 (permalink)  
Antiguo 21/04/2010, 09:44
 
Fecha de Ingreso: abril-2010
Mensajes: 115
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Ayuda por favor

intentaste poner el while dentro del for??
algo asi como...
Código PHP:
Ver original
  1. $ano_min=$row["minimo"];
  2.  $ano_max=$row["maximo"];
  3.  $ano=$row["ANO"];
  4.  $mes=$row["MES"];
  5.  
  6.   for($i=$ano_min; $i<=$ano_max;$i++){
  7. while ($row=mysql_fetch_array($cSql)) {
  8.    
  9.      if ($i<=$ano_max) {
  10.      $debe+=$row["DEBE"];
  11.      $haber+=$row["HABER"];
  12.      $saldo=$debe-$haber;
  13.      $cuantos+=$row["CUANTOS"];
  14.      }
  15.  
  16.      echo "<tr>";
  17.      //echo "<td >".$row["ANO"]."</td>";// el problema esta aki... creo
  18.      echo "<td >".$i."</td>";
  19.      if(){// hace falta un ciclo para ke muestre los datos del mismo año pero no se me ocurre nada  jeje
  20.      echo "<td >".$mes."</td>";
  21.      echo "<td >".$row["CUANTOS"]."</td>";
  22.      echo "<td>".$row["DEBE"]."</td>";
  23.      echo "<td>".$row["HABER"]."</td>";
  24.      echo "<td>".$saldo."</td>";
  25.      echo "</tr>";
  26.    }
  27.              
  28.      echo "<tr>";
  29.      echo "<td>".$row["ANO"]."</td>";/// aki poner algo semejante a lo de arriba
  30.      echo "<td>Total</td>";
  31.      echo "<td>".$cuantos."</td>";
  32.      echo "<td>".$debe."</td>";
  33.      echo "<td>".$haber."</td>";
  34.      echo "<td>".$saldo."</td>";
  35.      echo "</tr>";
  36.      }//llave del while
  37.      }
  38.      echo "</table>"."<br>"."<br>"."<br>";
hice unos pekeños cambios... no se si funcionen pero ahi van
  #15 (permalink)  
Antiguo 21/04/2010, 14:32
 
Fecha de Ingreso: marzo-2010
Mensajes: 152
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Ayuda por favor

xfletes muchas gracias por tu colaboración, paciencia y ganas pero no todavia no consigo hacer eso, hayyyyyyyyyyyy toy mal ya, porque es que cada vez lo cambio y me enredo mas pero gracias por todo, seguire intentado y si lo logro avisare..
  #16 (permalink)  
Antiguo 21/04/2010, 14:34
 
Fecha de Ingreso: abril-2010
Mensajes: 115
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Ayuda por favor

jaja, sas, ahi nos avisas jajaja y si no por mensaje privado o algo asi jaja suerte
  #17 (permalink)  
Antiguo 22/04/2010, 09:46
 
Fecha de Ingreso: marzo-2010
Mensajes: 152
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Ayuda por favor

Holaaaaaaaaaaaaaaaaaaaa, de nuevo con esto, les cuento que lo arreglé, pero a medias , hice una consulta en sql y me genera exactamente lo que quiero :), ahora el problema esta que cuando leo esa consulta en php me genera error y no se cual es, hayyyyy ya tengo en mi consulta sql lo que quiero ahora ayudenme a resolver el error que me da en php porfaaaa, gracias :)

Les voy a dejar la consulta y el código para ver que es lo que hago mal


Código PHP:
Ver original
  1. cSql=mysql_query("SELECT YEAR(FECHA) AS ANO, MONTH(FECHA) AS MES, COUNT(*) AS CUANTOS, SUM(IF(CXC= 1,NETO,0)) AS DEBE, SUM(IF(CXC=-1,NETO,0)) AS HABER FROM CLIENTE WHERE CODIGO='$codigo' GROUP BY YEAR(FECHA),MONTH(FECHA)
  2.      UNION all SELECT YEAR(FECHA) AS ANO, MONTH(FECHA) AS MES, COUNT(*) AS CUANTOS, SUM(IF(CXC= 1,NETO,0)) AS DEBE,
  3.      SUM(IF(CXC=-1,NETO,0)) AS HABER FROM CLIENTE WHERE CODIGO='$codigo' GROUP BY YEAR(FECHA) ORDER BY ANO, MES");

Me dice que el error esta en la consulta pero yo la leo desde mi manejador de base de datos y me hace lo que quiero, y asi la muestro, alguien me ayuda con el error por faaaaaaaaaaaa

Código PHP:
Ver original
  1. echo "<table width=150 border=1 align='center' bordercolor='#000000'>";
  2.      echo "<tr>";
  3.      echo "<td>A&ntilde;o</td>";
  4.      echo "<td>Mes</td>";
  5.      echo "<td>Nº Docs</td>";
  6.      echo "<td>Debe</td>";
  7.      echo "<td>Haber</td>";
  8.      echo "<td>Saldo</td>";
  9.      echo "</tr>";
  10.      
  11.      while ($row=mysql_fetch_array($cSql)) {
  12.    
  13.      echo "<tr>";
  14.      echo "<td>".$row["ANO"]."</td>";
  15.      echo "<td>".$row["MES"]."</td>";
  16.      echo "<td>".$row["CUANTOS"]."</td>";
  17.      echo "<td>".$row["DEBE"]."</td>";
  18.      echo "<td>".$row["HABER"]."</td>";
  19.      echo "<td>".$saldo."</td>";
  20.      echo "</tr>";
  21.      }
  22.      echo "</table>"."<br>";
  #18 (permalink)  
Antiguo 22/04/2010, 11:45
 
Fecha de Ingreso: marzo-2010
Mensajes: 152
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Ayuda por favor

listooooooooooooooooo, si alguien alguna vez necesita hacer algo asi puede utilizar lo que tengo alli, el error era de cansancio jeje, simplemnte no le coloque el signo"$" a cSql y por eso estaba tan trancadaaaaaaaaaaaaaaaa, muchas gracias a todos...
  #19 (permalink)  
Antiguo 22/04/2010, 16:03
 
Fecha de Ingreso: abril-2010
Mensajes: 115
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Ayuda por favor

:apla uso:: aplauso:

Etiquetas: favor
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 17:36.