Foros del Web » Programando para Internet » PHP »

Guardar checkbox tanto SELECCIONADOS como NO SELECCIONADOS

Estas en el tema de Guardar checkbox tanto SELECCIONADOS como NO SELECCIONADOS en el foro de PHP en Foros del Web. Que tal amigos, antes que nada les agradezco su interés y ayuda que siempre proporcionan en el foro. Tengo un problema: tengo un formulario en ...
  #1 (permalink)  
Antiguo 23/07/2012, 16:23
 
Fecha de Ingreso: marzo-2012
Mensajes: 84
Antigüedad: 12 años, 1 mes
Puntos: 3
Guardar checkbox tanto SELECCIONADOS como NO SELECCIONADOS

Que tal amigos, antes que nada les agradezco su interés y ayuda que siempre proporcionan en el foro. Tengo un problema:

tengo un formulario en donde una columna muestra los alumnos de una escuela mediante un array desde una tabla de MySQL. En otra columna pinto los checkbox correspondientes a cada alumno para asignar su asistencia, es decir, si selecciono el checkbox quiere decir que el alumno asistió y si no lo selecciono pues que no asistió a clases. El problema esta cuando quiero almacenar los valores de los checkbox, ya que cuando esta seleccionado me guarda el valor de "1", sin embrago no he podido asignarle el valor de "0" cuando no asistió a clases.

Pregunta: ¿cómo puedo asignarle valores de "1" - seleccionado y "0" - no seleccionado a los checkbox?

De antemano muchas gracias

Código de formulario
Código PHP:
Ver original
  1. <?php
  2.    
  3. $usu_alum=mysql_query("SELECT AP_PATERNO, AP_MATERNO, NOMBRE, ID_ALUMNO, MATRICULA FROM ml_dat_ALUMNO WHERE ID_GRUPO = '$nombre_gpo'");
  4.  
  5. echo "<table width='680' border='0' align='left'>";
  6.    
  7. echo '<form action="CONEXION_ASISTENCIA.php" id="asist" name="form1" method="POST">';
  8.  
  9. echo "<tr>";
  10.  
  11. echo "<td>Nombre</td>";
  12.  
  13. echo "<td>Matricula</td>";
  14.  
  15. echo "<td >Asistencia</td>";
  16.  
  17. echo "<td>Fecha de asistencia</td>";
  18.  
  19. echo "</tr>";
  20.  
  21. while ($row_asist = mysql_fetch_row($usu_alum))    {
  22.    
  23. echo "<input type='hidden' name='ID_GRUP[]' id='ID_GRUP' value='$row_gpo[0]' />";
  24.  
  25. echo "<input type='text' name='ALUMNOS[]' value='$row_asist[3]'/>";
  26.  
  27. echo "<td ><input type='checkbox' name='ASIST[]' value='1'></td></input> \n";
  28.  
  29. echo "<td ><input type='text' name='FECHA_ASISTENCIA[]' size='20' maxlength='20' value=''></td></input> \n";
  30.  
  31. echo "</tr> \n";
  32.    
  33. }
  34.  
  35. echo "<td><input type='submit' name='ENVIAR' id='ENVIAR' value='Guardar'><input type='reset' name='RESTABLECER' id='RESTABLECER' value='Borrar datos'></td> \n";
  36.  
  37. echo "</table> \n";
  38.  
  39. echo '</form>';
  40.  
  41.  ?>

