Foros del Web » Programando para Internet » PHP »

Identificar a que id corresponde un array de Checkbox

Estas en el tema de Identificar a que id corresponde un array de Checkbox 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. Lo que necesito es guardar el valor ...
  #1 (permalink)  
Antiguo 25/07/2012, 12:19
 
Fecha de Ingreso: marzo-2012
Mensajes: 84
Antigüedad: 12 años, 8 meses
Puntos: 3
Identificar a que id corresponde un array de Checkbox

Que tal amigos, antes que nada les agradezco su interés y ayuda que siempre proporcionan en el foro.
Lo que necesito es 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.
Hasta ahorita 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 o identifica a qué alumno corresponde la asistencia.

Por ejemplo (Si=1, No=0):

Alumno Asistencia
José 1
Pedro 0
María 1

Me debería enviar así
1
0
1

Pero me envía así:
1
1
0

No sé que esté haciendo mal, espero me puedan ayudar.

Muchas gracias

Código del 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='".$row_asist[3]."'></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 (CONEXION_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. if (!isset($ASISTENCIA[$i])){
  16. $ASISTENCIA[$i]=0;
  17. }
  18. else{
  19. $ASISTENCIA[$i]=1;
  20. }
  21.    
  22. $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);
  23.  
  24. if (!$insertar) {
  25. die("Fallo en la insercion de registro en la Base de Datos: " . mysql_error());
  26.  
  27. }
  28. }
  29. mysql_close($conexion);
  30.  
  31. echo '<script>alert("Los datos han sido almacenados en la base de datos");</script>';
  32.         echo '<SCRIPT LANGUAGE="javascript">
  33.        location.href="MILISTA_BD_ASIST.php";
  34.        </SCRIPT>';
  35.  
  36.  
  37.  
  38.  
  39. ?>
  #2 (permalink)  
Antiguo 25/07/2012, 12:22
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Identificar a que id corresponde un array de Checkbox

los cheks sin marcar simplemente NO se envían, por lo que tienes que usar isset() y por ende en tus checks debes de colocar el indice de una vez, ejemplo:

<input type='hidden' name='ID_GRUP[1]' id='ID_GRUP1' value='1' />
<input type='hidden' name='ID_GRUP[2]' id='ID_GRUP2' value='1' />
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 25/07/2012, 12:29
 
Fecha de Ingreso: marzo-2012
Mensajes: 84
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Identificar a que id corresponde un array de Checkbox

Que tal amigo, gracias por tu sugerencia. Si te das cuenta en mi código estoy usando isset () para asignar tanto al checkbox 'seleccionado' como el 'no seleccionado' y me funciona perfectamente, sin embargo no me toma en cuenta el ID y cuando hago el INSERT a mi base de datos me pone siempre primero los seleccionados y después los que no seleccioné, entonces si por ejemplo el primer alumno es el que falto y el segundo asistió, en la BD me pone en el primer alumno 1 (seleccionado - sí asistió) y luego 0 (no seleccionado - no asistió) cuando debería ser al revés.
  #4 (permalink)  
Antiguo 25/07/2012, 12:47
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Identificar a que id corresponde un array de Checkbox

por ello le digo que debe generar los NAME de los input con el índice, debido a que si sólo deja los corchetes [], llegarán en secuencia alterando el resultado, si le coloca los indices no importa cuantos estén desmarcados, no se altera.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 25/07/2012, 13:19
 
Fecha de Ingreso: marzo-2012
Mensajes: 84
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Identificar a que id corresponde un array de Checkbox

Es que el problema sería que el número de checkbox dependen del número de alumnos, no tengo un número predefinido puesto que puede variar aumentar o disminuir y por eso los pinto en un array desde una consulta a mi BD de MySQL.

Código PHP:
Ver original
  1. <input type='checkbox' name='ASIST[]' value='".$row_asist[3]."'>

Traté de hacer un for pero no me resultó porque por ejemplo: si tengo 3 alumnos entonces tengo 3 checkbox, uno para cada uno, pero con el for me pinta 3 checkbox para el primer alumno, 3 para el segundo y 3 para el tercero, es decir, 9 checkbox:

Código PHP:
Ver original
  1. for ($i=0;$i<3;$i++) {
  2.  
  3. echo "<input type='checkbox' name='ASIST[$i]' id='ASIST' value='".$row_asist[3]."'>;
  4.  
  5. }
  #6 (permalink)  
Antiguo 25/07/2012, 13:43
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Identificar a que id corresponde un array de Checkbox

¿y dicha tabla no tiene una PK?, además no es necesario un for si usas una variable y la incrementas a cada iteración del ciclo
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #7 (permalink)  
Antiguo 25/07/2012, 14:01
 
Fecha de Ingreso: marzo-2012
Mensajes: 84
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Identificar a que id corresponde un array de Checkbox

Si, el ID_ALUMNO es la primary key en mi tabla de MySQL, de hecho mis demás datos como ALUMNO y FECHA DE ASISTENCIA pasan a mi BD sin ningún problema, respetan el ID, pero no sé porque para los checkbox no lo hace.
  #8 (permalink)  
Antiguo 25/07/2012, 14:37
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Identificar a que id corresponde un array de Checkbox

ya le indique la razón, los check's no marcados no se envían, por lo tanto si tengo 3 registros y solo selecciono el check del ultimo, me llegará como primero, porque a php lo que le llega es el name[] y tiene que colocar por defecto que inicia de 0, en cambio los otros campos llegan normal y no hay huecos

francamente no veo para que complicarse tanto, haga un var_dump($_POST); y compruébelo
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

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 22:22.