0

私は次のようなhtmlを持っています:

<form method="post" id="volunteer" name="volunteer" action="<?php echo $PHP_SELF;?>">   
<select name="Rank[]" id="Rank">
    <option value="0">Please select</option>
    <option value="High Priority">High Priority</option>
    <option value="Medium Priority">Medium Priority</option>
    <option value="Low Priority">Low Priority</option>
</select>
</br>

<select name="Rank[]" id="Rank">
    <option value="0">Please select</option>
    <option value="High Priority">High Priority</option>
    <option value="Medium Priority">Medium Priority</option>
    <option value="Low Priority">Low Priority</option>
</select>
</br>

<select name="Rank[]" id="Rank">
    <option value="0">Please select</option>
    <option value="High Priority">High Priority</option>
    <option value="Medium Priority">Medium Priority</option>
    <option value="Low Priority">Low Priority</option>
</select>
<input type="submit" value="Submit">
</form>

PHPコードビハインド、すべてのコントロールからすべてのランク値を取得しようとしています:

$rank = $_POST['Rank'];

echo "<pre>";
print_r($rank);
echo "</pre>";

$output = "";
foreach($rank as $selected_value)
{
    if($selected_value != "0") {
        $output .= $selected_value . "<br />";
    }
}

しかし、最初に送信すると、私の$outputは空です。ブラウザで「戻る」をクリックしてフォームを再送信すると、実際には空ではない配列と出力が得られます。

ご意見をお聞かせください!

4

6 に答える 6

0

私は実際にこれをテストしました:

<?php
    if (isset($_POST['Rank'])) {
        $rank = $_POST['Rank'];
        echo "<pre>";
        print_r($rank);
        echo "</pre>";

        $output = "";
        foreach($rank as $selected_value)
        {
            if($selected_value != "0") {
                $output .= $selected_value . "<br />";
            }
        }
            echo $output;
    }

?>

そして、それは実際に私のために働きます。

私が行った唯一の変更はこれです:

<form method="post" id="volunteer" name="volunteer" action="./">

ただし、これはおそらくあなたの場合ではありません。

次のようにアクションを変更してみてください。

  1. スクリプトが「index.php」または一般的にメイン ページの場合は、「./」を試してください。
  2. うまくいかないかもしれないと思っても、"" を試してみてください。
  3. 「myscript.php」のようにページ名を付けます。

問題は確かにそこにあります。ディレクトリの構造を教えてください。ファイルはどこにありますか? htdocs でのファイルの位置は?

ps:私の出力はこれです:

Array
(
    [0] => Medium Priority
    [1] => High Priority
    [2] => Medium Priority
)
Medium Priority
High Priority
Medium Priority
于 2013-09-16T16:48:12.493 に答える
0

action=""次のように、php コードがあるファイルの名前を書き込んでみてください。

<form method="post" id="volunteer" name="volunteer" action="name-of-your-php-file.php"> 
于 2013-09-16T16:40:22.763 に答える
0

これを試したところ、私のマシンで動作します。ファイルの名前は sample.php です おそらくコピーして貼り付けて、これが機能するかどうかを確認してください

 <?php
if(isset($_POST["Rank"]))
{
    $rank = $_POST['Rank'];
    $output = "";
    foreach($rank as $selected_value)
    {
        if($selected_value != "0") {
            $output .= $selected_value . "<br />";
        }
    }
    echo $output;
}
?>
<form action="sample.php" method="post">
<select name="Rank[]" id="Rank">
    <option value="0">Please select</option>
    <option value="High Priority">High Priority</option>
    <option value="Medium Priority">Medium Priority</option>
    <option value="Low Priority">Low Priority</option>
</select>
</br>

<select name="Rank[]" id="Rank">
    <option value="0">Please select</option>
    <option value="High Priority">High Priority</option>
    <option value="Medium Priority">Medium Priority</option>
    <option value="Low Priority">Low Priority</option>
</select>
</br>

<select name="Rank[]" id="Rank">
    <option value="0">Please select</option>
    <option value="High Priority">High Priority</option>
    <option value="Medium Priority">Medium Priority</option>
    <option value="Low Priority">Low Priority</option>
</select>
<input type="submit" value="submit" />
</form>
于 2013-09-16T16:49:40.657 に答える
0

さて、先に進んで自分のサーバーでテストしました。それは正常に動作します。したがって、個人的に考えられる問題は次のとおりです。

1) フォームの仕組みを誤解しています。ページを最初にロードしたとき、$_POST['Rank'] 変数は入力されないことに注意してください。データを送信する場合にのみ、$_POST['Rank'] グローバル変数が入力されます。

$output2)サンプルコードで変数を実際に出力していません。これは Stack Overflow の単なる省略かもしれませんが、文字列化された出力を見たい場合は、これを行う必要があります。

3) ID が特定のブラウザのデータを台無しにしている可能性があります。HTML要素で一意になるように変更します

于 2013-09-16T16:51:07.827 に答える
0

コメント セクションで @koala_dev が示唆しているように、ID の「ランク」を一意に変更すると問題が解決します。

于 2013-09-16T16:51:16.380 に答える