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 值:

$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

我刚刚尝试过,它可以在我的机器上运行。文件名是 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

尝试制作

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

我已删除 PHP_SELF

并更改提交按钮

<input type="submit" value="Submit" name="submit_btn">

我希望这会奏效

于 2013-09-16T16:35:28.420 回答
0

好的,我已经在我自己的服务器上进行了测试。它工作正常。因此,以下是您个人可能遇到的问题:

1)您误解了表单的工作方式。请记住,当您第一次加载页面时,不会填充$_POST['Rank'] 变量。只有当您提交数据时,才会填充 $_POST['Rank'] 全局变量。

2)您实际上并没有$output在示例代码中输出变量。这可能只是 Stack Overflow 的一个遗漏,但如果您想查看您的字符串化输出,那么您需要这样做。

3) ID 可能会弄乱特定浏览器的数据。将它们更改为在 HTML 元素上是唯一的

于 2013-09-16T16:51:07.827 回答
0

正如@koala_dev 在评论部分所建议的那样,将 id 的“等级”更改为唯一确实可以解决问题。

于 2013-09-16T16:51:16.380 回答
0

尝试action=""在您的 php 代码所在的文件名上写下,如下所示:

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