1

私は2つのファイルmain.phpdownload.php.

main.php

echo"<form action='download.php' method='post'>"
for(i = 0; i < 10; i++){
    echo"<input type='submit' name='$i'>";
}

download.php、どの名前のボタンが押されたか知りたいのですが? (ファイルをダウンロードするには 1 から 10 まで)、download.php でそれを使用してファイルをダウンロードできるようにします。

$_POST["$i"] を使用しようとしましたが、失敗しました。

$i がランダムなファイル名の場合はどうなりますか?

どうも!

完全なコード

main.php:http://codepad.org/4zXPhqFy

4

3 に答える 3

1

ループで$_POST経由してアクセスします。$key => $valueあなたが名前を知っている他の値を除外します (他の値がある場合)。

foreach ($_POST as $key => $value) {
  // Look for form keys not among other known ones
  if (!in_array($key, array('other','known','input','names')) {
    echo "You clicked $key";
  }
}

または、ctype_digit()ポストキーで使用して、そこにある可能性のある他の文字列キーを除外して、数値かどうかを判断します。

foreach ($_POST as $key => $val) {
  if (ctype_digit($key)) {
    echo "You clicked $key";
    // Access it via $_POST[$key]
  }
}

HTML5 を使用している場合を除き、name属性は数字ではなく文字で始める必要があることに注意してください。HTML5 を使用している場合、name.

于 2012-06-29T16:37:37.673 に答える
1

まず、提出物の名前を数字ではなく文字で始める必要があります。また、1 から 10 までのボタンが必要な場合は$i、0 ではなく 1 から開始する必要があります。

これを試してください:

main.php

echo '<form action="download.php" method="post">';

for( $i = 1; $i <= 10; $i++){
    echo '<input type="submit" name="button[' . $i . ']" value="Send" />';
}

エコー ''

ダウンロード.php

if( isset($_POST['button']) )
{
    $button = key($_POST['button']);

    echo 'Button ' . $button . ' was clicked';
}
于 2012-06-29T16:46:12.063 に答える
1

ここに別の解決策があります

ボタンを作る

for( $i = 1; $i <= 10; $i++){
  echo '<input type="submit" name="button[' .  chr($i+64) . ']"/>';
}

任意のテキストにできることがわかるように、chrを実行しました

どれが押されたかを調べる

echo 'button ' . key($_POST['button']) . ' was pressed';

この方法の利点は、押されたボタンを見つけるためにループが必要ないことです

于 2012-06-29T17:18:27.403 に答える