Scusa Nicola, effettivamente per essere il più breve possibile forse mi sono spiegato molto male.
Per ogni utente che si iscrive, viene creta una tabella nome_cognome con colonne ID e BOX di 83 righe.
codice:
$query = "CREATE TABLE ".$userTable." (id INT (2) UNSIGNED not null AUTO_INCREMENT PRIMARY KEY, box SET ('on','off') not null)";
mysql_query($query,$conn) or die ("Errore nella query2: " . mysql_error());
for($i=1;$i<=83;$i++) {
$query = "INSERT INTO ".$userTable." VALUES ('$i','off')";
mysql_query($query,$conn) or die ("Errore nella query: " . mysql_error());}
session_start();
$_SESSION['userTable'] = $userTable;
La colonna ID è UNSIGNED auto_inrement mentre quella box ha valore SET ('on','off') da trasmettere alle checkbox in questo modo.
codice:
<? session_start();
$userTable = $_SESSION['userTable'];
$conn.. $query.. etc.
<form method="post" name="box[]" action="insertforme.php">
<table>
<?
while ($row = mysql_fetch_array($res))
{ ?>
<tr>
<td class="tdBox"><input type="checkbox" name="box[]" <? echo 'value="'.$row[id].'" '; if($row['box'] == "on"){echo 'checked';} ?> /></td>
<td class="tdNum"><? print "$row[id]" ?></td>
<td class="tdNome"><? print "$row[NomeForma]" ?></td>
<td class="tdTrad"><? print "$row[Traduzione]" ?></td>
<td class="tdTipo"><? print "$row[TipoForma]" ?></td>
</tr>
<? } ?>
</table>
<input type="submit" name="submit" value="Invia">
I $row[] non appartenenti alle checkbox li stampo tramite "SELECT FROM" di 2 tabelle, tabellaUtente e la lista completa delle opzioni, incrociate con WHERE A.id = B.id, ma questo non ha importanza.
Una volta che l'utente ha scelto le checkbox fra le 83, faccio l'UPDATE tramite l'array $_POST[box] che contiene tutti i valori delle checkbox scelte per ex. (3,5,8,9,13,45,68,81).
nella pagina insert.php mi connetto alla tabella utente e faccio l'update in questo modo
codice:
<? session_start();
$userTable = $_SESSION['userTable'];
$conn.. $query.. etc. //connessione al database e alla tabella utente passata tramite la variabile $_SESSION[userTable]
$box = $_POST[box]; //array delle checkbox
$i = 1;
$a = 0;
while(($row = mysql_fetch_array($res)) && ($i<=83)) {
if($row[id] == $box[$a]) {
$query = "UPDATE $userTable SET box = 'on' WHERE id = $box[$a]";
mysql_query($query,$conn) or die ("Errore nella query UPDATE on: " . mysql_error());
$a++;
}
else {
$query = "UPDATE $userTable SET box = 'off' WHERE id = '$i'";
mysql_query($query,$conn) or die ("Errore nella query UPDATE off: " . mysql_error());}
$i++;
}
?>
In questo modo, tramite while itero il paragone fra le 83 righe ID dell'intera tabella e i valori richiamati dall'array $_POST[box], quando sono uguali allora la riga corrispondete prende il valore di SET ('on').
Altrimenti la variabile $i (else) che viene incrementata ad ogni ciclo modifica il valore di SET su ('off') di modo che se viene tolta una checkbox dall'utente nei giorni successivi, questa non è presente nell'array $_POST[box], e $i assumendo il suo valore la convertirà.
:master: