Du har intet her, der sætter værdierne til nul. Bokse, der ikke er markeret, vil simpelthen være fraværende fra $_POST-arrayet.
Du skal lave en separat liste over navnene på alle afkrydsningsfelterne og cykle gennem dem og sammenligne dem med $_POST-arrayet.
Rediger: Havde ikke tænkt mig at skrive nogen kode, men:
$allids = array('id1','id2','id3');
foreach ($allids as $oneid) {
$val = (int) isset($_POST[$oneid]); // will be 0 or 1
mysql_query("UPDATE istable SET showPP = $val WHERE id = ".mysql_real_escape_string($oneid));
}
Bemærk, at vi ikke rigtig har brug for mysql_real_escape_strengen her, da vi ved, at alle id-værdier er sikre, men det er god praksis, hvis nogen kommer senere og skødesløst ændrer $allids-arrayet.
Rediger igen: Antag, at vi ikke ved, hvilke id'er vi skal kigge efter.
mysql_query("UPDATE istable SET showPP = 0");
foreach ($_POST as $oneid=>$nothing) {
mysql_query("UPDATE istable SET showPP = 1 WHERE id = ".mysql_real_escape_string($oneid));
}