ホームページ >バックエンド開発 >PHPチュートリアル >PHPでデータをバッチで変更するときのinput[type=checkbox]の問題

PHPでデータをバッチで変更するときのinput[type=checkbox]の問題

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-23 13:43:401004ブラウズ

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;});


ディスカッションに返信(解決策)

チェックが入っていないチェックボックスは送信されません!

php はチェックボックスがいくつ選択されているかだけを知っていますが、どのチェックボックスが選択されているかは知りません

したがって、0、1 変換を行わせるのではなく、チェックボックスの値を指定して、選択されたチェックボックスを識別する必要があります
checkbox.value は通常はバックアップ オプションのシリアル番号または ID

チェックされていないチェックボックスは送信されません。

php はチェックボックスがいくつ選択されているかだけを知っていますが、どのチェックボックスが選択されているかは知りません

したがって、0、1 変換を行わせるのではなく、チェックボックスの値を指定することで、選択されたチェックボックスを識別する必要があります
checkbox.value は通常はバックアップ オプションのシリアル番号またはIDです

SQLを書くときに、新しいページから開くかどうかをユーザーに選択させるためにチェックボックスを使用します


でユーザーによって変更されるためです。リストでは、このオプション(チェックボックスを使用)しかないようです

1/0 が使用されていない場合、受け取るのは On / 'Null' です

結果は 1/0 と同じです

他にはありますか解決策はありますか?

クライアント側では解決できないでしょうか? チェックを入れた場合は、対応するリンクの属性に target="_blank" と記述してください



クライアント側で解決できないでしょうか?

チェックすると、対応するリンクの属性に target="_blank" を書き込みます。

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 をデータベースに保存して、フロントに呼び出したいです


バックグラウンドでの一括変更ページです。

問題は、チェックボックスの値を変更しても、それがチェックされていない限り、HTML ($_POST) は処理のために PHP に値を送信しないことです



兄弟の小言は正しいです、
これはチェックボックスの使用方法ではありません。はい、 選択されたかどうかで値が変わるわけではありませんが、選択された後、ラベルにはchecked="checked"属性が付きます。


チェックボックスの値は配置に使用されます。チェックボックスの値を ID と同じになるように変更するだけです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。