आपके पास यहां कुछ भी नहीं है जो मानों को शून्य पर सेट करता है। चेक नहीं किए गए बॉक्स केवल $_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));
}