チェックボックスの問題は(あなたが指摘したように)、チェックされていないチェックボックスはデータを送信しないことです。
これを回避するための標準的なトリックは...
<input type="hidden" name="field_name" value="0">
<input type="checkbox" name="field_name" value="1">
チェックボックスをオンにすると、ドキュメントの後半に表示されるように、その値が送信されます。チェックを外すと、非表示の入力値が送信されます。
その後、名前で値を確認するだけです
$field = isset($_POST['field_name']) ? $_POST['field_name'] : false;
$dbFlag = $field ? 'Yes' : 'No';
特定のケースでは、page_id
を含めます 入力名に、たとえば
<input type="hidden" name="likebutton[416]" value="0">
<input type="checkbox" name="likebutton[416]" value="1">
そしてPHPで
foreach ($_POST['likebutton'] as $pageId => $likeFlag) {
$dbFlag = $likeFlag ? 'Yes' : 'No';
// update DB
}