获取第一次提交时返回空数组的控件数组

时间:2013-09-16 16:22:36

标签: php html arrays

我有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 为空。如果我在浏览器上单击“返回”并重新提交表单,我实际上得到的是非空数组和输出。

请指教!

6 个答案:

答案 0 :(得分:0)

尝试制作

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

我已删除PHP_SELF

然后更改提交按钮

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

我希望这会起作用

答案 1 :(得分:0)

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

<form method="post" id="volunteer" name="volunteer" action="name-of-your-php-file.php"> 

答案 2 :(得分: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”。
  4. 问题肯定存在。你能告诉我们你的目录结构是什么吗?你的档案在哪里? htdocs中的文件位置是什么?

    ps:我的输出是这样的:

    Array
    (
        [0] => Medium Priority
        [1] => High Priority
        [2] => Medium Priority
    )
    Medium Priority
    High Priority
    Medium Priority
    

答案 3 :(得分: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>

答案 4 :(得分:0)

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

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

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

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

答案 5 :(得分:0)

正如@koala_dev在评论部分所建议的那样,将id的“Rank”更改为unique会解决问题。