HTML/JavaScript は次のとおりです。
<form method = "post" style="display: inline;" name="thisform<?php echo $employee->id; ?>">
<input type="hidden" name="user" value="<?php echo $employee->id; ?>" />
<input type="hidden" name="auto" value="<?php echo $employee->stay_live; ?>" />
<h3><input type="checkbox" name="stay_live" onclick="document.forms.thisform<?php echo $employee->id; ?>.submit();" <?php if ($employee->stay_live == '1') { echo "checked"; } ?> title="Click to Stay Live Every Day" /> <?php echo $employee->name; ?>
</form>
ここにあるPHP
:
<?php
if(isset($_POST['stay_live'])) {
$user=$_POST['user'];
$auto=$_POST['auto'];
if ($auto == 1) {
$sql = "UPDATE users SET stay_live = 0 WHERE id = '{$user}';";
}
if ($auto != 1) {
$sql = "UPDATE users SET stay_live = 1 WHERE id = '{$user}';";
}
mysqli_query($dbconnection, $sql);
}
?>
フォームにコードが表示onclick
されると、フォームが自動送信されて PHP が実行されますPOST
。ただし、がチェックonclick
されていない場合にのみ機能しcheckbox
ます。チェックされている場合、画面は更新されたかのように更新されますが、POST は送信されません。
要約すると、ボックスがチェックされておらず、設定する必要がある場合、すべてが期待どおりに機能します。しかし、それを UNSET するには、サーバー関数は決して呼び出されません。誰でも理由がわかりますか?
注: これはテスト コードであるため、SQL インジェクションについてはコメントしないでください。