Anda tidak memiliki apa pun di sini yang menetapkan nilai ke nol. Kotak yang tidak dicentang akan absen dari larik $_POST.
Anda harus membuat daftar terpisah dari nama semua kotak centang dan menelusurinya, membandingkannya dengan larik $_POST.
Sunting: Tidak akan menulis kode apa pun, tetapi:
$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));
}
Perhatikan bahwa kita tidak benar-benar membutuhkan mysql_real_escape_string di sini karena kita tahu bahwa semua nilai id aman, tetapi ini adalah praktik yang baik untuk berjaga-jaga jika seseorang datang kemudian dan dengan sembarangan mengubah array $allids.
Edit lagi: Misalkan kita tidak tahu id apa yang harus dicari.
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));
}