Ciao Daniele,
intanto ti consiglierei di utilizzare funzioni non deprecate per il tuo script.
Un flusso comunemente utilizzato (come riportato da php.net) è questo:
[PHP]if (!$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')) {
echo 'Could not connect to mysql';
exit;
}
if (!mysql_select_db('mysql_dbname', $link)) {
echo 'Could not select database';
exit;
}
$sql = 'SELECT foo FROM bar WHERE id = 42';
$result = mysql_query($sql, $link);
if (!$result) {
echo "DB Error, could not query the database\n";
echo 'MySQL Error: ' . mysql_error();
exit;
}
while ($row = mysql_fetch_assoc($result)) {
echo $row['foo'];
}
mysql_free_result($result);[/PHP]
Puoi anche ottenere le righe come oggetti con mysql_fetch_object.
Ti consiglio anche di validare sempre l'input (o almeno filtrarlo), perché l'SQL injection può causarti parecchi guai.
Quanto al tuo problema:
La tua supposizione che un campo vuoto valga zero è errata, e per questo il deseleziona non può funzionare. Un campo senza check vale null e non viene proprio passato.
La soluzione rapida è crearti un campo hidden con lo stesso name che valga zero, appena prima del campo:
[PHP]echo('<input type="hidden" name="myCheck['.$id.']" value="0" /><input type="checkbox" checked="checked" id="mycheck" value="'.$id.'" name="myCheck['.$id.']" class="regular-checkbox big-checkbox" />');[/PHP] In questo caso se il campo checkbox non è selezionato, il campo hidden viene passato. Se invece la checkbox è selezionata, il valore dell'hidden viene sovrascritto dalla checkbox e troverai il valore corretto nella pagina di destinazione.
Un'altra supposizione errata è che il campo selezionato passi 1: in realtà una checkbox selezionata passa il valore del value (nel tuo caso $id). E' il comportamento che cercavi?
Una soluzione più pulita consiste nel crearti un vettore dei possibili id, con i suoi value (impostando un default), poi fare un merge del vettore di default con quello che ti viene passato da myCheck (o un foreach sul vettore di default e se il valore è cambiato lo sovrascrivi). Attenzione però a inserire nella query solamente id previsti e non accettare qualsiasi cosa venga messa dentro.
Luca