Тук нямате нищо, което задава стойностите на нула. Кутиите, които не са отметнати, просто ще отсъстват от масива $_POST.
Ще трябва да направите отделен списък с имената на всички квадратчета за отметка и да преминете през тях, като ги сравнявате с масива $_POST.
Редактиране: Нямаше да пиша никакъв код, но:
$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));
}
Обърнете внимание, че всъщност нямаме нужда от mysql_real_escape_string тук, тъй като знаем, че всички стойности на id са безопасни, но това е добра практика само в случай, че някой се появи по-късно и небрежно промени масива $allids.
Редактиране отново: Да предположим, че не знаем какви идентификатори да търсим.
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));
}