Foros del Web » Programando para Internet » PHP »

Problema mostrando datos de la BD con dos while anidados

Estas en el tema de Problema mostrando datos de la BD con dos while anidados en el foro de PHP en Foros del Web. Buenas estuve creando un sistema muy básico de foros. Existe un foro, subforos, categorías y temas. (cada subforo tiene varias categorias y una categoria tiene ...
  #1 (permalink)  
Antiguo 27/03/2010, 14:59
Avatar de nicolaslt  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 119
Antigüedad: 10 años, 10 meses
Puntos: 5
Pregunta Problema mostrando datos de la BD con dos while anidados

Buenas

estuve creando un sistema muy básico de foros.

Existe un foro, subforos, categorías y temas.

(cada subforo tiene varias categorias y una categoria tiene varios temas)

Éste código php lo hice para recorrer los subforos y de ahí mostrar las categorías que éste contiene:

Código PHP:

$query
="SELECT * FROM categorias WHERE foro='{$_GET['foro']}'";
$response=mysql_query($query);

$query="SELECT * FROM subforos WHERE foro='{$_GET['foro']}'";
$response2=mysql_query($query);



    while(
$row=mysql_fetch_assoc($response2))
    {
        echo 
"Categorías del subforo {$row['nombre']}<br/>";
        while(
$row2=mysql_fetch_array($response))
        {
            if(
$row2['subforo']==$row['nombre'])
            {
                echo 
"{$row2['categoria']}<br/>";
            }
        }
        echo 
"<br/>";
    } 
Después de hacer un par de pruebitas, me di cuenta que despues de mostrar las categorías del primer subforo, no muestra las del segundo porque no entra al while anidado.

Gracias por su atención, saludos!!
  #2 (permalink)  
Antiguo 27/03/2010, 15:03
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 9 meses
Puntos: 1517
Respuesta: Problema mostrando datos de la BD con dos while anidados

Lo mejor es hacerlo con la consulta solamente. Te sugiero que uses INNER JOIN para unir las tablas en una sola consulta y así tomas los campos necesarios con un solo while.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 27/03/2010, 18:14
 
Fecha de Ingreso: abril-2007
Ubicación: Tandil, Bs As, Argentina
Mensajes: 106
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: Problema mostrando datos de la BD con dos while anidados

Cita:
Iniciado por nicolaslt Ver Mensaje
Buenas

estuve creando un sistema muy básico de foros.

Existe un foro, subforos, categorías y temas.

(cada subforo tiene varias categorias y una categoria tiene varios temas)

Éste código php lo hice para recorrer los subforos y de ahí mostrar las categorías que éste contiene:

Código PHP:

$query
="SELECT * FROM categorias WHERE foro='{$_GET['foro']}'";
$response=mysql_query($query);

$query="SELECT * FROM subforos WHERE foro='{$_GET['foro']}'";
$response2=mysql_query($query);



    while(
$row=mysql_fetch_assoc($response2))
    {
        echo 
"Categorías del subforo {$row['nombre']}<br/>";
        while(
$row2=mysql_fetch_array($response))
        {
            if(
$row2['subforo']==$row['nombre'])
            {
                echo 
"{$row2['categoria']}<br/>";
            }
        }
        echo 
"<br/>";
    } 
Después de hacer un par de pruebitas, me di cuenta que despues de mostrar las categorías del primer subforo, no muestra las del segundo porque no entra al while anidado.

Gracias por su atención, saludos!!
Hola nicolaslt.. creon que eso te pasa porque no volves a la posicion 0 del arreglo al puntero que recorre en el while de adentro.. lo arreglamos facil xD

Código PHP:

$query
="SELECT * FROM categorias WHERE foro='{$_GET['foro']}'";
$response=mysql_query($query);

$query="SELECT * FROM subforos WHERE foro='{$_GET['foro']}'";
$response2=mysql_query($query);



    while(
$row=mysql_fetch_assoc($response2))
    {
        echo 
"Categorías del subforo {$row['nombre']}<br/>";
        while(
$row2=mysql_fetch_array($response))
        {
            if(
$row2['subforo']==$row['nombre'])
            {
                echo 
"{$row2['categoria']}<br/>";
            }
        }
        echo 
"<br/>";
                
// Una vez que termino de usar el arreglo de los subforos, lo volvemos a la posicion 0
                
mysql_data_seek($response,0);
    } 
Creo que con eso ya esta xD

Probalo y avisame. Saludos!!
  #4 (permalink)  
Antiguo 15/05/2010, 19:23
Avatar de nicolaslt  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 119
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Problema mostrando datos de la BD con dos while anidados

Bueno, leo este post de un buen tiempo, lamentablemente no pude leer este post al poco tiempo de haberlo creado....

Gracias a ambos por sus respuestas... y tte aviso megcapkill que tu solución me funcionó perfectamente

muchas gracias!! suerte

Etiquetas: anidados, bd, dos
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 22:12.