postで送信されたすべての変数を挿入する必要があります。これらはそれぞれユーザーを表すチェックボックスでした。
GETを使用すると、次のようになります。
?19=on&25=on&30=on
データベースに変数を挿入する必要があります。
POSTですべての変数を送信するにはどうすればよいですか?コマか何かで区切られた配列または値として?
postで送信されたすべての変数を挿入する必要があります。これらはそれぞれユーザーを表すチェックボックスでした。
GETを使用すると、次のようになります。
?19=on&25=on&30=on
データベースに変数を挿入する必要があります。
POSTですべての変数を送信するにはどうすればよいですか?コマか何かで区切られた配列または値として?
回答:
変数$_POST
は自動的に入力されます。
var_dump($_POST);
内容を見てみてください。
次のように個々の値にアクセスできます。 echo $_POST["name"];
もちろん、これは、フォームが一般的なフォームエンコーディングを使用していることを前提としています(つまり、 enctype=”multipart/form-data”
投稿データが別の形式(JSONやXMLなど)の場合は、次のようにすることができます。
$post = file_get_contents('php://input');
そして$post
生のデータが含まれています。
標準$_POST
変数を使用していると仮定すると、チェックボックスが次のようにチェックされているかどうかをテストできます。
if(isset($_POST['myCheckbox']) && $_POST['myCheckbox'] == 'Yes')
{
...
}
チェックボックスの配列がある場合(例:
<form action="myscript.php" method="post">
<input type="checkbox" name="myCheckbox[]" value="A" />val1<br />
<input type="checkbox" name="myCheckbox[]" value="B" />val2<br />
<input type="checkbox" name="myCheckbox[]" value="C" />val3<br />
<input type="checkbox" name="myCheckbox[]" value="D" />val4<br />
<input type="checkbox" name="myCheckbox[]" value="E" />val5
<input type="submit" name="Submit" value="Submit" />
</form>
[ ]
チェックボックス名で使用することは、選択した値がPHPスクリプトによって配列としてアクセスされることを示します。この場合$_POST['myCheckbox']
、単一の文字列は返されませんが、チェックされたチェックボックスのすべての値で構成される配列が返されます。
たとえば、すべてのチェックボックスをオンに$_POST['myCheckbox']
すると、次の配列で構成されます{A, B, C, D, E}
。値の配列を取得して表示する方法の例を次に示します。
$myboxes = $_POST['myCheckbox'];
if(empty($myboxes))
{
echo("You didn't select any boxes.");
}
else
{
$i = count($myboxes);
echo("You selected $i box(es): <br>");
for($j = 0; $j < $i; $j++)
{
echo $myboxes[$j] . "<br>";
}
}
$_POST
変数からそれらにアクセスできるはずです:
foreach ($_POST as $param_name => $param_val) {
echo "Param: $param_name; Value: $param_val<br />\n";
}
これは非推奨であり、スーパーグローバルに直接アクセスすることは望まれていません(php 5.5以降)
最新のIDEはすべて次のことを教えてくれます。
スーパーグローバルに直接アクセスしないでください。いくつかのフィルター関数を使用します(例
filter_input
)
私たちのソリューションでは、すべてのリクエストパラメータを取得するには、メソッドを使用する必要があります filter_input_array
入力メソッドからすべてのパラメーターを取得するには、次を使用します。
$myGetArgs = filter_input_array(INPUT_GET);
$myPostArgs = filter_input_array(INPUT_POST);
$myServerArgs = filter_input_array(INPUT_SERVER);
$myCookieArgs = filter_input_array(INPUT_COOKIE);
...
今、あなたはそれをvar_dump
またはあなたのforeach
-Loopsで使うことができます
動作しないのは、このメソッドで$ _REQUESTSuperglobalにアクセスすることです。それは常に戻りますNULL
、そしてそれは正しいです。
異なるメソッドを介してすべての入力パラメーターを取得する必要がある場合は、次のメソッドのようにそれらをマージするだけです。
function askForPostAndGetParams(){
return array_merge (
filter_input_array(INPUT_POST),
filter_input_array(INPUT_GET)
);
}
編集:このメソッドの拡張バージョン(要求メソッドの1つが設定されていない場合にも機能します):
function askForRequestedArguments(){
$getArray = ($tmp = filter_input_array(INPUT_GET)) ? $tmp : Array();
$postArray = ($tmp = filter_input_array(INPUT_POST)) ? $tmp : Array();
$allRequests = array_merge($getArray, $postArray);
return $allRequests;
}
なぜこれではないのですか、それは簡単です:
extract($_POST);
このuを使用すると、すべての投稿変数を取得できます
print_r($_POST)