2016-06-24 49 views
0

其問題和四個選項並檢查任何一個。 問題當檢查按鈕到下一個問題時,則前一個檢查未被選中。我無法檢查多個單選按鈕

代碼波紋管:

<form method="post" id="submitme"> 
    <table class="ques_list" border=1 style="width:100%"> 
    <?php 
     $result=mysql_query("SELECT * FROM questions ORDER BY RAND() LIMIT 20"); 
     while ($row = mysql_fetch_array($result)) { ?> 
      <tr> 
       <td colspan="2"><?php echo $row['ques_title']."<br />"; ?></td> 
      </tr> 
      <tr> 
       <td><input type="radio" name="opt_value" value="1" /><?php echo $row['ques_opt_1']."<br />"; ?></td> 
       <td><input type="radio" name="opt_value" value="2" /><?php echo $row['ques_opt_2']."<br />"; ?></td> 
      </tr> 
      <tr> 
       <td><input type="radio" name="opt_value" value="3" /><?php echo $row['ques_opt_3']."<br />"; ?></td> 
       <td><input type="radio" name="opt_value" value="4" /><?php echo $row['ques_opt_4']."<br />"; ?></td> 
      </tr> 
     <?php } ?> 
     <tr><td colspan="2"><button type="submit" name="btn-submit" class="btn-submit">Submit</button></td></tr> 
    </table> 
</form> 

而且我怎麼能得到他的價值呢? 建議我。 謝謝。

+2

這就是單選按鈕的工作原理。在任何給定的單選按鈕組中,只能選擇*一個*。也許你正在尋找複選框? – David

+6

這就是具有相同名稱的單選按鈕,它會成爲一個組。如果你不想要,給他們不同的名字,或使用複選框,這將是更合適的。 – adeneo

回答

1

您可以添加索引到單選按鈕的名稱。

<form method="post" id="submitme"> 
    <table class="ques_list" border=1 style="width:100%"> 
    <?php 
     $result=mysql_query("SELECT * FROM questions ORDER BY RAND() LIMIT 20"); 
     while ($row = mysql_fetch_array($result)) { ?> 
      <tr> 
       <td colspan="2"><?php echo $row['ques_title']."<br />"; ?></td> 
      </tr> 
      <tr> 
       <td><input type="radio" name="opt_value_<?php echo $row['ques_id']; ?>" value="1" /><?php echo $row['ques_opt_1']."<br />"; ?></td> 
       <td><input type="radio" name="opt_value_<?php echo $row['ques_id']; ?>" value="2" /><?php echo $row['ques_opt_2']."<br />"; ?></td> 
      </tr> 
      <tr> 
       <td><input type="radio" name="opt_value_<?php echo $row['ques_id']; ?>" value="3" /><?php echo $row['ques_opt_3']."<br />"; ?></td> 
       <td><input type="radio" name="opt_value_<?php echo $row['ques_id']; ?>" value="4" /><?php echo $row['ques_opt_4']."<br />"; ?></td> 
      </tr> 
     <?php } ?> 
     <tr><td colspan="2"><button type="submit" name="btn-submit" class="btn-submit">Submit</button></td></tr> 
    </table> 
</form> 

編輯:

然後你就可以讀你的答案如下:
$row['ques_id']必須對每個問題唯一的,答案應該是唯一公佈值)

if($_SERVER['REQUEST_METHOD'] === 'post'){ 
    foreach($_POST as $question => $answer){ 
     $quest_id = preg_replace('/[^0-9]/' , '' , $question); 

     //make database query to check answer 
     // $quest_id is the question ID 
     // $answer is number of the selected answer 
    } 
} 
+0

謝謝。你是對的但我怎麼能得到選定的價值? – Ravi

+0

看看'$ _POST []'看起來如何:'print_r($ _POST []);'然後你可以使用一個循環。 –

+0

可以幫助更多。但在你的解決方案。我的問題Id仍然是靜態的任何解決方案 – Ravi

1

單選按鈕name是互斥的這意味着如果您選擇一個,則所有其他具有相同名稱的名稱將被取消選擇。 因此,解決您的問題的方法是,您爲每個答案的單選按鈕設置不同的名稱。您可以在while循環使用一個計數器:

<form method="post" id="submitme"> 
    <table class="ques_list" border=1 style="width:100%"> 
    <?php 
     $result=mysql_query("SELECT * FROM questions ORDER BY RAND() LIMIT 20"); 
     $i = 0; 
     while ($row = mysql_fetch_array($result)) { 
      $i++; 
     ?> 
      <tr> 
       <td colspan="2"><?php echo $row['ques_title']."<br />"; ?></td> 
      </tr> 
      <tr> 
       <td><input type="radio" name="opt_value_<?php echo $i ?>" value="1" /><?php echo $row['ques_opt_1']."<br />"; ?></td> 
       <td><input type="radio" name="opt_value_<?php echo $i ?>" value="2" /><?php echo $row['ques_opt_2']."<br />"; ?></td> 
      </tr> 
      <tr> 
       <td><input type="radio" name="opt_value_<?php echo $i ?>" value="3" /><?php echo $row['ques_opt_3']."<br />"; ?></td> 
       <td><input type="radio" name="opt_value_<?php echo $i ?>" value="4" /><?php echo $row['ques_opt_4']."<br />"; ?></td> 
      </tr> 
     <?php } ?> 
     <tr><td colspan="2"><button type="submit" name="btn-submit" class="btn-submit">Submit</button></td></tr> 
    </table> 
