Foros del Web » Programando para Internet » PHP »

No muestra resultado (usuarios morosos), chequeen el código

Estas en el tema de No muestra resultado (usuarios morosos), chequeen el código en el foro de PHP en Foros del Web. Hola, bueno mi problema es que intento mostrar mediante una tabla html todos los usuarios que deben dinero en su cuenta (morosos) .... resulta que ...
  #1 (permalink)  
Antiguo 29/08/2010, 23:00
Avatar de ras_chalo  
Fecha de Ingreso: junio-2010
Mensajes: 369
Antigüedad: 13 años, 10 meses
Puntos: 6
Pregunta No muestra resultado (usuarios morosos), chequeen el código

Hola, bueno mi problema es que intento mostrar mediante una tabla html todos los usuarios que deben dinero en su cuenta (morosos) ....

resulta que el calculo es simple= ultima fecha de ingreso < fecha que caduca su cuenta ....

bueno en la base de datos me encargue que hubieran 2 usuarios "morosos"... los que se debieran mostrar en la tabla...

y bueno...mi problema es que no se muestran!

les dejo el código, que por cierto... creo que el problema se origina al realizar la consulta a la tabla "cuenta" ... en donde el usuario tendrá registrado la "fecha_ultimo_pago" , "caduca" (fecha que vence su cuenta, por lo que debe pagar de nuevo el servicio), "rut_alumno" (rut_alumno viene siendo el ID_alumno).

la tabla "libro" tiene registrada la hora de entrada y salida, también con su fecha de ingreso...



Código PHP:
<?PHP

//SELECIONA ULTIMA ASISTENCIA DE ALUMNO EN EL LIBRO
            
$ultima_asistencia"SELECT * FROM libro  ORDER BY fecha_ingreso DESC  "  ;
            
$respuesta2mysql_query($ultima_asistencia$conexion) or die (mysql_error());
            
$array2=mysql_fetch_array($respuesta2);


            
//SELECCIONO "CADUCA" DE LA TABLA CUENTA

            
$respuestamysql_query('SELECT * FROM cuenta'$conexion) or die     (mysql_error());
            
$array=mysql_fetch_array($respuesta);
            

//VEO SI LOS QUE ESTAN MOROSOS

                  
if(strtotime($array["caduca"]) < strtotime($array2["fecha_ingreso"]))
                  {
                       echo 
"<table border= 1>";
                        echo 
"<tr>";
                               echo 
"<td> <b> Rut </b>      </td>";
                        echo 
"</tr>";

                        echo 
"<tr>";
                               echo 
"<td>".$array["rut_alumno"]."</td>";
                        echo 
"</tr>";

                       echo 
"</table>";
                  }
                  else
                      {
                      echo 
"No se encuetra ningun alumno moroso";
                      }

?>
bueno y no me lanza error ni nada..solo me imprime el ELSE y no el IF con los 2 usuarios que se encuentran "morosos"...

Bueno gracias por el tiempo!

Espero sus respuestas!!, de ante mano muchas gracias
  #2 (permalink)  
Antiguo 30/08/2010, 02:31
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: No muestra resultado (usuarios morosos), chequeen el código

Creo que el problema lo puedes tener al hacer el mysql_fetch_array();
Para evitar problemas es mejor que siempre lo utilizes en un bucle, para que asigne valores dinamicamente. Por si no me entiendes te dejo este link:
http://php.net/manual/es/function.mysql-fetch-array.php
  #3 (permalink)  
Antiguo 30/08/2010, 08:59
Avatar de ras_chalo  
Fecha de Ingreso: junio-2010
Mensajes: 369
Antigüedad: 13 años, 10 meses
Puntos: 6
Respuesta: No muestra resultado (usuarios morosos), chequeen el código

Cita:
Iniciado por Vallu Ver Mensaje
Creo que el problema lo puedes tener al hacer el mysql_fetch_array();
Para evitar problemas es mejor que siempre lo utilizes en un bucle, para que asigne valores dinamicamente. Por si no me entiendes te dejo este link:
http://php.net/manual/es/function.mysql-fetch-array.php
Ya, lo hice como tu dijiste pero tampoco me funciona...
incluso, me imprime por cada uno q no esta moroso...y yo quiero que si NINGUN alumno se encuentra moroso, simplemente muestre el mensaje del else....

te dejo el codigo para que lo veas:

Código PHP:
//SELECIONA ULTIMA ASISTENCIA DE ALUMNO EN EL LIBRO
            
