ユーザーが決定した入力数を持つフォームからの $_POST データを読み取るシステムをセットアップするにはどうすればよいですか? $_POST[1] などのインデックスを使用できますか? (例: ページの作成/削除、変更の送信、ユーザーが必要と判断した数のページの入力の処理)
4 に答える
フォームで、名前が角括弧で終わる入力変数を作成します。
<input name="lines[]" type="text"><br>
<input name="lines[]" type="text"><br>
<input name="lines[]" type="text"><br>
必要な数だけ追加するか、JavaScript でその場で作成することができます。
フォームが送信されると、データは $_POST の配列として表示されます。
echo $_POST['lines'][0];
echo $_POST['lines'][1];
echo $_POST['lines'][2];
次のようにする必要があります。
foreach($_POST as $k => $v){
// The action you want to perform for each input
}
より高度なソリューションを作成するには、それが正確に何であるかについてもう少し情報が必要だと思います:)
variables[] などの名前を使用してフィールドの配列を作成し、それらを foreach ループでループすることができます。
角括弧で変数を設定すると、それらをループできる配列として設定されます。変数名が必要な場合は、角括弧で囲んで動的に渡すことができます。例えば:
<input type="text" name="variables[variableName-one]" />
<input type="text" name="variables[variableName-two]" />
このメソッドを使用する利点は、foreach ループでキーを設定することにより、配列キー名 (variableName-one など) をコードで使用できることです。に似ている:
foreach($_POST['variables'] as $variableName => $variable){
echo $variableName.' was set as '.$variable;
}
それ以外の場合は、空白のままにして、番号としてアクセスできます。
$_POST['variables'][1]
あなたの質問を完全に理解したかどうかわかりません
foreach ($_POST as $key=>$value) {
doSomething($key,$value);
}
$key で入力名を見つけ、$value でその値を見つけました。もちろん、それをあまり一般化することはできません。たとえば、チェックボックスがあり、そのチェックボックスがチェックされていない場合、投稿配列では取得できません。
name のような配列を持ついくつかの入力がある場合: それらを配列として取得します。
foreach ($_POST as $key=>$value) {
if(is_array($value)){
foreach($value as $key2=>$value2){
doSomethingOther($key,$key2,$value2);
}
} else {
doSomething($key,$value);
}
}
ただし、この方法では、取得できる入力に対して非常に具体的なコードを記述する必要があります。または、入力名を成文化して、それらをどうする必要があるかについてのヒントを得る方法を見つける必要があります。また、1 人のユーザーが送信できる可能性のあるすべての入力を受け入れると、ハイジャックのリスクにさらされる可能性があります。