Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

consulta tablas relacionadas y mostrar checkboxs activos o no

Estas en el tema de consulta tablas relacionadas y mostrar checkboxs activos o no en el foro de Bases de Datos General en Foros del Web. Hola a todos La consulta es: Tengo una tabla de grupos: grupos(idg, nombre) Una tabla de usuarios: usuarios (idusu,apellido..etc) y una tabla de relaciones de ...
  #1 (permalink)  
Antiguo 14/04/2005, 16:52
 
Fecha de Ingreso: junio-2004
Mensajes: 60
Antigüedad: 20 años, 5 meses
Puntos: 1
consulta tablas relacionadas y mostrar checkboxs activos o no

Hola a todos

La consulta es:
Tengo una tabla de grupos: grupos(idg, nombre)
Una tabla de usuarios: usuarios (idusu,apellido..etc)
y una tabla de relaciones de grupos: relac_grupos (idrg,id_re_idusu, re_idg, flag) en esta ultima tabla intento llevar la relación de los grupos a los que pertenece cada usuario, es decir.. un usuario puede pertenecer a varios grupos, ej:

idrg. re_idusu (de la tabla de usuarios) re_idg (de la tabla grupos) flag
1 1 1 s
2 1 2 s
3 1 5 s
4 2 1 n

La ultima columna (flag) la he puesto para chequear si esta activado o no. Fue un intento de ultimo momento, je.

Lo que intento hacer es mostrar una consulta para la modificación de los datos del usuario, donde a través de checkboxes (marcados o no) me muestre "todos los grupos existentes", pero solamente marcados los que pertenecen a ese usuario.

<?
$query1=" SELECT * FROM relac_grupos";

$result1=mysql_query($query1);
echo'<p><u>Grupos:</u><br>';
while ($row=mysql_fetch_array($result1)) {

echo'<input type="checkbox" name="grupo" value="s" <?=CheckA("s", $row["flag"]);?>'.$row["nombre"].'</input><br>';
}



mysql_free_result($result1);



function CheckeA($sValor1, $sValor2) {
if ($sValor1 == $sValor2) {
$sSale = 'checked';
}

return $sSale;
}

?>

Bueno el problema es como mostrar los datos que tengo en la db con sus respectivos estados (marcados o no), pero teniendo en cuenta la tabla intermedia donde se relacionan (usuario, grupos).


Otro Intento:
Tambien intenté hacer q solo me muestre los datos que le corresponden a ese usuario:

$query2 ="SELECT * FROM relac_grupos LEFT JOIN grupos ON relac_grupos.re_idg = grupos.idg AND relac_grupos.re_idusu = '$idusu'";

aqui si me muestra y tengo todos los datos pero solo los que corresponden a un usuarios que tienen esos grupos..


Gracias a todos... desde ya... por meterse en este bardo...



al3jo
  #2 (permalink)  
Antiguo 15/04/2005, 06:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Creo que primero deberías resolver el problema de hacer una o dos consultas para obtener los grupos que pertenece y los que no desde SQL .. EL tema del "checkbox" en sí controlado por código PHP ya lo tienes claro al parecer.

Voy a trasladar tu pregunta también al foro de "Base de datos" (dejando mención en este) para que te dén alternativas también por ese lado.

Un saludo,
  #3 (permalink)  
Antiguo 15/04/2005, 06:41
 
Fecha de Ingreso: junio-2004
Mensajes: 60
Antigüedad: 20 años, 5 meses
Puntos: 1
Gracias.. Cluster...

Al3jo
  #4 (permalink)  
Antiguo 15/04/2005, 07:18
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años, 6 meses
Puntos: 0
Para que la consulta funcionara tendrias que mandar tambien a la tabla de detalle el grupo al cual no pretenece con la bandera por ejem:
Código:
Ususario    Grupos
1               1
                2
                3

Detalle
Usu  Grupo Flag
1      1       1
1      2       0
1      3       1

Donde 1 si pertenece y 0 no
  #5 (permalink)  
Antiguo 15/04/2005, 13:43
 
Fecha de Ingreso: junio-2004
Mensajes: 60
Antigüedad: 20 años, 5 meses
Puntos: 1
Gracias jrp01 !!!

si, estaba haciendo mal la consulta, la que corresponde sería:

$query2="SELECT * FROM grupos LEFT JOIN relac_grupos ON relac_grupos.re_idg = grupos.idg AND re_idusu = '$idusu'";

en realidad estaba haciendolo al reves, tomaba la tabla de relaciones primero , cuando deberia primeramente tomar la de grupos para ver todos los disponibles.

Y es cierto el campo flag de la tabla relac_grupos es justamente lo que consulto dentro del while para ver si debo chequear o no el checkbox.

Gracias de nuevo amigo.

A sus órdenes.

al3jo
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:40.