1

このコード行を使用して、選択したすべてのチェックボックスの値をデータベースに追加します。

    // ADD ALL TYPES TO PRODUCTIONLOG_TYPE TABLE
    $x=1;
    $values=array();
    foreach($_POST['id'] as $x)
    {
        $AddToListQuery = "
                        INSERT INTO
                        productionlog_type
                       (productionlogid, typeid)
                        VALUES
                       ('" . mysql_real_escape_string($_GET['productionlog']) . "', '". mysql_real_escape_string($x) ."')
                       ";
        mysql_query($AddToListQuery)or die("query fout " . mysql_error() );
    }

これを行うのは、これがデータベースにすでに存在する場合にチェックされたチェックボックスをエコーアウトできるようにするためです。

問題は、ユーザーがチェックボックスをオフにしてフォームを送信すると、値が渡されないということです。したがって、データベースから削除できません...チェックボックスがオンのままになっていることを意味します。

これについて私は何ができますか?

4

1 に答える 1

2

どのチェックボックスが返されるかがわかっている場合は、何か知っているチェックボックスを除外して、チェックされていないチェックボックスだけを残すことができます。

リクエストを送信する前に、たとえば JavaScript を使用してページの処理を確認することもできます。

または、PHP スクリプトで受け取る必要があるすべてのチェックボックスを含む別の隠し変数をフォームに渡すことができます。例えば:

<input type="hidden" value="id_1,id_2,id_3" />

PHP スクリプトでこれを受け取ると、どの ID (チェックボックスの) が期待されているかがわかります。


編集

あなたが持っている場合:

<form method="POST">
    <input type="hidden" name="checks" value="id1,id2" />
    <input type="checkbox" name="id1" checked="checked" />
    <input type="checkbox" name="id2" />
</form>

そしてPHPで:

$arr = split(",", $_POST["checks"]);
foreach ($arr as $x){
    if(isset($_POST[$x])){
        // Add or update
    }else{
        // Remove
    }
}

注: 私はコードをテストしていませんが、それがどのように機能するかを理解するためだけに

于 2012-12-18T11:20:50.370 に答える