Foros del Web » Programando para Internet » PHP »

Problema con While anidado!

Estas en el tema de Problema con While anidado! en el foro de PHP en Foros del Web. Hola, tengo un menu que se arma desde mysql, para colocar las opciones en las categorias correspondientes uso 2 while, anidados. El problema esta en ...
  #1 (permalink)  
Antiguo 24/03/2009, 15:39
 
Fecha de Ingreso: marzo-2009
Mensajes: 18
Antigüedad: 15 años, 1 mes
Puntos: 0
Problema con While anidado!

Hola, tengo un menu que se arma desde mysql, para colocar las opciones en las categorias correspondientes uso 2 while, anidados. El problema esta en que el segundo while, al parecer, solo se ejecuta durante la primera ejecucion del primer while. Se entiende?

este es el pedazo de codigo:

Código PHP:
while ($row1 mysql_fetch_array ($result_cat)) {
                            
        echo 
"<li><a href=''>$row1[categoria]</a><ul>";

            while (
$row2 mysql_fetch_array ($result_ilus)) {
                                    
                if (
$row1['id'] == $row2['cat_id']) {
                                    
                    echo 
"<li><a href='ilustraciones.php?cod=$row2[id]'>$row2[nombre]</a></li>";
                }
                                
            }
        echo 
"</ul></li>"
Lo que me hace es pasar por el primer while, e imprime por ejemplo:

-Casas

Y cuando ejecuta el segundo while, el anidado me imprime dentro de casas, quedadndo:

-Casas
---Casa 1
---Casa 2
---Casa 3

Y luego vuelve el primer while, e imprime lo siguiente:
-Casas
---Casa 1
---Casa 2
---Casa 3

-Locales

Y es entonces cuando tendria que volverse a ejecutar el segundo while, el anidado, para imprimir las opciones dentro de "Locales", pero cuando temrina de pasar por el while, todas las veces requerias, solo me imprime lo del while de afuera, no el de adentro, el anidado solo se ejecuta la primera vez, mostrandome esto:

-Casas
---Casa 1
---Casa 2
---Casa 3

-Locales

-Oficinas

Cuando lo que tendria que mostrar es esto:


-Casas
---Casa 1
---Casa 2
---Casa 3

-Locales
-Local1

-Oficinas
---Oficina 1
---Oficina 2


Se entiende? que joraca estoy haciendo mal?

Última edición por blasphemy; 24/03/2009 a las 15:44
  #2 (permalink)  
Antiguo 24/03/2009, 15:42
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema con While anidado!

Sí es lógico que se ejecute únicamente la primera vez, ya que el puntero de mysql_fetch_array() ya llegó al final tras la primera ejecución.

Puedes usar mysql_data_seek() para volver el puntero al primer registro:
http://www.php.net/manual/es/functio...-data-seek.php
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 24/03/2009, 17:35
Avatar de SCY-FOX  
Fecha de Ingreso: septiembre-2007
Ubicación: Chile
Mensajes: 139
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: Problema con While anidado!

Porqué mejor no usar una burbuja con FOR y un arreglo bidimensional???

los whiles se cabrean mucho a veces xD
  #4 (permalink)  
Antiguo 25/03/2009, 05:49
 
Fecha de Ingreso: marzo-2009
Mensajes: 18
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Problema con While anidado!

Gracias por las respuestas, voy a tener en cuenta la sugerencia, este trabajo lo necesito terminar urgente, recien emppiezo con php y mysql, todavia tengo mucho que aprender!

gracias nuevamente.
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 16:51.