Foros del Web » Programando para Internet » PHP »

Mostrar registros de una tabla agrupada por id

Estas en el tema de Mostrar registros de una tabla agrupada por id en el foro de PHP en Foros del Web. Hola a tod@s y feliz año! Os consulto una duda que tengo sobre una consulta. Quiero mostrar todos los datos que están dentro de una ...
  #1 (permalink)  
Antiguo 03/01/2014, 06:48
 
Fecha de Ingreso: enero-2014
Mensajes: 2
Antigüedad: 10 años, 10 meses
Puntos: 0
Mostrar registros de una tabla agrupada por id

Hola a tod@s y feliz año!

Os consulto una duda que tengo sobre una consulta.

Quiero mostrar todos los datos que están dentro de una tabla, pero diferenciados por la comunidad. Es decir, quiero que se muestre:

Castilla y León
  • Nombre empresa
  • C/ la Paz
  • Zamora
  • Zamora
  • Nombre empresa1
  • C/ otra
  • Valladolid
  • Valladolid


Galicia
  • Nombre empresa
  • C/ la Paz1
  • Vigo
  • Vigo

La consulta que hago es esta:

Código PHP:
Ver original
  1. $paginas=mysql_query("SELECT * FROM delegaciones where activo='1'");
  2.                         while($user_ok = mysql_fetch_array($paginas))
  3.                     {
  4.                        
  5.                         echo ''.utf8_encode($user_ok["comunidad"]).'';
  6.                        
  7.                         $comunidad=$user_ok["comunidad"];
  8.                        
  9.                     $paginas=mysql_query("SELECT * FROM delegaciones where comunidad='$comunidad' ");
  10.                     while($user_ok = mysql_fetch_array($paginas))
  11.                     {
  12.                        
  13.                         echo '<li>'.utf8_encode($user_ok["nombre"]).'</li>';
  14.                         echo '<li>'.utf8_encode($user_ok["direccion"]).'</li>';
  15.                         echo '<li>'.utf8_encode($user_ok["ciudad"]).'</li>';
  16.                         echo '<li>'.utf8_encode($user_ok["provincia"]).'</location>';
  17.                         echo "<br/>";
  18.                         echo "<br/>";
  19.                         $idpagina=$user_ok["iddelegacion"];
  20.                         }}

Con esta consulta sólo me devuelve los registros de 1 comunidad, cuando me tendría que devolver mas. ¿Qué tengo mal en la consulta para que recorra todos los registros? En definitiva, ¿como consigo mostrar la tabla entera de una consulta agrupándola por comunidad?

Muchas gracias!

Última edición por gnzsoloyo; 03/01/2014 a las 07:58 Razón: Reetiquetado para mejor lectura
  #2 (permalink)  
Antiguo 03/01/2014, 07:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Mostrar registros de una tabla agrupada por id

Tu problema no es de consultas sino de lógica de programación.
Muevo a PHP para no eliminar el código de programación.

Recuerda leer las normas de cada foro. En Bases de Datos no se tratan temas de programación ni se postean códigos que no sean exclusivamente SQL.

Movido a Foro de PHP.

Te doy una pauta: Sobrescribes la misma variable al hacer la segunda consulta, por lo cual jamás recorrerás las comunidades.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 03/01/2014, 08:06
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: Mostrar registros de una tabla agrupada por id

Creo que el error esta aquí

Código PHP:
Ver original
  1. $paginas=mysql_query("SELECT * FROM delegaciones where comunidad='$comunidad' ");

Ya que me da la impresión de que esa consulta solo devuelve un solo resultado por cosa del WHERE. Puedes decirnos las estructuras de las tablas implicadas y como están relacionadas?

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #4 (permalink)  
Antiguo 03/01/2014, 08:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Mostrar registros de una tabla agrupada por id

Avanzando un poco, veamos si se entiende el problema que le veo:
Código PHP:
Ver original
  1. <?php
  2. "Lees la lisya de comunidades activas "
  3. $paginas = mysql_query("SELECT * FROM delegaciones where activo='1'");
  4. while ($user_ok = mysql_fetch_array($paginas)) {
  5.  
  6.     " Inicias la iteración del resultado de $paginas"
  7.  
  8.     echo '' . utf8_encode($user_ok["comunidad"]) . '';
  9.  
  10.     " Obtienes la comunidad del primer array."
  11.     $comunidad = $user_ok["comunidad"];
  12.  
  13.      " SOBREESCRIBES LA MISMA VARIABLE DE RESULTADO!!!"
  14.  
  15.     $paginas = mysql_query("SELECT * FROM delegaciones where comunidad='$comunidad' ");
  16.     while ($user_ok = mysql_fetch_array($paginas)) {
  17.  
  18.          " Recorres el resultado de la segunda consulta"
  19.  
  20.         echo '<li>' . utf8_encode($user_ok["nombre"]) . '</li>';
  21.         echo '<li>' . utf8_encode($user_ok["direccion"]) . '</li>';
  22.         echo '<li>' . utf8_encode($user_ok["ciudad"]) . '</li>';
  23.         echo '<li>' . utf8_encode($user_ok["provincia"]) . '</location>';
  24.         echo "<br/>";
  25.         echo "<br/>";
  26.         $idpagina = $user_ok["iddelegacion"];
  27.     }
  28.     " Al terminar el recorrido de la segunda consulta, el puntero de la variable
  29.    // está apuntando al último registro, por lo que el siguiente while() no ontendrá más
  30.    // registros (que por otro lado se perdieron al reescribirla)."
  31. }
  32. ?>

¿Se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 03/01/2014, 08:47
Avatar de moriorGames  
Fecha de Ingreso: diciembre-2013
Ubicación: Barcelona
Mensajes: 37
Antigüedad: 10 años, 10 meses
Puntos: 3
Respuesta: Mostrar registros de una tabla agrupada por id

Exacto, los compañeros aquí tienen razón, sobreescribes el resultado del sql query. Prueba con este código, no lo he probado, pero debería funcionarte.

Código PHP:
$result1 mysql_query("SELECT * FROM delegaciones where activo='1'");
while( 
$row1 mysql_fetch_array($result1) ) {

    echo 
''.utf8_encode($row1["comunidad"]).'';
    
$comunidad $row1["comunidad"];

    
$result2 mysql_query("SELECT * FROM delegaciones where comunidad='$comunidad' ");
    while( 
$row2 mysql_fetch_array($result2) ) {

        echo 
'<li>'.utf8_encode($row2["nombre"]).'</li>';
        echo 
'<li>'.utf8_encode($row2["direccion"]).'</li>';
        echo 
'<li>'.utf8_encode($row2["ciudad"]).'</li>';
        echo 
'<li>'.utf8_encode($row2["provincia"]).'</location>';
        echo 
"<br/>";
        echo 
"<br/>";
        
$idpagina $user_ok["iddelegacion"];

    }


__________________
Mi juego de estrategia medieval si lo entras hazme llegar tu opinión por favor, siempre la tengo en cuenta.
  #6 (permalink)  
Antiguo 07/01/2014, 10:24
 
Fecha de Ingreso: enero-2014
Mensajes: 2
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Mostrar registros de una tabla agrupada por id

Muchísimas gracias a todos por las respuestas! moriorGames, me sirvió de **ta madre tu consulta, se agradece. :)

Salud!

Etiquetas: mysql, registro, registros, select, sql, tabla
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:11.