Foros del Web » Programando para Internet » PHP »

Consulta erronea

Estas en el tema de Consulta erronea en el foro de PHP en Foros del Web. Gente estoy haciendo esta consulta a la base y solo me muestra el primer resultado , luego el resto de las coincidencias no las toma ...
  #1 (permalink)  
Antiguo 13/08/2010, 17:35
 
Fecha de Ingreso: abril-2010
Mensajes: 24
Antigüedad: 14 años
Puntos: 0
Consulta erronea

Gente estoy haciendo esta consulta a la base y solo me muestra el primer resultado , luego el resto de las coincidencias no las toma , alquien podria ayudarme y decirme a q se debe , muchas graciasssss
<td><!--codigo-->

<?php
$conn = db_connect();
$get_newest_user = $conn->query("select * from users");
$new_num_user = $get_newest_user->num_rows;

$get_newest_img = $conn->query("select * from images");
$new_num_img = $get_newest_img->num_rows;

for($a=0; $new_num_user>$a ; $a++){

$new_user = $get_newest_user->fetch_assoc();

for($b=0; $new_num_img>$b ; $b++){
$new_img = $get_newest_img->fetch_assoc();

if($new_user['user_id'] == $new_img['user_id'])
{

?>

<li>
<img
src="<?php echo $new_user['username'].'/images/'.$new_img['image']; ?>" alt="" width="76" height="151" />
</li>


<?php
}


}

}

?>

<!--///codigo--> </td>
  #2 (permalink)  
Antiguo 13/08/2010, 18:05
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Consulta erronea

skanabis no estoy muy acostumbrado a programar en PHP usando Programación Orientada a Objetos, pero tal vez pueda ayudar.
num_rows es una variable o función?, porque si es función van los ()
Decíme si te sirve.



Federico
  #3 (permalink)  
Antiguo 13/08/2010, 18:09
 
Fecha de Ingreso: abril-2010
Mensajes: 24
Antigüedad: 14 años
Puntos: 0
Respuesta: Consulta erronea

Cita:
Iniciado por fede1976 Ver Mensaje
skanabis no estoy muy acostumbrado a programar en PHP usando Programación Orientada a Objetos, pero tal vez pueda ayudar.
num_rows es una variable o función?, porque si es función van los ()
Decíme si te sirve.



Federico
Gracias pero esta correcto lo acabo de consultar en php.net
  #4 (permalink)  
Antiguo 13/08/2010, 18:29
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Consulta erronea

skanabis está bien. Voy a tratar de ayudar. Estoy tratando de entender el código, no entiendo muy bien porque metés un FOR dentro de otro. Por otra parte, hiciste un echo $new_num_user y echo $new_num_img para saber si estas variables quedan en cero? Si es así, se explica que el for haga una sóla vuelta.
Decíme si te sirve.


Federico
  #5 (permalink)  
Antiguo 13/08/2010, 18:36
 
Fecha de Ingreso: abril-2010
Mensajes: 24
Antigüedad: 14 años
Puntos: 0
Respuesta: Consulta erronea

Cita:
Iniciado por fede1976 Ver Mensaje
skanabis está bien. Voy a tratar de ayudar. Estoy tratando de entender el código, no entiendo muy bien porque metés un FOR dentro de otro. Por otra parte, hiciste un echo $new_num_user y echo $new_num_img para saber si estas variables quedan en cero? Si es así, se explica que el for haga una sóla vuelta.
Decíme si te sirve.


