Actualizar asistencia con PHP

Estimados,
Mi problema surge al intentar actualizar la asistencia en la base de datos. Les explico: la asistencia se registra utilizando checkbox, los cuales como valor tienen "checked", cosa que cuando recupero la información de mysql, me chequee los que fueron marcados con anterioridad y de esta forma me indique quien estuve presente y quien no.
El punto es que la recuperación de datos funciona sin problema y me muestra quien está presente y quien no, (esa información la inserté manualmente por medio phpMyAdmin).
El código que utilizo para llevar a cabo la actualización es el siguiente:
<?php
require('config/config_inc.php');
require('config/sesion.php');
if(isset($_POST['d1']) &&
   isset($_POST['d2']) &&
   isset($_POST['d3']) &&
   isset($_POST['d4']) &&
   isset($_POST['d5']) &&
   isset($_POST['d6']) &&
   isset($_POST['d7']) &&
   isset($_POST['d8']) &&
   isset($_POST['d9']) &&
   isset($_POST['d10']) &&
   isset($_POST['d11']) &&
   isset($_POST['d12']) &&
   isset($_POST['d13']) &&
   isset($_POST['d14']) &&
   isset($_POST['d15']) &&
   isset($_POST['d16']) &&
   isset($_POST['d17']) &&
   isset($_POST['d18']) &&
   isset($_POST['d19']) &&
   isset($_POST['d20']) &&
   isset($_POST['d21']) &&
   isset($_POST['d22']) &&
   isset($_POST['d23']) &&
   isset($_POST['d24']) &&
   isset($_POST['d25']) &&
   isset($_POST['d26']) &&
   isset($_POST['d27']) &&
   isset($_POST['d28']) &&
   isset($_POST['d29']) &&
   isset($_POST['d30']) &&
   isset($_POST['d31']) &&
   isset($_POST['porcentaje']))
{
    $d1 = $_POST['d1'];
    $d2 = $_POST['d2'];
    $d3 = $_POST['d3'];
    $d4 = $_POST['d4'];
    $d5 = $_POST['d5'];
    $d6 = $_POST['d6'];
    $d7 = $_POST['d7'];
    $d8 = $_POST['d8'];
    $d9 = $_POST['d9'];
    $d10 = $_POST['d10'];
    $d11 = $_POST['d11'];
    $d12 = $_POST['d12'];
    $d13 = $_POST['d13'];
    $d14 = $_POST['d14'];
    $d15 = $_POST['d15'];
    $d16 = $_POST['d16'];
    $d17 = $_POST['d17'];
    $d18 = $_POST['d18'];
    $d19 = $_POST['d19'];
    $d20 = $_POST['d20'];
    $d21 = $_POST['d21'];
    $d22 = $_POST['d22'];
    $d23 = $_POST['d23'];
    $d24 = $_POST['d24'];
    $d25 = $_POST['d25'];
    $d26 = $_POST['d26'];
    $d27 = $_POST['d27'];
    $d28 = $_POST['d28'];
    $d29 = $_POST['d29'];
    $d30 = $_POST['d30'];
    $d31 = $_POST['d31'];
    $porcentaje = $_POST['porcentaje'];
    $sqlUpdate = mysql_query("UPDATE asistencia SET d1='$d1', d2='$d2', d3='$d3', d4='$d4', d5='$d5', d6='$d6', d7='$d7', d8='$d8', d9='$d9', d10='$d10', d11='$d11', d12='$d12', d13='$d13', d14='$d14', d15='$d15', d16='$d16', d17='$d17', d18='$d18', d19='$d19', d20='$d20', d21='$d21', d22='$d22', d23='$d23', d24='$d24', d25='$d25', d26='$d26', d27='$d27', d28='$d28', d29='$d29', d30='$d30', d31='$d31', porcentaje='$porcentaje' WHERE ID = '".$_SESSION['ID']."'", $link) or die (mysql_error());
    header("Location: regAsistOK.php");
}else{
    header("Location: regAsistNO.php");
}
?>
Este código me funciona siempre y cuando no deje ningún campo en blanco, pero no sé cómo hacerlo para que actualice igual habiendo checkboxs no seleccionados, ya que obviamente no siempre va a estar toda la gente presente.

1 respuesta

Respuesta
1
Pues es logico que no ande, dado que el valor de cada check va a ser true, unicamente cuando este checked (en tu if, requieres que todos esten checked).
Yo haría algo como
if(isset($_POST['porcentaje'])){
$i = 1;
for($i = 1; $i < 32; $i++){ 
$d[$i] = $_POST['d'.$i];
}
$sqlUpdate = mysql_query("UPDATE asistencia SET d1='$d[1]', d2='$d[2]', ... porcentaje='$porcentaje' WHERE ID = '".$_SESSION['ID']."'", $link) or die (mysql_error())
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas