2014-02-06 97 views
1

我有多個複選框(陣列),如下代碼:無法檢索從複選框數組值

      <div class="checkbox"> 
           <label><input type="checkbox" name="major[]" value="Business" /> Business</label> 
          </div> 
          <div class="checkbox"> 
           <label><input type="checkbox" name="major[]" value="Public Affairs/Law" />Public Affairs/Law</label> 
          </div> 
          <div class="checkbox"> 
           <label><input type="checkbox" name="major[]" value="Medicine" />Medicine</label> 
          </div> 
          <div class="checkbox"> 
           <label><input type="checkbox" name="major[]" value="Literature/Writing/Journalism" />Literature/Writing/Journalism</label> 
          </div> 
          <div class="checkbox"> 
           <label><input type="checkbox" name="major[]" value="Technology" />Technology</label> 
          </div> 
          <div class="checkbox"> 
           <label><input type="checkbox" name="major[]" value="Engineering" />Engineering</label> 
          </div> 

當表單提交,我試圖通過檢索所選擇的值:

  print_r($_POST['major']); 

它打印:

  Array ([0] => [1] =>) 

它檢測到兩個複選框勾選,但它以某種方式無法檢索出的值。我究竟做錯了什麼?

======================= PHP代碼片段===================== =======

require 'dbconnect.php'; 


if($_SERVER["REQUEST_METHOD"] == "POST"){ 
       if(isset($_POST['major'])){ 

       $top_majors = implode(',', $_POST['top_three_major']); 

       echo $top_majors; 
      }else{ 

       $top_majors = '-'; 

      } 
} 

=======================解決============ ================

好的,我解決了我的問題。這是一個愚蠢的錯誤,我試圖在瀏覽器準備就緒時清除表單域,因此,複選框值在POST之前被重置。

謝謝你們幫助我!特別是學習者學生,我明白這一點!我希望我能投票給你們,但太糟糕了,我的名聲太低了。再次

感謝。

+1

你錯過了雙引號的第三個輸入 – MaGnetas

+0

檢查我的(@ user2727841)回答的名稱... – user2727841

+1

檢查我(@ user2727841)更新的答案... – user2727841

回答

0

我試過這個代碼。有一些報價缺失。在插入後thos工作得很好。

<div class="checkbox"> 
          <label><input type="checkbox" name="major[]" value="Business" /> Business</label> 
         </div> 
        <div class="checkbox"> 
          <label><input type="checkbox" name="major[]" value="Public Affairs/Law" />Public Affairs/Law</label> 
         </div> 
         <div class="checkbox"> 
          <label><input type="checkbox" name="major[]" value="Medicine" />Medicine</label> 
         </div> 
         <div class="checkbox"> 
          <label><input type="checkbox" name="major[]" value="Literature/Writing/Journalism" />Literature/Writing/Journalism</label> 
         </div> 
         <div class="checkbox"> 
          <label><input type="checkbox" name=major[] value="Technology" />Technology</label> 
         </div> 
         <div class="checkbox"> 
          <label><input type="checkbox" name="major[]" value="Engineering" />Engineering</label> 
         </div> 

--PHP ---

print_r($_POST['major']); 

--out把-----

Array ([0] => Medicine [1] => Literature/Writing/Journalism [2] => Technology) 
+0

缺少雙引號是由於編輯名稱時出錯。它在我的原始代碼中。它以某種方式無法返回值。任何想法爲什麼發生這種情況 – user3227412

+0

對不起,我不明白。你能解釋一下嗎?如果您檢查,您是否$ _POST仍未顯示任何價值? –

+0

是的,如果我檢查兩個值並提交。它返回「Array([0] => [1] =>)」。它檢測到兩個複選框被檢查,但不知何故值不通過。 – user3227412

0

試試這個

<div class="checkbox"> 
    <label><input type="checkbox" name="major[]" value="Medicine" />Medicine</label> 
</div> 
<div class="checkbox"> 
    <label><input type="checkbox" name="major[]" value="Literature/Writing/Journalism" />Literature/Writing/Journalism</label> 
</div> 
<div class="checkbox"> 
    <label><input type="checkbox" name="major[]" value="Technology" />Technology</label> 
</div> 
<div class="checkbox"> 
    <label><input type="checkbox" name="major[]" value="Engineering" />Engineering</label> 
</div> 
0

試試這個,現在是工作...

<form action="<?=$_SERVER["PHP_SELF"];?>" method="post"> 
    <div class="checkbox"> 
     <label><input type="checkbox" name="major[]" value="Medicine"/>Medicine</label> 
    </div> 
    <div class="checkbox"> 
     <label><input type="checkbox" name="major[]" value="Literature/Writing/Journalism"/>Literature/Writing/Journalism</label> 
    </div> 
    <div class="checkbox"> 
     <label><input type="checkbox" name="major[]" value="Technology"/>Technology</label> 
    </div> 
    <div class="checkbox"> 
     <label><input type="checkbox" name="major[]" value="Engineering"/>Engineering</label> 
    </div> 
    <input type="submit" name="submit" value="Submit"> 
</form> 

在php編寫代碼在同一頁,因爲我寫$_SERVER["PHP_SELF"]action意思是在同一頁面提交表單只是如果你想改變行動。

if(isset($_POST['submit'])) { 
    echo '<pre>';print_r($_POST['major']);echo '</pre>'; 
    echo '<pre>';print_r($_POST);echo '</pre>'; 
} 
+0

雙引號最初出現在我的代碼中,但當我嘗試在此處發帖時,我不小心刪除了它。所以,我不認爲這是原因。我仍然無法獲得價值。 – user3227412

0

它的工作:

<form action="" method="post" > 
    <div class="checkbox"> 
           <label><input type="checkbox" name="major[]" value="Medicine" />Medicine</label> 
          </div> 
          <div class="checkbox"> 
           <label><input type="checkbox" name="major[]" value="Literature/Writing/Journalism" />Literature/Writing/Journalism</label> 
          </div> 
          <div class="checkbox"> 
           <label><input type="checkbox" name="major[]" value="Technology" />Technology</label> 
          </div> 
          <div class="checkbox"> 
           <label><input type="checkbox" name="major[]" value="Engineering" />Engineering</label> 
          </div> 
          <input type="submit"> 
    </form> 
<?php 
if(isset($_POST['major'])) 
print_r($_POST['major']); 
?> 

3TH name=major[]"只是改變name="major[]"你的HTML語法是錯誤的!

+0

感謝您的回覆。缺少雙引號是由於編輯名稱時出錯。它在我的原始代碼中。我不認爲這是(爲我的情況)爲什麼會發生這種情況的原因?我試圖隔離問題,它完美的作品,但不是我目前的代碼。 – user3227412

+0

沒問題;)所以請接受我的答案。 –