Federico
ya te explico , tengo una tabla con muchos usuarios (para esta tabla es el primer for)para que tome un usuario y luego cuando entra al otro for , recorra la otra tabla comparando a este usuario con todas las imagenes de la otra tabla,
osea el primer for toma un usuario y el segundo recorre los datos comparandolo con el primer usuario , jeje asi es no se capas te enrede.y bueno el problema esta que solo me muestra la primera coincidensia. =( y ya no recorre mas el bucle no se q pasa!!! porque estuve imprimiendo y si me muestra los ids cuando los imprimo ..
  #6 (permalink)  
Antiguo 13/08/2010, 18:40
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Consulta erronea

skanabis ya entendí bien lo que hace el programa, estuve analizándolo mejor. Pero fijáte lo que te digo en relación con:
$new_num_user y
$new_num_img

Sacálas por pantalla con un echo, si alguna vale cero, entonces nos acercamos más al problema.
Por otra parte, aunque creo que no lo pusiste porque se sobreentiende en el ejemplo, recordá que a db_connect() hay que pasarle tres parámetros.


Federico
  #7 (permalink)  
Antiguo 13/08/2010, 18:45
 
Fecha de Ingreso: abril-2010
Mensajes: 24
Antigüedad: 14 años
Puntos: 0
Respuesta: Consulta erronea

Cita:
Iniciado por fede1976 Ver Mensaje
skanabis ya entendí bien lo que hace el programa, estuve analizándolo mejor. Pero fijáte lo que te digo en relación con:
$new_num_user y
$new_num_img

Sacálas por pantalla con un echo, si alguna vale cero, entonces nos acercamos más al problema.
Por otra parte, aunque creo que no lo pusiste porque se sobreentiende en el ejemplo, recordá que a db_connect() hay que pasarle tres parámetros.


Federico
Gracias por tu tiempo , lo voy a imprimir pero igual tmb modifique eso y puse un numero directo para ver si pasaba algo , pero no es ese el problema y lo que me dices de la base de datos es mysqli , la conexion esta en otro archivo lo toma como un objeto . no se q podra ser =(
  #8 (permalink)  
Antiguo 13/08/2010, 18:48
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Consulta erronea

Otra cosa, aunque no creo que haga diferencia, pero siempre he visto que se accede al elemento de una matriz usando comillas dobles y no simples:

$new_user["user_id"]
  #9 (permalink)  
Antiguo 13/08/2010, 18:49
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Consulta erronea

skanabis te muestra bien UNA fila por cada usuario o UNA fila por todo concepto?
  #10 (permalink)  
Antiguo 13/08/2010, 19:47
 
Fecha de Ingreso: abril-2010
Mensajes: 24
Antigüedad: 14 años
Puntos: 0
Respuesta: Consulta erronea

Cita:
Iniciado por fede1976 Ver Mensaje
skanabis te muestra bien UNA fila por cada usuario o UNA fila por todo concepto?
Lo que esta pasando es que el segundo for solo recorre una vez
  #11 (permalink)  
Antiguo 13/08/2010, 20:01
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Consulta erronea

skanabis digamos que si tenes tres usuarios y a cada uno le corresponde tres imágenes, tu lista debería tener 9 elementos, pero te está mostrando 3? O te muestra una lista con UN sólo elemento por todo concepto?
  #12 (permalink)  
Antiguo 13/08/2010, 20:03
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Consulta erronea

No revisé bien este código, pero porque no probás concatener las cadenas dentro del for más interno de esta manera:

$cadena = $cadena. '<li><img src="<'.$new_user['username'].'/images/'.$new_img['image'].'" alt="" width="76" height="151" /></li>'

Y al final del código haces:

echo $cadena;
  #13 (permalink)  
Antiguo 13/08/2010, 20:05
 
Fecha de Ingreso: abril-2010
Mensajes: 24
Antigüedad: 14 años
Puntos: 0
Respuesta: Consulta erronea

Cita:
Iniciado por fede1976 Ver Mensaje
No revisé bien este código, pero porque no probás concatener las cadenas dentro del for más interno de esta manera:

$cadena = $cadena. '<li><img src="<'.$new_user['username'].'/images/'.$new_img['image'].'" alt="" width="76" height="151" /></li>'

Y al final del código haces:

echo $cadena;
http://www.highthreads.com
mira en esta pagina estoy q genero el codigo , solo me funciona el primer for , pero el segundo solo entra una vez...no se porque :S
  #14 (permalink)  
Antiguo 13/08/2010, 20:08
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Consulta erronea

Vi la página, te tira dos filas iguales de fotos, eso me decís?
  #15 (permalink)  
Antiguo 13/08/2010, 20:10
 
Fecha de Ingreso: abril-2010
Mensajes: 24
Antigüedad: 14 años
Puntos: 0
Respuesta: Consulta erronea

Cita:
Iniciado por fede1976 Ver Mensaje
Vi la página, te tira dos filas iguales de fotos, eso me decís?
no vistes los numeros abajo?? bueno los numeros de la izquierda es del primer for , los numeros de la derecha del segundo for , pero se supone que deberia recorrer el segundo for hasta que el primer for se termine :S
  #16 (permalink)  
Antiguo 13/08/2010, 20:23
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Consulta erronea

skanabis:

lo único que se me ocurre es que el navegador usando el atributo alt de la lista, tal vez, porque no encuentra la foto. Me fijé que en medio de todos esos números, aparece alguna imagen, así que fijáte si las rutas que estás considerando a las imágenes son correctas.
  #17 (permalink)  
Antiguo 13/08/2010, 20:27
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Consulta erronea

si querés poné alguna palabra dentro de ALT, por ejemplo ALT ="prueba" y fijáte si aparece en luegar de toda esa lista de números, si es así, quiere decir que hay un problema con las rutas. Yo tiendo a pensar que los bucles están funcionando.
  #18 (permalink)  
Antiguo 13/08/2010, 20:30
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Consulta erronea

Hola,

Posiblemente,

La función fetch_assoc() lleva un apuntador, es decir, lee el primer registro, la siguiente vez lee el segundo, etc. Cuando llega al final se terminó, nunca le dijiste que regresara al principio.

Código PHP:
Ver original
  1. for($a=0; $new_num_user>$a ; $a++){    
  2.          
  3.   $new_user = $get_newest_user->fetch_assoc();
  4.                  
  5.    for($b=0; $new_num_img>$b ; $b++){
  6.         $new_img = $get_newest_img->fetch_assoc(); // <-- ** 1 **
**1
La segunda vez que entra al for del ciclo $b, con el segundo Usuario, el ResultSet $get_newest_img está al final y nunca lo reseteaste.

Saludos,
  #19 (permalink)  
Antiguo 13/08/2010, 20:38
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Consulta erronea

HackmanC: es un buen punto, pero no se supone que si bien se usa la misma función, esta se está aplicando sobre dos instancias o dos objetos distintos?
  #20 (permalink)  
Antiguo 13/08/2010, 20:53
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Consulta erronea

Hola fede1976,

Cita:
Iniciado por fede1976 Ver Mensaje
HackmanC: es un buen punto, pero no se supone que si bien se usa la misma función, esta se está aplicando sobre dos instancias o dos objetos distintos?
Eso no puedo estar completamente seguro porque está usando una librería propia de abstracción de MySQL.

Pero el único lugar donde se asigna un valor a $get_newest_img es en la instrucción, $get_newest_img = $conn->query("select * from images"); me imagino que allí se crea una nueva instancia de la clase.

De allí en adelante está usando la misma instancia para $get_newest_img; aunque esté dentro de un ciclo y se ingrese varias veces.

Saludos,
  #21 (permalink)  
Antiguo 13/08/2010, 20:53
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Consulta erronea

creo saber lo que es!!
Tratá de usar la estructura de código que te pasé antes, con la variable $cadena. Fijáte bien. Dentro del for más interno usá sólo la concatenación de cadenas. Luego fuera de los bucles podés hacer el echo $cadena. Fijáte que donde dice $new_user['user_id'] == $new_img['user_id'] es lo que está generando la estructura rara de números, es un problema de sintaxis nada más. Fijáte.
  #22 (permalink)  
Antiguo 13/08/2010, 20:59
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Consulta erronea

o en todo caso usá dentro de:

if($new_user['user_id'] == $new_img['user_id'])
{

}

una sóla línea echo 'acá pone todo el codigo correspondiente a <li>';

Lo que tenés que evitar es la apertura y cirre de las etiquetas de PHP dentro del IF, eso te está generando todos estos problemas. Es mi opinión!
  #23 (permalink)  
Antiguo 13/08/2010, 21:16
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Consulta erronea

y salió bien?
  #24 (permalink)  
Antiguo 13/08/2010, 21:28
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Mensaje Respuesta: Consulta erronea

Hola,

De cualquier forma dejo un trozo de código, por si ese fuera el problema. El método data_seek() del objeto $get_newest_img debería hacer lo que está explicado en mysql_data_seek.

Código:
for ($a = 0; $new_num_user > $a; $a++) {

    $new_user = $get_newest_user->fetch_assoc();
    $get_newest_img->data_seek(0);

    for ($b = 0; $new_num_img > $b; $b++) {

        $new_img = $get_newest_img->fetch_assoc();

        if ($new_user['user_id'] == $new_img['user_id']) {
Saludos.
  #25 (permalink)  
Antiguo 13/08/2010, 21:38
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Consulta erronea

HackmanC me parece que ya lo resolvió, ahora sería bueno saber cuál era el inconveniente.
Yo estoy casi seguro de que los bucles for estaban bien, es más, la estructura general del script era correcta, pero tenía un código HTML incrustado en el script de un modo inadecuado. Por eso el programa se comportaba de una manera no deseada.
Saludos.

Federico
  #26 (permalink)  
Antiguo 10/10/2010, 19:01
 
Fecha de Ingreso: abril-2010
Mensajes: 24
Antigüedad: 14 años
Puntos: 0
Respuesta: Consulta erronea

Hola chicos , si el error era ese que el array no se reseteaba , lo resetee y funciono todo bien , muchas gracias.

Etiquetas: Ninguno
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 01:27.