1

ここで私は次のことについて話し合いたいと思います:

次のコードのような私のHTMLから:

<html>
<head>
<title>My Form</title>
</head>
<body>
<form id="sample" method="post" action="saveData.php">
Courses:
<input type="checkbox" name="check[]" Value="C++" />C++
<input type="checkbox" name="check[]" Value="PHP"/>PHP
<input type="checkbox" name="check[]" Value="MYSQL" />MYSQL
<input type="checkbox" name="check[]" Value=".Net"/>.Net
Gender:
<input type="radio" name="gen[]" Value="male"/>male
<input type="radio" name="gen[]" Value="female"/>Female
</form>
</body>
</html>

そして、私は次のような出力が欲しいです:

  foreach ($_POST as $key => $val) {
        $actVal .= "'".strtolower($key)."|".strtolower($val)."',";
        $sqlin .= " ".strtolower($key)." VARCHAR(255) , ";
                }

しかし、私はそのオプションでクリックしたような出力を取得しました:

次のように:

-----------------------------------------
male
C++

しかし、私は次のようにそれが必要です:

male,female
C++,PHP,MYSQL,.Net
4

3 に答える 3

1

私はそれを回避する方法を理解することはできません。しかし、別の方法があります。

<input type="checkbox" name="check" value="php" />PHP
<input type="hidden" name="checklist" value="php" />

<input type="checkbox" name="check" value="MySQL" />MySQL
<input type="hidden" name="checklist" value="MySQL" />

チェックボックス/ラジオボタンのすべての値のリストを非表示の入力に保存して、フォームが送信されたときにサーバー側でそれらの値のリストを取得できるようにするという考え方です。

ところで、なぜとにかくそれが必要なのですか?

于 2013-02-04T12:19:00.453 に答える
1

配列になる投稿データをループしているので、要素の1つだけが返されるのはそのためだと思います。

次のようなことを試してみてください。

foreach ($_POST as $key => $val) {
    if ($key == "check" || $key == "gen") { // If this is an array post field
        foreach ($val as $val2) { // We need to loop through again since they're array post fields
            $actVal .= "'" . strtolower($val2) . "'";
        }   
    } else {
        $actVal .= "'".strtolower($key)."|".strtolower($val)."',";
    }
    //$sqlin .= " ".strtolower($key)." VARCHAR(255) , "; // Worry about this separately, should be the same process
}
于 2013-02-04T12:17:58.723 に答える
1

送信する直前に JavaScript を使用して選択済みとしてマークすると、POST はすべての値を送信します。$_POST["check"] は配列です。foreach を使用して、その配列からすべての値を取得します。

于 2013-02-04T12:22:12.193 に答える