2013-09-16 20 views
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 />"; 
    } 
} 

但在第一次提交我的$輸出是空的。如果我在瀏覽器上點擊「返回」並重新提交表單,我實際上得到了非空數組和輸出。

請指教!

+1

你的表單包裝元素在哪裏? – shennan

+0

已更新。謝謝! –

+0

是'print_r($ rank)'給你什麼? – shennan

回答

0

獨特正如在評論部分@koala_dev建議,改變ID的「等級」,以獨特的確實解決問題。

+0

請注意,這不會是所有瀏覽器實現的問題......這使得它成爲瀏覽器兼容性問題,而不是一個全面的錯誤。 – shennan

+0

在Chrome中爲我工作。 –

+0

是的。我只是確保你知道它在某些瀏覽器中可以正常工作,而不必更改唯一ID。這可能是未來有用的信息。 – shennan

0

儘量讓

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

我已刪除PHP_SELF

而變化的提交按鈕

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

我希望這將工作

+0

我剛剛嘗試過,並沒有幫助 –

+0

您已經編寫了自己的PHP代碼相同的頁面,對不對?它的工作對我罰款(火狐) – Shafeeque

0

嘗試在action=""的名字寫該文件在哪裏是你的PHP代碼,如下所示:

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

試過了,沒有幫助,對不起 –

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 
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> 
0

奧凱以及我已經先行一步,並測試了它自己的服務器上。它工作正常。因此,下面是您可能遇到的問題:

1)您誤解了表單的工作方式。請記住,當您第一次加載頁面時,$ _POST ['Rank']變量將不會填充。只有當您提交數據時,$ _POST ['Rank']全局變量纔會被填充。

2)你沒有真正在你的示例代碼輸出$output變量。這可能只是Stack Overflow的一個省略,但如果你想看到你的字符串輸出,那麼你需要這樣做。

3)的ID可以被搞亂了特定的瀏覽器數據。更改他們是在HTML元素

+0

謝謝,但我已經通過重命名控件唯一ID的 –

+1

因此3號固定它。 :-) – shennan