Foros del Web » Programando para Internet » PHP »

Problema al mostrar unos datos...

Estas en el tema de Problema al mostrar unos datos... en el foro de PHP en Foros del Web. Buenas, Veamos, tengo un problemilla que no consigo encontrar la solución y creo que es muy facil, pero quizas este algo espeso y por eso ...
  #1 (permalink)  
Antiguo 02/08/2010, 04:19
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 18 años, 1 mes
Puntos: 74
Problema al mostrar unos datos...

Buenas,

Veamos, tengo un problemilla que no consigo encontrar la solución y creo que es muy facil, pero quizas este algo espeso y por eso ... jeje.

Bueno, ¿que sucede?

Pues veamos, tengo dos tablas:

id | nombre | descripcion | porcentaje | fecha_inicio | fecha_finalizacion | id_desarrollador

En id_desarrollador guardo las identidades separadas por comas (1,8)

Y esta es la segunda tabla:

id | nick | email | cargo | especialidad | fecha_registro

Entonces lo que quiero hacer es esto:


Solo que en vez de que me muestre las identidades de los desarrolladores, estas, me las sustituya por el nick del desarrollador.
Para eso, lo he creado así:

Código PHP:
Ver original
  1. class Proyectos extends bdConnect {
  2.     public $proyecto;
  3.     public $descripcion;
  4.     public $porcentaje;
  5.     public $inicio;
  6.     public $finalizacion;
  7.     public $desarrollador;
  8.     public $id;
  9.     public $nick;
  10.    
  11.     public function mostrar_proyectos() { #Tabla Proyectos
  12.        $Resultado=mysql_query("SELECT m_proyecto.id, m_proyecto.nombre, m_proyecto.descripcion, m_proyecto.porcentaje,
  13.                               m_proyecto.fecha_inicio, m_proyecto.fecha_finalizacion, m_proyecto.id_desarrollador,
  14.                               m_desarrollador.id, m_desarrollador.nick, m_desarrollador.cargo,
  15.                               m_desarrollador.especialidad, m_desarrollador.fecha_registro
  16.                               FROM m_proyecto, m_desarrollador
  17.                               WHERE m_proyecto.id_desarrollador=m_desarrollador.id",$this->enlace);
  18.  
  19.        
  20.         echo "<table id='proyectos' border='1'>
  21.        <tr>
  22.            <th>Proyecto</th>
  23.                <th>Descripción</th>
  24.                    <th>Porcentaje</th>
  25.                        <th>Inicio</th>
  26.                           <th>Finalización</th>
  27.                                <th>Equipo</th>
  28.                                    </tr>";
  29.                    
  30.         while($MostrarFila=mysql_fetch_array($Resultado)){
  31.         $this->proyecto = $MostrarFila['nombre'];
  32.         $this->descripcion = $MostrarFila['descripcion'];
  33.         $this->porcentaje = $MostrarFila['porcentaje'];
  34.         $this->inicio = $MostrarFila['fecha_inicio'];
  35.         $this->finalizacion = $MostrarFila['fecha_finalizacion'];
  36.         $this->desarrollador = $MostrarFila['id_desarrollador'];
  37.         $this->id = $MostrarFila['id'];
  38.         $this->nick = $MostrarFila['nick'];
  39.         echo "<tr>
  40.                <td>".$this->proyecto."</td>
  41.                    <td>".$this->descripcion."</td>
  42.                        <td>".$this->porcentaje."</td>
  43.                            <td>".$this->inicio."</td>
  44.                                <td>".$this->finalizacion."</td>
  45.                                    <td>".$this->nick."</td>
  46.                                        </tr>";
  47.     }
  48.     echo "</table>";
  49.     }
  50. }
El problema, es que no se porque pero solo me muestra un nick, o sea, me muestra el nick del primer desarrollador.

¿Que sucede?, ¿donde estoy fallando?

Estoy convencido de que es algo tonto que se me escapa... en fin

Muchas gracias
  #2 (permalink)  
Antiguo 02/08/2010, 04:30
 
Fecha de Ingreso: julio-2010
Mensajes: 56
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Problema al mostrar unos datos...

¿Cómo esperas que de id_desarrollador donde están los Id's de los desarrolladores en un mismo campo, sea capaz MySQL de "adivinar" que ahí tiene que coger los datos de dicho campo y tomarlos separados por comas?

No puedes esperar que MySql haga eso.

Yo si fuese tu, haría una tercera tabla llamada "grupos" en que vincularía m_proyecto, m_desarrollador

Id
Id_m_proyecto
Id_desarrollador
  #3 (permalink)  
Antiguo 02/08/2010, 04:51
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 18 años, 1 mes
Puntos: 74
Respuesta: Problema al mostrar unos datos...

De acuerdo, he seguido tu consejo y "funciona" pero no como deseo.
Ahora me los datos me los muestra asi:



Ya que Oscar y Cristobal estan en el mismo proyecto, me gustaría que saliese en la misma celda (Oscar, Cristobal) y no separado como me sale. Aparte, asi queda bastante feo repitiendome los nombres, descripciones...

Muchas gracias
  #4 (permalink)  
Antiguo 02/08/2010, 08:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Problema al mostrar unos datos...

Para eso tienes que agrupar en tu query, o vas a tener que hacer una segunda consulta para obtener los miembros de un proyecto.

Saludos.
  #5 (permalink)  
Antiguo 02/08/2010, 16:00
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 18 años, 1 mes
Puntos: 74
Respuesta: Problema al mostrar unos datos...

Perdón, ¿pero que es eso de agrupar en la query?

Saludos
  #6 (permalink)  
Antiguo 03/08/2010, 09:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Problema al mostrar unos datos...

Lee el operador GROUP BY de SQL.

Saludos.
  #7 (permalink)  
Antiguo 04/08/2010, 06:04
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 18 años, 1 mes
Puntos: 74
Respuesta: Problema al mostrar unos datos...

Buenas,

He leido un poco acerca de GROUP BY y lo he puesto en práctica. Lamentablemente no funciona al 100 por 100, pero parece que vamos dando con la solución .

Este es el código actual:

Código PHP:
Ver original
  1. class Proyectos extends bdConnect {
  2.     public $proyecto;
  3.     public $descripcion;
  4.     public $porcentaje;
  5.     public $inicio;
  6.     public $finalizacion;
  7.     public $desarrollador;
  8.     public $id;
  9.     public $nick;
  10.    
  11.     public function mostrar_proyectos() { #Tabla Proyectos
  12.        $Resultado=mysql_query("SELECT  * FROM m_proyecto
  13.        INNER JOIN m_grupos ON m_proyecto.id=m_grupos.id_m_proyecto
  14.        INNER JOIN m_desarrollador ON m_grupos.id_desarrollador=m_desarrollador.id GROUP BY m_desarrollador.id",$this->enlace);
  15.  
  16.        
  17.         echo "<table id='proyectos' border='1'>
  18.        <tr>
  19.            <th>Proyecto</th>
  20.                <th>Descripción</th>
  21.                    <th>Porcentaje</th>
  22.                        <th>Inicio</th>
  23.                           <th>Finalización</th>
  24.                                <th>Equipo</th>
  25.                                    </tr>";
  26.                    
  27.         while($MostrarFila=mysql_fetch_array($Resultado)){
  28.         $this->proyecto = $MostrarFila['nombre'];
  29.         $this->descripcion = $MostrarFila['descripcion'];
  30.         $this->porcentaje = $MostrarFila['porcentaje'];
  31.         $this->inicio = $MostrarFila['fecha_inicio'];
  32.         $this->finalizacion = $MostrarFila['fecha_finalizacion'];
  33.         $this->desarrollador = $MostrarFila['id_desarrollador'];
  34.         $this->id = $MostrarFila['id'];
  35.         $this->nick = $MostrarFila['nick'];
  36.         echo "<tr>
  37.                <td>".$this->proyecto."</td>
  38.                    <td>".$this->descripcion."</td>
  39.                        <td>".$this->porcentaje."</td>
  40.                            <td>".$this->inicio."</td>
  41.                                <td>".$this->finalizacion."</td>
  42.                                    <td>".$this->nick."</td>
  43.                                        </tr>";
  44.     }
  45.     echo "</table>";
  46.     }
  47.    
  48. }

Ahora el problema es que me lo muestra así:




El proyecto 2, tiene dos desarrolladores y, solo me muestra uno, que en este caso es el segundo. O sea, que me coje el último desarrollador nada más.

Saludos y muchas gracias

Etiquetas: Ninguno
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:14.