Bạn không có gì ở đây để đặt các giá trị bằng 0. Các hộp không được chọn sẽ đơn giản là không có trong mảng $ _POST.
Bạn sẽ cần tạo một danh sách riêng gồm tên của tất cả các hộp kiểm và chuyển qua các hộp kiểm đó, so sánh chúng với mảng $ _POST.
Chỉnh sửa: Sẽ không viết bất kỳ mã nào, nhưng:
$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));
}
Lưu ý rằng chúng tôi không thực sự cần đến chuỗi mysql_real_escape_string vì chúng tôi biết rằng tất cả các giá trị id đều an toàn, nhưng đó là cách tốt để đề phòng trường hợp ai đó đến sau và bất cẩn thay đổi mảng $ allids.
Chỉnh sửa lại: Giả sử chúng ta không biết id cần tìm.
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));
}