Foros del Web » Programando para Internet » PHP »

Atorado sin poder salir

Estas en el tema de Atorado sin poder salir en el foro de PHP en Foros del Web. Ya me estoy acostumbrando a pedir auxilio en vez de dar ayuda como venía haciéndolo desde el principio, es la tercera vez que lo hago ...
  #1 (permalink)  
Antiguo 03/06/2009, 17:22
Avatar de jenusys  
Fecha de Ingreso: diciembre-2008
Ubicación: Ahí mismo.
Mensajes: 216
Antigüedad: 15 años, 4 meses
Puntos: 11
Atorado sin poder salir

Ya me estoy acostumbrando a pedir auxilio en vez de dar ayuda como venía haciéndolo desde el principio, es la tercera vez que lo hago y se me está volviendo hábito.

El caso es el siguiente:

Tengo dos bucles en donde recupero datos de dos tablas MySQL la una con números de factura y la otra con datos de clientes. La condición es que me traiga datos por rango de fecha con una zona de ventas. El problema subyace en el deseo... Como son varias facturas por un mismo cliente deseo que me agrupe dichas facturas por cliente pero poniendo los datos del cliente solo al final del grupo de facturas por fecha.

Para mejor ilustración:

Código php:
Ver original
  1. <?php
  2.  
  3. //Abrimos la tabla
  4. echo"
  5. <table class=interna width=300 border=1>";
  6.  
  7. //Consultamos para traernos los datos de facturas por zona, nit o cc y fechas rango
  8. $resultjj=mysql_query("SELECT * FROM facturas WHERE zonavend='{$_POST['zona']}'
  9. AND (fechagen BETWEEN '{$_POST['fecha1']}' AND '{$_POST['fecha2']}')
  10. ORDER BY fechagen desc LIMIT 1000", $conexion);
  11.  
  12. echo"
  13. <tr>
  14. <td><b>NIT o CC</b></td>
  15. <td><b>FACTURA No.</b></td>
  16. <td><b>FECHA</b></td>
  17. <td><b>ESTADO</b></td>
  18. <td><b>TIPOPAGO</b></td>
  19. </tr>";
  20.  
  21. while($rowjj=mysql_fetch_row($resultjj)){
  22.  
  23. echo"
  24. <tr>
  25. <td>$rowjj[2]</td>
  26. <td>$rowjj[0]</td>
  27. <td>$rowjj[7]</td>
  28. <td>$rowjj[9]</td>
  29. <td>$rowjj[10]</td>
  30. </tr>";
  31.  
  32. //Mostramos los resultados columna por columna y ordenamos por NIT CC
  33. $result=mysql_query("SELECT * FROM clientes WHERE ccnit ='$rowjj[2]'
  34. ORDER BY ccnit desc LIMIT 1000", $conexion);
  35.  
  36. while($row=mysql_fetch_row($result)){
  37.  
  38. echo"
  39. <tr>
  40. <td><b>NIT o CC</b></td>
  41. <td><b>NOMBRE</b></td>
  42. <td><b>BARRIO</b></td>
  43. <td><b>DIRECCION</b></td>
  44. <td><b>TELEFONO</b></td>
  45. </tr>
  46. <tr>
  47. <td>$row[1]</td>
  48. <td>$row[2]</td>
  49. <td>$row[6]</td>
  50. <td>$row[0]</td>
  51. <td>$row[7]</td>
  52. </tr>";
  53.  
  54. }
  55. }
  56.  
  57. //Cerramos la tabla
  58. echo"</table>";
  59.  
  60. ?>

Última edición por jenusys; 03/06/2009 a las 18:51 Razón: Gracias jam1138. Anexo un pequeño detalle.
  #2 (permalink)  
Antiguo 03/06/2009, 17:27
 
Fecha de Ingreso: febrero-2009
Ubicación: cancun!
Mensajes: 898
Antigüedad: 15 años, 2 meses
Puntos: 15
Respuesta: Atorado sin poder salir

auch te juro q intente leer tu codigo pero mis ojos no pudieron con el color y eso q uso lentes!!!
plis cambiale el color
no kiero sonar exigente pero en serio no pude leer jaja
$resultjj=mysql_query("SELECT * FROM facturas WHERE zonavend='{$_POST['zona']}'
AND (fechagen BETWEEN '{$_POST['fecha1']}' AND '{$_POST['fecha2']}')
ORDER BY fechagen desc LIMIT 1000", $conexion);

haz un select distint para q traiga los id de los clientes
y haces el select pero copn el id de los clientes q desees
es una idea
saludines!!
tu pagas el oculista jaja
:P
__________________
WHERE IS MY BLUE SUNNY SKY??
pd: todos los karmas son bienvenidos :D
  #3 (permalink)  
Antiguo 03/06/2009, 17:36
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: Atorado sin poder salir

Cita:
Iniciado por harvestmoon Ver Mensaje
auch te juro q intente leer tu codigo pero mis ojos no pudieron con el color y eso q uso lentes!!!
Comparto la apreciación. No sé cómo encontraste el modo de poner color y no el de colocar código. Edito tu tema para corregirlo.

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #4 (permalink)  
Antiguo 03/06/2009, 17:53
Avatar de By_George  
Fecha de Ingreso: abril-2009
Ubicación: localhost
Mensajes: 629
Antigüedad: 15 años
Puntos: 19
Respuesta: Atorado sin poder salir

si usas un GROUP BY para el cliente en tu consulta
__________________
La estadística es una ciencia que demuestra que si mi vecino tiene dos coches y yo ninguno, los dos tenemos uno.
  #5 (permalink)  
Antiguo 03/06/2009, 18:30
Avatar de jenusys  
Fecha de Ingreso: diciembre-2008
Ubicación: Ahí mismo.
Mensajes: 216
Antigüedad: 15 años, 4 meses
Puntos: 11
Respuesta: Atorado sin poder salir

OK ya lo resolví y fué cambiando la posición de las consultas poniendo primero la que pertenece a los datos del cliente. De vez en cuando es bueno pedir ayuda pero aún mejor es darla así que mejor seguiré dándola.

<?php

//Abrimos la tabla
echo"
<table class=interna width=300 border=1>";

//Mostramos los resultados columna por columna y ordenamos por NIT CC
$result=mysql_query("SELECT * FROM clientes WHERE ccnit ='$rowjj[2]'
ORDER BY ccnit desc LIMIT 1000", $conexion);

while($row=mysql_fetch_row($result)){

$a=1;

//Consultamos para traernos los datos de facturas por zona, nit o cc y fechas rango
$resultjj=mysql_query("SELECT * FROM facturas WHERE zonavend='{$_POST['zona']}'
AND (fechagen BETWEEN '{$_POST['fecha1']}' AND '{$_POST['fecha2']}')
ORDER BY fechagen desc LIMIT 1000", $conexion);

while($rowjj=mysql_fetch_row($resultjj)){

if ($a=="1") {

echo"
<tr>
<td><b>NIT o CC</b></td>
<td><b>NOMBRE</b></td>
<td><b>BARRIO</b></td>
<td><b>DIRECCION</b></td>
<td><b>TELEFONO</b></td>
</tr>
<tr>
<td>$row[1]</td>
<td>$row[2]</td>
<td>$row[6]</td>
<td>$row[0]</td>
<td>$row[7]</td>
</tr>";

}

echo"
<tr>
<td><b>NIT o CC</b></td>
<td><b>FACTURA No.</b></td>
<td><b>FECHA</b></td>
<td><b>ESTADO</b></td>
<td><b>TIPOPAGO</b></td>
</tr>";

echo"
<tr>
<td>$rowjj[2]</td>
<td>$rowjj[0]</td>
<td>$rowjj[7]</td>
<td>$rowjj[9]</td>
<td>$rowjj[10]</td>
</tr>";

$a++;

}
}

//Cerramos la tabla
echo"</table>";

?>

Última edición por jenusys; 28/01/2010 a las 09:20 Razón: ¡ Ya lo resolví !
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 14:10.