ホームページ >バックエンド開発 >PHPチュートリアル >PHPでデータをバッチで変更するときのinput[type=checkbox]の問題
input[type=checkbox] jsを使って値「On」をデータベースに入力するのに便利な1と0に変換しました
うわー
フォームが複雑すぎるので投稿しません
とにかく、すべてのフィールドの名前を入力しました []
$_POST["blank"] を除いて問題が発生します
更新できないわけではありません、何かがあります更新の順序が間違っています
以下は詳細なテストです。たとえば、ページ上にバッチで変更できるデータが5個あります
1. ID1~5 Set $_POST["blank"] = 1 (チェック)
成功
2. ID1~5 $_POST["blank"] = 0 に設定 (チェックなし)
成功
3. ID 2,3 を $_POST["blank"] = 1 に設定
ID 1 ,2は1になりますが、3は変わりません
4. もう一度試してください... ID 3,4,5を$_POST["blank"] = 1に設定します(事前にすべて0に戻します)
予想どおり、結果として、ID 1,2,3 は空白 = 1 になり、ID4 5 は変更されません
理論的には、PHP は空白 = 1 に設定した項目の数を知っていますが、最終的には top を設定するだけです を 1 に
配列ポインターが間違っているような気がしますが、なぜ他のフィールドは非常に正確かつ正常に更新および変更できるのでしょうか? 最も厄介なのは、その方法がわかっていることです。エラーが発生するのですが原因が分かりません
$('input[type="checkbox"]').change(function(){ this.value ^= 1;});
ディスカッションに返信(解決策)
したがって、0、1 変換を行わせるのではなく、チェックボックスの値を指定して、選択されたチェックボックスを識別する必要があります
checkbox.value は通常はバックアップ オプションのシリアル番号または ID
php はチェックボックスがいくつ選択されているかだけを知っていますが、どのチェックボックスが選択されているかは知りません
したがって、0、1 変換を行わせるのではなく、チェックボックスの値を指定することで、選択されたチェックボックスを識別する必要があります
checkbox.value は通常はバックアップ オプションのシリアル番号またはIDです
SQLを書くときに、新しいページから開くかどうかをユーザーに選択させるためにチェックボックスを使用します
クライアント側で解決できないでしょうか?
if (isset($_POST["edit_menu"])) { $gid =$_POST["gid"]; $sql = ""; $menuCount = count($_POST["id"]); for($i=0;$i<$menuCount;$i++) { $title = $_POST["title"]; $url = $_POST["url"]; $id = $_POST["id"]; $blank = $_POST["blank"]; $sql .= "UPDATE `menu` set title='" . $title[$i] . "', url='" . $url[$i] . "', blank='" . $blank[$i] . "' WHERE id='" . $id[$i] . "' AND gid = '$gid';"; } $stmt = $pdo->exec($sql);}
_blank をデータベースに保存して、フロントに呼び出したいです
チェックボックスの値は配置に使用されます。チェックボックスの値を ID と同じになるように変更するだけです。