Foros del Web » Programando para Internet » PHP »

Agrupar datos

Estas en el tema de Agrupar datos en el foro de PHP en Foros del Web. Buenas tardes como puedo agrupar datos para mostrarlos Tengo id nombre problemas Cada nombre tiene muchos problemas entonces quiero que al buscar por nombre me ...
  #1 (permalink)  
Antiguo 19/03/2013, 09:18
 
Fecha de Ingreso: junio-2010
Mensajes: 25
Antigüedad: 13 años, 10 meses
Puntos: 0
Mensaje Agrupar datos

Buenas tardes como puedo agrupar datos para mostrarlos
Tengo
id nombre problemas

Cada nombre tiene muchos problemas entonces quiero que al buscar por nombre me devuelva esto
id nombre problemas
1 pepe problema1
problema2
problema3
He usado group by nombre pero solo me muestra esto
id nombre problemas
1 pepe problema1

Mi consulta es select * from datos where nombre LIKE '%$buscar%' ORDER BY nombre

Muchas gracias
  #2 (permalink)  
Antiguo 19/03/2013, 09:52
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: Agrupar datos

mira con un select * from no podras agrupar nada en la consulta tenes que colocar aquellos campos de la tabla que te interesa recuperar y en el group by de la consulta podes definir porque campos queres agrupar los resultados...

podes leer esto para que te orientes mejor...

http://deletesql.com/viewtopic.php?f=5&t=13

Saludos..
  #3 (permalink)  
Antiguo 19/03/2013, 10:03
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Agrupar datos

Mira hay una forma con Mysql, pensando que este es donde esta montada tu base de datos.

Código SQL:
Ver original
  1. SELECT
  2. id,
  3. nombre,
  4. GROUP_CONCAT(problemas) AS problemas
  5. FROM usuarios
  6. WHERE nombre LIKE '%$buscar%'
  7. GROUP BY nombre

no se exactamente los nombres de tus tablas, ni se exactamente las relaciones que tienes, pero de esa forma podrías sacar lo que necesitas si lo quieres hacer por consulta.

ahora si lo quieres sacar por php puedes meter los problemas en un vector e imprimir este vector con implode(','$vector); para que se impriman separadas por coma, hay varias formas si te sirve por consulta excelente sino escribes a ver en que te puedo ayudar.
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #4 (permalink)  
Antiguo 19/03/2013, 11:23
 
Fecha de Ingreso: junio-2010
Mensajes: 25
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Agrupar datos

miguec04 muchas gracias lo que me pasaste funciona perfecto. Lo único que no me convenve es que me lo muestra asi:
id nombre problemas
1 pepe problema1,problema2,problema3
y me gustaria que fuera un problema abajo del otro. Sabes como hacerlo? Muchas gracias
  #5 (permalink)  
Antiguo 19/03/2013, 13:17
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Agrupar datos

Toca por programación con php lo puedes hacer de la siguiente forma:

Código PHP:
Ver original
  1. $problema           = explode(',', $row['problema']);
  2. $conSalto           = implode('<br/>',$problema);
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #6 (permalink)  
Antiguo 19/03/2013, 13:29
 
Fecha de Ingreso: junio-2010
Mensajes: 25
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Agrupar datos

Disculpa mi ignorancia.
La consulta la dejo como vos me dijiste? y aparte hago esto o solo lo de php?
Ademas despues e hacer la consulta tengo esto: Donde pondría el codigo que vos me pasaste?
$result = mysql_query.......
while($row=mysql_fetch_array($result)){
echo"

<tr>
<td><input type=text name=nombre size=13 class=$color maxlength=50 value=\"$row[nombre]\"></td>
<td><input type=text name=problema size=13 class=$color maxlength=100 value=$row[problemas]></td>
</tr>";
  #7 (permalink)  
Antiguo 19/03/2013, 13:36
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Agrupar datos

la consulta la dejas intacta

el php seria algo asi

Código PHP:
Ver original
  1. $result     = mysql_query.......
  2. while($row = mysql_fetch_array($result)) {
  3.     $problemas          = explode(',', $row['problemas']);
  4.     $problemas          = implode('<br/>', $problemas);
  5.     $nombre             = $row['nombre'];
  6.     echo "<tr>
  7.             <td>
  8.                 <input type=text name=nombre size=13 class='$color' maxlength=50 value='$nombre'/>
  9.             </td>
  10.             <td>
  11.                 <input type=text name=problema size=13 class='$color' maxlength=100 value='$problemas'/>
  12.             </td>
  13.          </tr>";
  14. }
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #8 (permalink)  
Antiguo 19/03/2013, 13:41
 
Fecha de Ingreso: junio-2010
Mensajes: 25
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Agrupar datos

Gracias miguec04 pero cuando hago la busqueda me figura:
id nombre Problema
1 pepe problema1 <br/> problema2

Es decir me sale ese codigo pero no tira la linea para abajo. Que puede ser? dislcupa la molestia
  #9 (permalink)  
Antiguo 19/03/2013, 13:44
 
Fecha de Ingreso: junio-2010
Mensajes: 25
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Agrupar datos

me olvide de ponerte que me ha quedado asi;
<table border=1 cellspacing=1 cellpadding=1 bgcolor=232323 class=texto>

<tr>
<td><b>Id</b></td>
<td><b>Nombre</b></td>
<td><b>Problema</b></td>
</tr>";
while($row = mysql_fetch_array($result)) {
$problemas = explode(',', $row['problemas']);
$problemas = implode('<br/>', $problemas);
$nombre = $row['nombre'];
echo "<tr>
<td>
<input type=text name=nombre size=13 class='$color' maxlength=50 value='$nombre'/>
</td>
<td>
<input type=text name=problema size=13 class='$color' maxlength=100 value='$problemas'/>
</td>
</tr>";
}
echo"</table></form>";
  #10 (permalink)  
Antiguo 19/03/2013, 13:54
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Agrupar datos

Espero te sirva asi

Código PHP:
Ver original
  1. echo "<tr>
  2.         <td><b>Id</b></td>
  3.         <td><b>Nombre</b></td>
  4.         <td><b>Problema</b></td>
  5.       </tr>";
  6.  
  7. while($row = mysql_fetch_array($result)) {
  8.     $problemas = explode(',', $row['problemas']);
  9.     $problemas = implode('<br/>', $problemas);
  10.     $nombre = $row['nombre'];
  11.     echo "<tr>
  12.     <td>
  13.     <input type=text name=nombre size=13 class='$color' maxlength=50 value='$nombre'/>
  14.     </td>
  15.     <td>
  16.         $problemas
  17.     <input type='hidden' name=problema size=13 class='$color' maxlength=100 value='".$row['problemas']."'/>
  18.     </td>
  19.     </tr>";
  20. }
  21. echo"</table></form>";
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #11 (permalink)  
Antiguo 19/03/2013, 14:04
 
Fecha de Ingreso: junio-2010
Mensajes: 25
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Agrupar datos

de esta manera me lo vuelve a mostrar como antes. Separado por comas: problema1, problema2 es parecido a como lo tenia antes
<tr>
<td><input type=text name=nombre size=13 class=$color maxlength=50 value=\"$row[nombre]\"></td>
<td><input type=text name=problema size=13 class=$color maxlength=100 value=$row[problemas]></td>
</tr>"

Etiquetas: agrupar, select
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 03:10.