Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] CHECKEAR campos checkbox de acuerdo a array o session

Estas en el tema de CHECKEAR campos checkbox de acuerdo a array o session en el foro de PHP en Foros del Web. Buenas... estoy queriendo ponerle el famoso CHECKED a mis campos INPUT tipo CHECKBOX, pero de acuerdo a los resultados que voy obteniendo de un array ...
  #1 (permalink)  
Antiguo 08/03/2016, 19:31
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
CHECKEAR campos checkbox de acuerdo a array o session

Buenas... estoy queriendo ponerle el famoso CHECKED a mis campos INPUT tipo CHECKBOX, pero de acuerdo a los resultados que voy obteniendo de un array o una session. Pero me he liado.

Para que se entienda... y como concepto nada mas, no me digan que use PDO o algo asi, jaja, el tema es para ver como sacar nada mas lo que necesito

Tengo una tabla de USUARIOS, MATERIAS en la BD y otra de "PERMISOS_MATERIAS" que están relacionadas con las dos anteriores. Es decir, ahi voy guardando los ID de materias que van seleccionando los usuarios.

Ya están guardadas en PERMISOS_MATERIAS 1, 2 o varios ID de las materias...
Traer todas las materias seleccionadas de un usuario y guardarlas en una SESSION, por ejemplo es fácil, y solo necesito los IDMATERIA de un usuario X, como ejemplo:

Código PHP:
$sql_mat "SELECT idmateria FROM permisos_materias WHERE idusuario = ".$idusuario;
  
$qry_mat mysql_query($sql_mat$conn) or die(mysql_error());
  while (
$row_mat mysql_fetch_array($qry_mat)) {
    
$_SESSION["idmateria"] = $row_mat['idmateria'];// solo ejemplo, puede ser un array tambien
  

Lo que quiero lograr es crear dinámicamente los checkbox y que me marque como CHECKED los que existan o coincidan con los valores del array o session de los PERMISOS MATERIAS...

Crear los checkbox dinamicamente es facil, por ejemplo:
Código PHP:
<?php
$sql_m 
"SELECT * FROM materias";
$qry_m mysql_query($sql_m$conn) or die(mysql_error());
while (
$row_m=mysql_fetch_array($qry_m)) {
                  
?>
                  <label>
                    <input type="checkbox" name="materias[]" 
                    value="<?php echo $row_m['idmateria'?>" /> <?php echo $row_m['materias']; ?></label><br />
                  <?php 
                  

                  
?>
En teoría, esto me traería el listado de materias con checkbox, pero como marco con CHECKED los que el usuario X ya eligió anteriormente?

Espero se entienda... se agradece cualquier aporte...
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #2 (permalink)  
Antiguo 08/03/2016, 20:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: CHECKEAR campos checkbox de acuerdo a array o session

Puedes usar in_array() o usar una condición simple:
Código PHP:
Ver original
  1. if ($x == $y) echo 'checked';
  2. if (in_array($x, $y)) echo 'checked';
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 09/03/2016, 17:24
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: CHECKEAR campos checkbox de acuerdo a array o session

EDITO:

Esto sirve en el caso que necesite editar las selecciones realizadas por un usuario mediante checkbox... en mi caso, eran maestros que seleccionaban 1 o más materias de un listado, pero luego necesitaban modificar por X razón, ya sea para agregar nuevos o deseleccionar alguno. Ojo que solo pone CHECKED a los INPUT segun coincidan en la BD, la edición, agregados, es decir, UPDATES, DELETE y demás, se generan con otras funciones y rutinas PHP-Mysql.-

Lo solucioné así, y espero se entienda, después lo traducen a PDO o Mysqli, o lo que deseen que no esté DEPRECATED...

Código PHP:
<?php
                
//traigo las materias seleccionadas por el usuario
                
$s "SELECT idmateria FROM permisos_materias WHERE idusuario = ".$idusuario;
                
$q mysql_query($s$conn);
                
// creo el array de materias seleccionadas por el cliente
                
$materias_usuario = array(); 
                while(
$row mysql_fetch_array($q)) {    
                
$materias_usuario[] = $row;     
                } 


                
//traigo todas las materias para colocarlas en un CHECKOX
                
$s2 "SELECT idmateria, materias FROM materias";
                
$q2 mysql_query($s2$conn);
                
// creo el array de todas las materias para comparar
                
$todas_las_materias= array();
                while (
$r2 mysql_fetch_array($q2)) {
                  
$todas_las_materias[]= $r2;
                }

                
// bucleo para traer todas las materias en un checkbox
                
for($j=0;$j<count($todas_las_materias);$j++){
                  
                     
?>
                  <!--Inicio LABEL-->
                  <label>
                    <input type="checkbox" name="materias[]" value="<?php echo $todas_las_materias[$j][0]; ?>
                    <?php
                    
// bucleo para buscar todas las materias del usuario
                    // dentro de todas las materias existentes 
                    
for($i=0;$i<count($materias_usuario);$i++){
                      if(
$materias_usuario[$i][0]==$todas_las_materias[$j][0]){
                        echo 
'checked';
                      }
                    }
                    
?> 
                    /><!--cierre de checkbox-->
                    <?php echo $todas_las_materias[$j][1]; ?>
                  </label><br />
                  <!--Fin LABEL-->
                  <?php
                   
                  
}
              
               
              
?>
Saludos
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...

Última edición por loncho_rojas; 09/03/2016 a las 20:46 Razón: Solución hallada

Etiquetas: acuerdo, campos, checkbox, mysql, select, session, sql, tabla, usuarios
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 19:44.