Ciao,
forse è un problema stupido ma oggi... dunque ho questo problema: in un form tra le altre cose ho un array di checkbox
codice HTML:
<input type="checkbox" name="visibile[1]" id="visibile1" value="1" checked="checked"><label for="visibile1">&nbsp;Nascondi/Rendi visibile</label>
<input type="checkbox" name="visibile[2]" id="visibile2" value="1"  checked="checked"><label  for="visibile1">&nbsp;Nascondi/Rendi visibile</label>
<input type="checkbox" name="visibile[3]" id="visibile3" value="1"  checked="checked"><label  for="visibile1">&nbsp;Nascondi/Rendi visibile</label>
<input type="checkbox" name="visibile[4]" id="visibile4" value="1"  checked="checked"><label  for="visibile1">&nbsp;Nascondi/Rendi visibile</label>
L'array di checkbox viene costruito prendendo i dati da un database, il fatto di essere checked o unchecked dipende solo dal valore in un campo del database, in questo caso sono tutti checked per caso.
Ma ovviamente posso metterli ad unchecked a mano cliccandoci su col mouse, diciamo che faccio questo per fare l'upgrade dei valori nel database, fin qui nulla di strano!
Diciamo che invio il dato al PHP per fare l'update e qui iniziano i problemi, ovvero se metto un valore in unchecked, questo non mi apparirà nell'array.
Checkbox tutti checked
codice:
array(4) {   [1]=>   int(1)   [2]=>   int(1)   [3]=>   int(1)   [4]=>   int(1) }
Checkbox con un valore unchecked ( il primo )
codice:
array(3) {   [2]=>   int(1)   [3]=>   int(1)   [4]=>   int(1) }
Come si vede manca la chiave 1.
Ora dovendo fare l'update di un database dovrei ricreare il dato mancante per metterlo a 0 (zero), come faccio?
Devo creare un semplice algoritmo che mi legge le chiavi ( che sono tutte numeriche ) e inserisce i valori mancanti; potrei anche avere più valori unchecked, anzi potrei averli tutti e quindi avrei un array vuoto!

Come faccio?
Tenete presente che la query di update avviene tramite PDO e i valori sono "parsati" tramite bindParam() se manca il valore di riferimento da errore, quindi ci deve essere per forza ( zero o uno in questo caso ).