Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Como agrupar y mostrar datos de la siguiente manera

Estas en el tema de Como agrupar y mostrar datos de la siguiente manera en el foro de PHP en Foros del Web. Buenos días, espero y me puedan ayudar con este problema, soy novato en esto de PHP. Bueno tengo dos tablas en una base de datos ...
  #1 (permalink)  
Antiguo 19/03/2013, 11:39
Avatar de pepito160591  
Fecha de Ingreso: marzo-2013
Ubicación: St. Louis
Mensajes: 3
Antigüedad: 11 años, 1 mes
Puntos: 0
Pregunta Como agrupar y mostrar datos de la siguiente manera

Buenos días, espero y me puedan ayudar con este problema, soy novato en esto de PHP.

Bueno tengo dos tablas en una base de datos MYSQL:
1.- departamentos(id_departamento, nombre_departamento)
2.- usuarios(id_usuario, id_departamento, username)

Y necesito mostrar a cada departamento con los usuarios que pertenecen a ese departamento, por ejemplo:

DEPARTAMENTO 1
- Usuario 1
- Usuario 2
- Usuario 3

DEPARTAMENTO 2
- Usuario 4
- Usuario 5
- Usuario 6

Tengo la siguiente consulta: SELECT nombre_departamento, GROUP_CONCAT(username) AS empleados FROM usuarios, empresa_departamento WHERE usuarios.id_departamento=empresa_departamento.id_d epartamento GROUP BY nombre_departamento

Está consulta me muestra el departamento con sus respectivos usuarios, el problema es que como se ve en la consulta me muestra los usuarios en un campo llamado empleados separados por una coma, y yo necesito que los muestre como en el ejemplo de arriba ya que cada usuario tendrá un botón para poder editarlo.

No sé si tendría que cambiar la consulta en MYSQL ó hacer algo en PHP para que me lo muestre como quiero. Espero y me puedan ayudar, de antemano gracias.
  #2 (permalink)  
Antiguo 19/03/2013, 12:19
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 3 meses
Puntos: 53
Respuesta: Como agrupar y mostrar datos de la siguiente manera

Con la consulta creo no es tan facil , pero con php una idea seria primero hacer una consulta sobre todos tus departamentos

Código PHP:
Ver original
  1. $sql=SELECT id_departamento,nombre_departamento FROM departamentos
  2. $res=....
  3. <table border=1>
  4. while($datodep=mysql_fetch_array(res))
  5. {
  6. <tr><td><?php echo $datodep['nombre_departamento']?><td></tr>
  7. // buscas los empleados por cada departamento
  8. $sqlEm=SELECT username,id_empleado from empleados where id_departamento=$datodep['id_departamento']
  9. $resemp=....
  10. while($datoemp=mysql_fetch_array($resemp))
  11. {
  12. <tr><td><?php echo $datoemp['username']</td></tr>
  13. }
  14. }
  15. </table>
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #3 (permalink)  
Antiguo 19/03/2013, 12:39
Avatar de Tokkara  
Fecha de Ingreso: junio-2008
Mensajes: 131
Antigüedad: 15 años, 11 meses
Puntos: 5
Respuesta: Como agrupar y mostrar datos de la siguiente manera

Pues si te muestra los usuarios separados con coma, lo único que hay que hacer es dividir la cadena por las comas, usando la función de php explode.

Código php:
Ver original
  1. $departamentos = array();
  2. $sql = "SELECT nombre_departamento, GROUP_CONCAT(username) AS empleados FROM usuarios, empresa_departamento WHERE usuarios.id_departamento=empresa_departamento.id_d departamento GROUP BY nombre_departamento"
  3.  
  4. $r = mysql_query($d);
  5.  
  6. while($d = mysql_fetch_row($r))
  7. $departamento[$r[0]) = explode(',', $r[1]);

La variable $departamento es un array donde la clave es el nombre del departamento y el valor es otro array con los nombres de usuarios.
__________________
Revolucionario controlador de plantillas para php
www.simphple.com
  #4 (permalink)  
Antiguo 20/03/2013, 11:22
Avatar de pepito160591  
Fecha de Ingreso: marzo-2013
Ubicación: St. Louis
Mensajes: 3
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Como agrupar y mostrar datos de la siguiente manera

Cita:
Iniciado por PIRRUMAN Ver Mensaje
Con la consulta creo no es tan facil , pero con php una idea seria primero hacer una consulta sobre todos tus departamentos

Código PHP:
Ver original
  1. $sql=SELECT id_departamento,nombre_departamento FROM departamentos
  2. $res=....
  3. <table border=1>
  4. while($datodep=mysql_fetch_array(res))
  5. {
  6. <tr><td><?php echo $datodep['nombre_departamento']?><td></tr>
  7. // buscas los empleados por cada departamento
  8. $sqlEm=SELECT username,id_empleado from empleados where id_departamento=$datodep['id_departamento']
  9. $resemp=....
  10. while($datoemp=mysql_fetch_array($resemp))
  11. {
  12. <tr><td><?php echo $datoemp['username']</td></tr>
  13. }
  14. }
  15. </table>
Gracias carnal, lo estuve checando como dijiste y tengo un problema, cuando lo ejecuto me muestra solo los departamentos que tengo en mi base de datos, pero no me muestra los usuarios que van en cada departamento, quite el WHERE de la segunda consulta:

Código HTML:
Ver original
  1. [HIGHLIGHT="PHP"]$sqlEm=SELECT username,id_empleado from empleados [COLOR="Red"]where id_departamento=$datodep['id_departamento'][/COLOR]
[/HIGHLIGHT]

y si me muestra a cada departamento pero con todos los usuarios, osea el problema esta en el WHERE, estuve intentando algunas cosas pero nomas no me sale, espero me puedas ayudar con esto, de antemano gracias.
  #5 (permalink)  
Antiguo 20/03/2013, 11:51
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 3 meses
Puntos: 53
Respuesta: Como agrupar y mostrar datos de la siguiente manera

el where es necesario en la segunda consulta,, si no te arroja nada has un print a dicha consulta para vizualizar lo que esta pidiendo

Código PHP:
Ver original
  1. $sqlEm=SELECT username,id_empleado from empleados where id_departamento=$datodep['id_departamento']
  2. print $sqlEm."<br>";
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”

Etiquetas: agrupar, manera, mysql, select, siguiente, tabla, usuarios
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 14:02.