Resulta que si ningun checkbox esta selecionado no se envia ningun dato por lo tanto el $_POST['lista'] no se define y no contendra nada.
Lo unico que se me ocurre es que pongas un texbox hidden que se encargue de guardar las ids.
quedaria mas o menos asi
codigo para lista
<?php
conectar();
$result=mysql_query("select * FROM jqcalendar where Subject='$ficha-$codigo'"); desconectar();
{
echo"
<tr>
<td>$contador</td>
<td>$row[1]</td>
<td>$row[4]</td>
<td>$row[5]</td>
<td>$row[2]</td>";
if($row[7]==1){
echo '<td><input name="lista[]" type="checkbox" value="'.$row[0].'" checked="checked"/>';
echo '<input type="hidden" name="listah[]" value="'.$row[0].' checked="cheked"/></td>';
} else{
echo"<td><input name=lista[] type=checkbox value=$row[0] />";
echo '<input type="hidden" name="listah[]" value="'.$row[0].' checked="cheked"/></td>';
}
}
?>
codigo que modifica<?php
include("conexion.php");
conectar();
if(isset($_POST['lista'])) { //incluir conexión a la bdd
foreach ($_POST['lista'] as $v) { mysql_query("UPDATE jqcalendar SET asistencia='1' where Id='$v' ");} } else {
//aqui es donde estoy intentando hacer que si se deselecciona un checkbox que
// ya estaba seleccionado me cambie el valor a cero pero no me sale
foreach ($_POST['listah'] as $v) { mysql_query("UPDATE jqcalendar SET asistencia='0' where Id='$v' ");} desconectar();
?>
Saludos