$ultima_asistencia"SELECT * FROM libro  ORDER BY fecha_ingreso DESC  "  ;
            
$respuesta2mysql_query($ultima_asistencia$conexion) or die (mysql_error());


            
//REVISA SI ESTA MOROSO
            
$respuestamysql_query("SELECT * FROM cuenta ORDER BY fecha_ultimo_pago DESC"$conexion) or die (mysql_error());
     
  
   
                       echo 
"<table border= 1>";
                        echo 
"<tr>";
                               echo 
"<td> <b> Rut </b>      </td>";
                        echo 
"</tr>";

 while(
$array2=mysql_fetch_array($respuesta2 ) && $array=mysql_fetch_array($respuesta) )

      {
        
            if(
strtotime($array["caduca"]) < strtotime($array2["fecha_ingreso"]))
                     {

                        echo 
"<tr>";
                               echo 
"<td>".$array["rut_alumno"]."</td>";
                        echo 
"</tr>";

                      
                     }
                  else
                      {
                      
                      
                        echo 
"<tr>";
                               echo 
"<td> No se encuetra ningun alumno moroso</td>";
                        echo 
"</tr>";

                     
                      
                      }         
        }
  echo 
"</table>"
  #4 (permalink)  
Antiguo 31/08/2010, 02:39
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: No muestra resultado (usuarios morosos), chequeen el código

Prueba a hacer los whiles de esta forma y no juntos:
Código PHP:
while($array2=mysql_fetch_array($respuesta2)){
while(
$array=mysql_fetch_array($respuesta) ){

         ...........

}

  #5 (permalink)  
Antiguo 31/08/2010, 09:35
Avatar de ras_chalo  
Fecha de Ingreso: junio-2010
Mensajes: 369
Antigüedad: 13 años, 10 meses
Puntos: 6
Pregunta Respuesta: No muestra resultado (usuarios morosos), chequeen el código

Cita:
Iniciado por Vallu Ver Mensaje
Prueba a hacer los whiles de esta forma y no juntos:
Código PHP:
while($array2=mysql_fetch_array($respuesta2)){
while(
$array=mysql_fetch_array($respuesta) ){

         ...........

}

Hola!, claro, hice lo que mencionas..y me deja un poco mas cerca de lo que pretendo..

Mira..me manda los Morosos (los que deben dinero) que tiene la tabla "cuenta"... el problema es que toma todas las fechas que los alumnos deben..

mmm..me explico... a continuacion la tabla "cuenta"

f_u_p = fecha ultimo_pago

id_alumno | monto | f_u_p | caduca
172526365 | 18000 | 2010-03-10 | 2010-04-10
184532534 | 20000 | 2010-08-30 | 2010-09-30
170028351 | 25000 | 2010-07-29 | 2010-08-29
170028351 | 20000 | 2010-08-30 | 2010-09-30

la que dejo marcada con negrita es el ejemplo de lo que me pasa....

si se fijan, en el codigo realiza esto para cada atributo de la tabla, lo que tambien toma la fecha anterior de pago del usuario....siendo que este, ya pago y se encuetra al dia..lo lanza como moroso porque en el registro historico obviamente hay una fecha anterior de pago... y yo comparo con la fecha de "ultimo_ingreso" que se encuetra en otra tabla...

...pienso que quizas lo mas simple es hacer un UPDATE a estos atributos... osea..cuando el alumno pague su mensualidad, simplemente su cuenta se actualice y no joda mas...
pero nose...quizas desde un principio esa es la solucion..ud. que opinan?

ah!..se me olvidaba.. adjunto la ultima actualizacion del codigo...

Código PHP:
while($array2=mysql_fetch_array($respuesta2 ))
                {
         while(
$array=mysql_fetch_array($respuesta) )

      {
        
            if(
strtotime($array["caduca"]) < strtotime($array2["fecha_ingreso"]))
                     {

                        echo 
"<tr>";
                               echo 
"<td>".$array["rut_alumno"]."</td>";
                        echo 
"</tr>";

                      
                     }
                  else
                      {
                      
                      
                        echo 
"<tr>";
                               echo 
"<td> No se encuetra ningun alumno moroso</td>";
                        echo 
"</tr>";

                     
                      
                      }         
        }
                } 
ESPERO SUS RESPUESTAS Y GRACIAS POR LA AYUDA!!!

Última edición por ras_chalo; 31/08/2010 a las 19:48
  #6 (permalink)  
Antiguo 31/08/2010, 20:23
 
Fecha de Ingreso: agosto-2010
Ubicación: santiago, CHILE
Mensajes: 564
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: No muestra resultado (usuarios morosos), chequeen el código

//...calmao voi a intentar de solucionarte el problema...toi haciendo las tablas
  #7 (permalink)  
Antiguo 31/08/2010, 20:36
Avatar de ras_chalo  
Fecha de Ingreso: junio-2010
Mensajes: 369
Antigüedad: 13 años, 10 meses
Puntos: 6
De acuerdo Respuesta: No muestra resultado (usuarios morosos), chequeen el código

Cita:
Iniciado por __SDP__ Ver Mensaje
//...calmao voi a intentar de solucionarte el problema...toi haciendo las tablas
no te creo !!!

fabuloso compadre!!
el solo hecho que intentes ayudarme ya es mucho..muchas gracias estare atento a tu respuesta!

pd: yo tambien soy chileno =D
  #8 (permalink)  
Antiguo 31/08/2010, 21:02
 
Fecha de Ingreso: agosto-2010
Ubicación: santiago, CHILE
Mensajes: 564
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: No muestra resultado (usuarios morosos), chequeen el código

/* somos lo mas grande...jajaja pero pasando a otro tema....

digamos q tienes las dos tablas con fecha en una la ingreso y en la otra la q caduca esto es cuando pide un libro...entonces en esa tabla debe tener una referencia del tipo q pidio el libro...y con esa sacai todos los datos de cada persona...en este caso solo saco el nombre en modo de ejemplo...asi....*/


Código SQL:
Ver original
  1. SELECT f1.nombre_fecha1 FROM fecha1 f1 INNER JOIN fecha2 f2
  2. ON f1.fecha1_id = f2.fecha1_id
  3. WHERE f1.fecha1 > f2.fecha2

/*...y si quieres ver uno solo cambiale esta parte where f1.fecha1 > f2.fecha2 and f1.fecha1 = $id_persona

PD: El campo fecha1 y fecha2 debe ser DATE y se guarda ejemplo 2010-05-22 con la funcion date(): sacas la fecha...*/

Última edición por __SDP__; 31/08/2010 a las 21:07
  #9 (permalink)  
Antiguo 31/08/2010, 21:28
Avatar de ras_chalo  
Fecha de Ingreso: junio-2010
Mensajes: 369
Antigüedad: 13 años, 10 meses
Puntos: 6
De acuerdo Respuesta: No muestra resultado (usuarios morosos), chequeen el código

Cita:
Iniciado por __SDP__ Ver Mensaje
/* somos lo mas grande...jajaja pero pasando a otro tema....

digamos q tienes las dos tablas con fecha en una la ingreso y en la otra la q caduca esto es cuando pide un libro...entonces en esa tabla debe tener una referencia del tipo q pidio el libro...y con esa sacai todos los datos de cada persona...en este caso solo saco el nombre en modo de ejemplo...asi....*/


Código SQL:
Ver original
  1. SELECT f1.nombre_fecha1 FROM fecha1 f1 INNER JOIN fecha2 f2
  2. ON f1.fecha1_id = f2.fecha1_id
  3. WHERE f1.fecha1 > f2.fecha2

/*...y si quieres ver uno solo cambiale esta parte where f1.fecha1 > f2.fecha2 and f1.fecha1 = $id_persona

PD: El campo fecha1 y fecha2 debe ser DATE y se guarda ejemplo 2010-05-22 con la funcion date(): sacas la fecha...*/
buena!
voy a probar ahora mismo y te cuento que tal!
saludos y muchas gracias!
  #10 (permalink)  
Antiguo 01/09/2010, 23:04
Avatar de ras_chalo  
Fecha de Ingreso: junio-2010
Mensajes: 369
Antigüedad: 13 años, 10 meses
Puntos: 6
Respuesta: No muestra resultado (usuarios morosos), chequeen el código

no me sirvió...q lastima..alguna otra solución?
  #11 (permalink)  
Antiguo 02/09/2010, 04:29
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: No muestra resultado (usuarios morosos), chequeen el código

En tu Base de Datos si ejecutas esa consulta que te devuelve? te devuelve los morosos que tienes o te devuelve otra cosa?
  #12 (permalink)  
Antiguo 02/09/2010, 04:36
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: No muestra resultado (usuarios morosos), chequeen el código

Mira tambien esta pagina para saber mas sobre consultas INNER JOIN:
http://www.desarrolloweb.com/articulos/2355.php

Creo que debera haver algun problema con la consulta, pero ahora mismo no veo que.

Etiquetas: muestra, usuarios, resultados
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 23:20.