myCheck[] non è un semplice campo, è un array di campi, che viene costruito ogni volta in maniera diversa quindi così non hai possibilità di sapere se era stato flaggato o meno, perchè l'indice che ha la prima volta che viene caricata la pagina potrebbe essere diverso dalla seconda.
es.
prima volta
seconda voltacodice:<input name="myCheck[]" type="checkbox" value="vino" /> <input name="myCheck[]" type="checkbox" value="birra" /> <input name="myCheck[]" type="checkbox" value="aranciata" />
quando carichi la pagina la prima volta il valore birra starà nella variabilecodice:<input name="myCheck[]" type="checkbox" value="vino" /> <input name="myCheck[]" type="checkbox" value="cocaCola" /> <input name="myCheck[]" type="checkbox" value="birra" /> <input name="myCheck[]" type="checkbox" value="aranciata" />
$_POST['myCheck'][1]
mentre la seconda volta la troverai su
$_POST['myCheck'][2]
Quindi confrontarlo con un eventuale session risulta impossobile. io risolverei mettendo un indice di sicura stabilità, tipo l'id della tabella aperitivi
a questo punto sai che myCheck[5] sarà sempre la birra e quindi puoi mettere tutto l'array myCheck dentro sessionCodice PHP:<input name="myCheck[<?php echo $row_Rs_portate['id']; ?>]" type="checkbox" value="<?php echo $row_Rs_portate['aperitivi']; ?>" />
e quando crei la pagina puoi confrontarliCodice PHP:$_SESSION['myCheck']=$_POST['myCheck'];
Codice PHP:<form action="preventivo.php" method="post">
<?php do { ?>
<h4>Aperitivi </h4>
<div id="aperitivi">
<?php echo $row_Rs_portate['aperitivi'];?>
<input name="myCheck[<?php echo $row_Rs_portate['id']; ?>]" type="checkbox" <?php echo (isset($_SESSION['myCheck'][$row_Rs_portate['id']])) ? "checked=\"checked\" ":""; ?> value="<?php $row_Rs_portate['aperitivi']; ?>" />
<?php } while ($row_Rs_portate = mysql_fetch_assoc($Rs_portate)); ?>
<input name="" type="submit" />
</form>
</div>![]()
P.S. non so se sia utile avere una sintassi così per il ciclo while, in questo modo anche se la tabella è vuota crea esegue la prima istanza del ciclo, e questo potrebbe creare problemi

Rispondi quotando