3

次のテーブルがあるとします。

<form  action="bla.php" method=post>
<table class="pv-data">
<tr>
<td><input type="text" name="id" size="2" value=1 /></td>
<td><input type="text" name="longitude" size="7"/></td>
<td><input type="text" name="latitude" size="7"/></td>
</tr>
<tr>
<td><input type="text" name="id" size="2" value=2 /></td>
<td><input type="text" name="longitude" size="7"/></td>
<td><input type="text" name="latitude" size="7"/></td>
</tr>
</table>
<input type="submit" name="submit" value="SUBMIT">
</form>

このテーブルの値をphp変数に割り当てたいので、bla.php

$id = $_REQUEST['id'];同じ名前の入力タグが 2 つあるため、最後の値のみを使用した場合 。

同じ名前を持つこれらのタグの 2 つの値を php に要求できますか?

テーブルはそれよりも少し複雑で、動的に行を追加するため、入力タグの名前を変更するように言わないでください:私の実際のコードは次のとおりです: http://jsfiddle.net/CchES/9/

4

4 に答える 4

9

PHP がデータを入力するとき$_POSTに、複数のデータが同じ名前を持ち、その名前が で終わらない場合、配列[]に表示されるのは 1 つだけです。$_POST

名前が で終わるようにフィールドの名前を変更します[]

入力タグの名前を変更するように言わないでください。テーブルはそれよりも少し複雑で、動的に行を追加するからです

動的であること[]は、名前の最後にあることに対する障壁であってはなりません。

本当に名前を変更できない場合は、$_POST完全にバイパスして生データを (経由でphp://input) 解析することは可能かもしれませんが、IIRC は、PHP がデータを取り込むときにそれを破壊し$_POSTます。

于 2013-06-27T13:26:01.950 に答える
7

名前が重複している場合は、配列スタイルの名前を付ける必要があります。

<form  action="bla.php" method=post>
<table class="pv-data">
<tr>
<td><input type="text" name="id[]" size="2" value=1 /></td>
<td><input type="text" name="longitude[]" size="7"/></td>
<td><input type="text" name="latitude[]" size="7"/></td>
</tr>
<tr>
<td><input type="text" name="id[]" size="2" value=2 /></td>
<td><input type="text" name="longitude[]" size="7"/></td>
<td><input type="text" name="latitude[]" size="7"/></td>
</tr>
</table>
<input type="submit" name="submit" value="SUBMIT">
</form>

これを行うと、$_POST['id']$_POST['latitude']、および$_POST['longitude']は値を含む配列になります。

フォーム処理コードは、これらを反復処理できます。

for ($i = 0; $i < count($_POST['id']); $i++) {
  if (isset($_POST['latitude'][$i], $_POST['longitude'][$i])) { // Make sure both are filled in
    // Do stuff with this row of the form
  }
}
于 2013-06-27T13:27:02.300 に答える
0

クイックソリューション:

そのコードで入力タグ名を変更するのは複雑ではありません。これを試してください:

<input type="text" name="id"'+counter+' size="2" value="'+counter+'"/>

そうすれば、id-1、id-2、id-3 などの名前が得られます...

于 2013-06-27T13:28:21.430 に答える
0

さて、動的な行が生成されていることは理解しています。ただし、各行のテキスト ボックスに異なる名前を付けてはいけないという意味ではありません。あなたは間違いなくそれを違うものにすることができます。私はjsfiddleであなたのコードを見ました。追加中は、テーブル内の行数をカウントするだけで、それに応じて +1 して変数に格納できます。そして、この変数をテキスト ボックスの名前に連結します。そのため、ユニットの追加をクリックするたびに、行のテキスト ボックスの名前が異なります。それが正しい解決策です。

于 2013-06-27T13:31:12.450 に答える