Código de recepción (CONEXIÓN_ASISTENCIA.php)
Código PHP:
Ver original
  1. <?php
  2.  
  3. include ("CONEXION_MYSQL.php");
  4.  
  5.    
  6. $GRUPO=$_POST['ID_GRUP'];
  7. $ALUMNO=$_POST['ALUMNOS'];
  8. $ASISTENCIA= $_POST['ASIST'];
  9. $FECHA_ASISTENCIA=$_POST['FECHA_ASISTENCIA'];
  10. $n=count($GRUPO);
  11.  
  12. for($i=0; $i<$n; $i++)
  13. {        
  14.    
  15. $insertar=mysql_query("INSERT INTO ml_dat_ASISTENCIA(ID_GRUPO,ID_ALUMNO,ASISTENCIA,FECHA_ASIST) VALUES('".$GRUPO[$i]."','".$ALUMNO[$i]."','".$ASISTENCIA[$i]."','".$FECHA_ASISTENCIA[$i]."')",$conexion);
  16.  
  17. if (!$insertar) {
  18. die("Fallo en la insercion de registro en la Base de Datos: " . mysql_error());
  19.  
  20. }
  21. }
  22. mysql_close($conexion);
  23.  
  24. echo '<script>alert("Los datos han sido almacenados en la base de datos");</script>';
  25.         echo '<SCRIPT LANGUAGE="javascript">
  26.        location.href="MILISTA_BD_ASIST.php";
  27.        </SCRIPT>';
  28.  
  29.  
  30.  
  31.  
  32. ?>
  #2 (permalink)  
Antiguo 23/07/2012, 18:55
Avatar de TheoriaX  
Fecha de Ingreso: agosto-2009
Ubicación: Hermosillo, Sonora
Mensajes: 217
Antigüedad: 14 años, 8 meses
Puntos: 5
Respuesta: Guardar checkbox tanto SELECCIONADOS como NO SELECCIONADOS

tendras que hacer un foreach al arregle de checkbox y comprar si esta seleccionado, de lo contrario asignarle el valor a 0
__________________
Desarrollador .Net y Php
MCTS Framework 2.0:Windows Applications
Microsoft Certificated Profesional
  #3 (permalink)  
Antiguo 24/07/2012, 06:28
daz
 
Fecha de Ingreso: julio-2001
Ubicación: Bogota
Mensajes: 341
Antigüedad: 22 años, 9 meses
Puntos: 4
Respuesta: Guardar checkbox tanto SELECCIONADOS como NO SELECCIONADOS

Hola chubse, es muy fácil cuando el checkbox no se selecciona no llega a tu pagina de CONEXION_ASISTENCIA.php con valor 0, lo que tienes que hacer verificar si la variable ASIST[$valor] no existe;
Si no existe la variables es porque no se selecciono previamente es decir que se le asigna el valor 0;
if (!isset($ASIST[$valor])){
$ASIST[$valor]=0;
}

Ahora la pregunta va mas allá, para que quieres guardar en la base de datos miles de 0 de los estudiantes que si asistieron a clase.....
  #4 (permalink)  
Antiguo 24/07/2012, 12:37
 
Fecha de Ingreso: marzo-2012
Mensajes: 84
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Guardar checkbox tanto SELECCIONADOS como NO SELECCIONADOS

Gracias a ambos por sus grandes aportaciones. Respondiendo a tu pregunta amigo daz es que quiero guardar el valor de los checkbox cuando esta seleccionado y no lo esta porque tengo un formulario donde pinto un array desde MySQL con los alumnos de una escuela y después pinto los checkbox vacíos para que el profesor seleccione quién asistió a clases y quién no, entonces mi idea es que cuando se seleccione el checkbox me envíe a mi tabla de MySQL el '1' y cuando no entonces el '0', para que cuando haga consultas o filtros de quién asistió y quién no, sea más fácil.
Otra cosa daz, me sirvió mucho tu código y lo acabo de probar, funciona bastante bien, sólo que tengo un problema:
cuando selecciono mi checkbox ya asigna el '1' y cuando no también asigna el '0', hasta ahí va todo perfecto, el problema es que no me discrimina a qué alumno corresponde la asistencia.

Código PHP:
Ver original
  1. for($i=0; $i<$n; $i++)
  2. {      
  3. if (!isset($ASISTENCIA[$i])){
  4. $ASISTENCIA[$i]=0;
  5. }
  6. else{
  7. $ASISTENCIA[$i]=1;
  8. }
  9. echo $ASISTENCIA[$i];
  10. }

Por ejemplo:
Si=1
No=0

Alumno Asistencia
José si
Pedro no
María si

Me debería enviar así
si
no
si

Pero me envía así:
si
si
no

No sé que esté haciendo mal, espero me puedas ayudar.
Muchas gracias

Etiquetas: checkbox, mysql
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:11.