</form> 
1

如果一個單選按鈕被選中所有的人得到選中。 集團由集團 設置一個唯一的名稱組一個單選按鈕:

<input name="test"> 
<input name="test"> 

組的兩個

<input name="test2"> 
<input name="test2"> 
1

你必須給唯一的名字每一個問題。

<form method="post" id="submitme"> 
    <table class="ques_list" border=1 style="width:100%"> 
    <?php $result=mysql_query("SELECT * FROM questions ORDER BY RAND() LIMIT 20"); 
     $count = 0; 
     while ($row = mysql_fetch_array($result)) { ?> 
      <tr> 
       <td colspan="2"><?php echo $row['ques_title']."<br />"; ?></td> 
      </tr> 
      <tr> 
       <td><input type="radio" name="opt_value[ <?php echo $count; ?> ]" value="1" /><?php echo $row['ques_opt_1']."<br />"; ?></td> 
       <td><input type="radio" name="opt_value[ <?php echo $count; ?>]" value="2" /><?php echo $row['ques_opt_2']."<br />"; ?></td> 
      </tr> 
      <tr> 
       <td><input type="radio" name="opt_value[ <?php echo $count; ?>]" value="3" /><?php echo $row['ques_opt_3']."<br />"; ?></td> 
       <td><input type="radio" name="opt_value[ <?php echo $count; ?>]" value="4" /><?php echo $row['ques_opt_4']."<br />"; ?></td> 
      </tr> 
     <?php $count++; } ?> 
     <tr><td colspan="2"><button type="submit" name="btn-submit" class="btn-submit">Submit</button></td></tr> 
    </table> 
</form> 

結果:

https://jsfiddle.net/yvolkan/o5z6q29o/1/

+0

@ KIMB-technologies是的,你是嚴謹的。 –

0

其問題涉及到單選按鈕的名稱。您必須爲每個問題分配一個唯一的單選按鈕名稱。 在這裏,我有一個變量爲每個問題單選按鈕組分配一個唯一的名稱。

試試這個 - >>

<form method="post" id="submitme"> 
    <table class="ques_list" border=1 style="width:100%"> 
    <?php 
     $result=mysql_query("SELECT * FROM questions ORDER BY RAND() LIMIT 20"); 
     $i=1; 
     while ($row = mysql_fetch_array($result)) { ?> 
      <tr> 
       <td colspan="2"><?php echo $row['ques_title']."<br />"; ?></td> 
      </tr> 
      <tr> 
       <td><input type="radio" name="opt_value<?php echo $i; ?>" value="1" /><?php echo $row['ques_opt_1']."<br />"; ?></td> 
       <td><input type="radio" name="opt_value<?php echo $i; ?>" value="2" /><?php echo $row['ques_opt_2']."<br />"; ?></td> 
      </tr> 
      <tr> 
       <td><input type="radio" name="opt_value<?php echo $i; ?>" value="3" /><?php echo $row['ques_opt_3']."<br />"; ?></td> 
       <td><input type="radio" name="opt_value<?php echo $i; ?>" value="4" /><?php echo $row['ques_opt_4']."<br />"; ?></td> 
      </tr> 
     <?php $i++; } ?> 
     <tr><td colspan="2"><button type="submit" name="btn-submit" class="btn-submit">Submit</button></td></tr> 
    </table> 
</form> 
0

名稱他們的問題不同的東西質疑。這樣,每個問題只能選擇一個,但不會取消選中其他問題的答案。當它們具有相同的名稱時,它將取消選中任何以前的按鈕。

<form method="post" id="submitme"> 
    <table class="ques_list" border=1 style="width:100%"> 
    <?php 
     $result=mysql_query("SELECT * FROM questions ORDER BY RAND() LIMIT 20"); 
     while ($row = mysql_fetch_array($result)) { ?> 
      <tr> 
       <td colspan="2"><?php echo $row['ques_title']."<br />"; ?></td> 
      </tr> 
      <tr> 
       <td><input type="radio" name="opt_value" value="1" /><?php echo 
$row['ques_opt_1']."<br />"; ?></td> 
       <td><input type="radio" name="opt_value" value="2" /><?php echo $row['ques_opt_2']."<br />"; ?></td> 
      </tr> 
      <tr> 
       <td><input type="radio" name="opt_value2" value="3" /><?php echo $row['ques_opt_3']."<br />"; ?></td> 
       <td><input type="radio" name="opt_value2" value="4" /><?php echo $row['ques_opt_4']."<br />"; ?></td> 
      </tr> 
     <?php } ?> 
     <tr><td colspan="2"><button type="submit" name="btn-submit" class="btn- submit">Submit</button></td></tr> 
    </table> 
</form>