Das Problem mit Kontrollkästchen (wie Sie bemerkt haben) besteht darin, dass nicht aktivierte keine Daten übermitteln.
Der Standardtrick, um dies zu umgehen, ist...
<input type="hidden" name="field_name" value="0">
<input type="checkbox" name="field_name" value="1">
Wenn das Kontrollkästchen aktiviert ist, wird sein Wert so übermittelt, wie er später im Dokument angezeigt wird. Wenn nicht aktiviert, wird der verborgene Eingabewert übermittelt.
Sie können den Wert dann einfach anhand des Namens überprüfen
$field = isset($_POST['field_name']) ? $_POST['field_name'] : false;
$dbFlag = $field ? 'Yes' : 'No';
Fügen Sie in Ihrem speziellen Fall die page_id
hinzu im Eingabenamen, zB
<input type="hidden" name="likebutton[416]" value="0">
<input type="checkbox" name="likebutton[416]" value="1">
Und in PHP
foreach ($_POST['likebutton'] as $pageId => $likeFlag) {
$dbFlag = $likeFlag ? 'Yes' : 'No';
// update DB
}