grazie m4rko80 della tua attenzione.

Fai il controllo diversamente.... se post diverso da uno allora setti a 0 ( se puo' essere solo 1 o 0).
non è possibile perchè se deseleziono il check la variabile non viene passata in alcun modo. ho già fatto la prova a stampare direttamente quel post con echo $_POST['checkbox1']; e risulta vuota

potresti settare prima tutto a 0 e poi a 1 quelli passati in POST(2 query)
è già così, quindi posso andare da 0 a 1 ma non viceversa

dovresti fare un controllo dell'array a priori prima del ciclo e vedere quali chiavi mancano e settarle a zero se non esistono.
come dicevo prima, se un check non è spuntato il relativo $_POST non viene inviato. quindi, non è che è vuoto, non c'è proprio nell'array.

non riesco....