0

タブ区切りファイルを表示する PHP プログラムを作成しました。これの目的は、ユーザーが行を表示し、各レコードの行にあるチェックボックスをオンにして、必要な行を選択できるようにすることです。送信を押した後、値を表示する PHP プログラムがありますが、問題は最後の行の ID のみが渡されることです。ただし、ユーザーが送信ボタンを押すと、チェックされた行のすべての値が表示されます。

   process_form.php?download=5108&download=5110&download=5114

これを process_form.php でどのように解析すればよいですか? $_POST と $_REQUEST の var_dump を実行しましたが、最後の値である 5114 しか表示されません。ほとんどの場合、フォーム プログラマーは入力フィールドごとに 1 つの値しか取得できませんが、次の場合はどうなるでしょうか。記録が多い?すべてが独自の「名前」を持つべきではないようです。

<td align=center><input type="checkbox" name="download" value="<?php echo $row['ID']; ?>"></td>

I'm doing something wrong here, but I'm not sure what. Is there a way to pass an array (I'm guessing) of IDs? Or should I be looking at parsing the URL of ?download=5108&download=5110&download=5114 because it has all the values I need there? If so, how do I do that? Thanks!

4

2 に答える 2

1

これが私の解決策です:

<td align=center><input type="checkbox" name="download[]" value="<?php echo $row['ID']; ?>"></td>

download が download[] になったことに注意してください。これにより、フォームを処理するために PHP プログラムに渡される配列が作成されます。

次に、このデモ PHP コードを使用して、配列にアクセスできました。

$my_array = ($_REQUEST["download"]);
print_r($my_array);
echo "<P>";
foreach ($my_array as $value)
{
    echo $value . "<BR>";
}
于 2013-05-03T10:02:46.583 に答える
-1

値の代わりにrowID名前を識別するためにyour を使用したいと思います。<input>

<td align=center><input type="checkbox" name="download_<?php echo $row['ID']; ?>" value="1"></td>

次に、リクエスト配列を次のように処理できます。

foreach( $_REQUEST as $key => $value ) {
  if( preg_match('/^download_([0-9]+)$/', $key, $reg ) {
    $rowId = $reg[1];  // Your row ID
    $isChecked = $value;  // State of checkbox 
  }
}

行 ID は、正規表現を使用して変数名から解析されます。

編集: コメントで述べたように、これはチェックボックスの配列を読み取る最も簡単な方法ではありません。最も簡単なのは、チェックボックスに名前を付けてdownload[]、この配列を PHP で解析することです。ただし、これはより普遍的です。たとえば、チェックボックスではなく入力テキストの配列を取得する必要がある場合です。

于 2013-05-03T09:44:02.637 に答える