Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/10/2011, 04:15
mamonga
 
Fecha de Ingreso: abril-2010
Mensajes: 86
Antigüedad: 14 años
Puntos: 0
Anidar dos consultas Mysql

Hola amigos, les comento mi nuevo problema:

Lo que quiero conseguir es bastante simple, ahora tengo una lista de comentarios a un post que los saco con una consulta a la base de datos, algo asi:

Código PHP:
        $sql mysql_query("SELECT * FROM comentarios WHERE id=$id ORDER BY votospositivos-votosnegativos DESC LIMIT 0,25");
        while(
$row mysql_fetch_array($sql))
        {
        
$fecha=$row["fecha"];
        
$hora=$row["hora"];
        
$mensaje=$row["mensaje"];
// y asi mas datos....
//y ahora voy arrojando el html correspondiente a cada comentario y tal...
echo $mensaje;

De este modo, dentro del propio while {} voy sacando los datos de la base de datos y arrojando su correspondiente html, hasta este punto todo funciona perfecto.
El problema viene ahora, existen respuestas a las comentarios, imaginad que al primer comentario le han contestado otros dos comentarios (respuestas) entonces lo que me gustaria hacer, seria que apareciera algo asi:

Comentario 1
Respuesta1 al comentario 1
Respuesta2 al comentario 1
Comentario 2
Respuesta1 al comentario 1
Comentario 3 ..... etc

Ahora para implementarlo, cada respuesta tiene un campo que contiene la id del comentario al que esta respondiendo dicha respuesta, entonces pensé... facil anido dos while {} y hecho, entonces quedaria algo como :

Código PHP:
        $sql mysql_query("SELECT * FROM comentarios WHERE id=$id ORDER BY votospositivos-votosnegativos DESC LIMIT 0,25");
        while(
$row mysql_fetch_array($sql))
        {
        
$fecha=$row["fecha"];
        
$hora=$row["hora"];
        
$mensaje=$row["mensaje"];
        
$idrespuesta=$row["idrespuesta"]; //este es el campo que contiene la //id de las respuestas a este comentario (las respuestas tambien son //comentarios)
// y asi mas datos....
//y ahora voy arrojando el html correspondiente a cada comentario y tal...
echo $mensaje;
//sin cerrar el { del 1er while, abro otra consulta ( la de las respuestas)

    
$sql mysql_query("SELECT * FROM comentarios WHERE idrespuesta=$idrespuesta ORDER BY votospositivos-votosnegativos DESC LIMIT 0,25");
        while(
$row mysql_fetch_array($sql))
        {
        
$fecha=$row["fecha"];
        
$hora=$row["hora"];
        
$mensaje=$row["mensaje"];
// y asi mas datos....
//y ahora voy arrojando el html correspondiente a cada comentario y tal...(en //este caso es una respuesta a un comentario)
echo $mensaje;
}
//cierro el while de las respuestas 


}//cierro el while de los comentarios 
Bueno pues no me funciona, no se si es simplemente algun fallo logico o que no esta permitido anidar dos consultas mysql while($row = mysql_fetch_array($sql))

Alguna idea de lo que me pasa o otra forma de implementarlo???

Un saludo y gracias a todos !!