Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] ayudita con while anidado para mostrar datos

Estas en el tema de ayudita con while anidado para mostrar datos en el foro de PHP en Foros del Web. Hola amigos, el dia de hoy vine porque me salio un reto y no se muy bien como solucionarlo, resulta que tengo una tabla clientes ...
  #1 (permalink)  
Antiguo 28/11/2013, 13:40
 
Fecha de Ingreso: diciembre-2012
Mensajes: 249
Antigüedad: 11 años, 4 meses
Puntos: 2
ayudita con while anidado para mostrar datos

Hola amigos, el dia de hoy vine porque me salio un reto y no se muy bien como solucionarlo, resulta que tengo una
tabla clientes en ella guardo cada cliente con un id
y tengo una tabla grupos y alli guardo cada grupo con un id
y tengo la tabla clientes_grupos y alli aguardo el id del cliente junto con el id del grupo, y asi un cliente puede estar en 1 o varios grupos y viceversa, pero al imprimir en mi tabla, aquellos grupos que no se han agregado al cliente, me esta imprimiendo repetidas veces y necesito que me imprima una sola vez: por ejemplo

TBL_GRUPOS
1
2
3
4

TBL_GRUPOS_CLIENTES
1
2

entonces que solo imprima
3
4

pero no lo logro hacer, actualmente me esta imprimiendo:
1
2
3
3
4
4

Alguna ayudita de como lo pueda arreglar?

LES DEJO EL CODE:

Código Javascript:
Ver original
  1. $consulta = "SELECT * FROM grupos";
  2.             $resultado=$sql->query($consulta);
  3.             $tabla=  '<table>';        
  4.             while ($fila =mysql_fetch_assoc($resultado))
  5.                     {
  6.                        
  7.                         $consulta1 = "SELECT * FROM grupos,clientes_grupos WHERE Idcliente='".$cliente."'  and clientes_grupos.IdGrupo=grupos.IdGrupo;";
  8.                         $resultado1=$sql->query($consulta1);
  9.                        
  10.                         while ($fila1 = mysql_fetch_assoc($resultado1))
  11.                         {
  12.                             if ($fila['IdGrupo'] != $fila1['IdGrupo'])
  13.                             {
  14.                                 $tabla .= '<tr id='.$fila['IdGrupo'].'>';
  15.                                 $tabla .=    '<td>'.$fila['Nombre'].'</td>';
  16.                                 $tabla .=    '<td><a href="javascript:agregar_al_Grupo('.$fila['IdGrupo'].','.$idcliente.')"><img title="Agregar al Grupo" width=20px; src="img/agregar.png"></a></td>';
  17.                                 $tabla .= '</tr>';
  18.                             }
  19.                             else echo '';
  20.                         }              
  21.                     }
  22.             $tabla .= '</table>';
  23.             echo ($tabla);

gracias

Última edición por summerblack; 28/11/2013 a las 15:14
  #2 (permalink)  
Antiguo 29/11/2013, 07:47
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: ayudita con while anidado para mostrar datos

Revisa y busca información sobre GROUP BY y lo agregas a tu consulta.

por ejemplo

Código PHP:
Ver original
  1. $consulta1 = "SELECT * FROM grupos,clientes_grupos WHERE Idcliente='".$cliente."'  and clientes_grupos.IdGrupo=grupos.IdGrupo GROUP BY grupos.IdGrupo";
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #3 (permalink)  
Antiguo 29/11/2013, 12:12
 
Fecha de Ingreso: diciembre-2012
Mensajes: 178
Antigüedad: 11 años, 3 meses
Puntos: 2
Respuesta: ayudita con while anidado para mostrar datos

exactamente lo que te respondio kaninox ya probe la funcion GROUP BY y funciona solo que si quieres unir id de tabla grupo y de clientes tienes que hacer una consulta que las una con inner join
__________________
clasificados nunca se sabe todo
  #4 (permalink)  
Antiguo 29/11/2013, 13:26
 
Fecha de Ingreso: diciembre-2012
Mensajes: 249
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: ayudita con while anidado para mostrar datos

si chicos el group by es la solucion, no lo habia pensado gracias
  #5 (permalink)  
Antiguo 29/11/2013, 22:48
 
Fecha de Ingreso: diciembre-2012
Mensajes: 178
Antigüedad: 11 años, 3 meses
Puntos: 2
Respuesta: ayudita con while anidado para mostrar datos

marcalo como solucionado entonces
__________________
clasificados nunca se sabe todo

Etiquetas: 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 10:39.