Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Ethgar en 27 Febrero 2014, 21:06 pm



Título: mostrar registros de base de datos en lista de checkbox
Publicado por: Ethgar en 27 Febrero 2014, 21:06 pm
Hola que tal , me surgió un problema con una lista de checkbox que jalo de una base de datos, la lista si me la despliega correctamente, pero lo que quiero es que aparezca bloqueado según ciertas condiciones:
tabla:  (El campo nombre lo guardo en un array y es el que e despliega la lista)
Id |Nombre
1    Juan
2    Pablo
3    Pedro
4    Luis

ahora bien su Id esta registrado en otra tabla: la cual pueden repetirse los campos "Folio","Id_Nombre1", el único que no se puede repetir es el campo "Id_Nombre2"

Otra_Tabla
Folio | Id_Nombre1  |  Id_Nobre2
001           1                  2    -----válido
001           1                  4    -----válido
001           1                  4    -----No válido

el chiste es que si el id ya esta en el campo Id_Nombre2  en la tabla "Otra tabla" arroje el checkbox bloqueado o que ya no me lo imprima en la lista.

Espero me puedan guiar, de antemano gracias.


Título: Re: mostrar registros de base de datos en lista de checkbox
Publicado por: Saberuneko en 27 Febrero 2014, 21:18 pm
¿No podrías controlarlo con una consulta usando "EXISTS" y una variable booleana (o un array de booleanas) que te sirva para controlar el bloqueo del checkbox en cada iteración?

MySQL 5.0 EXISTS y NOT EXISTS:
http://dev.mysql.com/doc/refman/5.0/es/exists-and-not-exists-subqueries.html


Título: Re: mostrar registros de base de datos en lista de checkbox
Publicado por: Ethgar en 7 Marzo 2014, 16:22 pm
Encontré la solución por si a alguien le sirve la información a continuación explico:
 Primero hago una consulta uniendo las dos tablas:

Código
  1. //unimos las dos tablas por id siempre y cuando el folio sea 1
  2. $verifiva = mysql_query("SELECT * FROM tabla1 INNER JOIN otratabla
  3.                                   ON otratabla.Id_Nombre2 = tabla1.Id
  4.                                    WHERE Folio = 1");
  5. //Creamos un array para almacenar los registro que nos interesan
  6. $array= array();
  7. //recorremos la consulta con un while y guardamos el resultado en nuestro array
  8. while ($row = ysql_fetch_array($verifica)){
  9. $Id    = $row['Id_Nombre2'];
  10. $nom = $row[Nombre];
  11. $array[$Id] = $nom;
  12. }
  13. //ahora creamos una consulta que nos volvedera la lista de Nombre
  14. $lista = mysql_query("SELECT * FROM tabla1");
  15. //Recorremos la consulta:
  16. while ($row = mysql_fetch_array($lista)){
  17. $Id_lista    = $row['Id'];
  18. $nom_lista = $row['Nombre'];
  19.  
  20. //imprimimos la lista de nombres:
  21. echo $nom_lista;
  22. //imprimmimos los checkbox y condicionamos si el Id existe en nuestro array entonces lo deshabilita
Código
  1. <input tpe="checkbox" name="lista[]" value="<?php echo $Id_lista; ?>" <?php if(array_key_exists(Id_lista, $array){ echo "disabled";}?> />

Espero les sea de ayuda, igual si tienen otra solución mas óptima es bien recibida

Gracias a Saberuneko por el tip y a un compañero por la ayuda!