Problemet med kryssrutor (som du har noterat) är att de omarkerade inte skickar några data.
Standardtricket för att komma runt detta är...
<input type="hidden" name="field_name" value="0">
<input type="checkbox" name="field_name" value="1">
När kryssrutan är markerad skickas dess värde som det visas senare i dokumentet. Om avmarkerat skickas det dolda indatavärdet.
Du kan sedan helt enkelt kontrollera värdet efter namn
$field = isset($_POST['field_name']) ? $_POST['field_name'] : false;
$dbFlag = $field ? 'Yes' : 'No';
I ditt specifika fall, inkludera page_id
i ingångsnamnet, t.ex.
<input type="hidden" name="likebutton[416]" value="0">
<input type="checkbox" name="likebutton[416]" value="1">
Och i PHP
foreach ($_POST['likebutton'] as $pageId => $likeFlag) {
$dbFlag = $likeFlag ? 'Yes' : 'No';
// update DB
}