2013-03-20 49 views
1

我正在開發一個多選題的頁面。用戶只能爲每個問題選擇一個答案。我似乎無法檢索單選按鈕的值(1表示正確答案)。獲取廣播組的價值

這裏是兩個表的結構,我使用包含無線電組

CREATE TABLE IF NOT EXISTS `question` (
`q_id` int(10) NOT NULL AUTO_INCREMENT, 
`q_qstn_no` int(11) NOT NULL, 
`q_text` varchar(300) NOT NULL, 
`q_chpt` int(11) NOT NULL, 
PRIMARY KEY (`q_id`) 
) 
CREATE TABLE IF NOT EXISTS `answer` (
`a_id` int(6) NOT NULL AUTO_INCREMENT, 
`q_id` int(10) NOT NULL, 
`a_text` varchar(255) NOT NULL, 
`a_value` tinyint(1) NOT NULL, 
PRIMARY KEY (`a_id`) 
) 

HTML表單。

<?php 
    ini_set('display_errors',1); 
    error_reporting(E_ALL^E_NOTICE); 
    session_start(); 
    if(isset($_SESSION['tf1_sid'])) 
    { 
    ?> 
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Untitled Document</title> 
    </head> 
    <body> 
    <form id="form1" name="form1" method="post" action="ques_page_calc1.php"> 
    <p>Questions</p> 
    <table width="900" border="0" cellpadding="4"> 
    <?php 
    // db connect 
    include("dbconn.php"); 
    // db query for questions 
    $sql_q = "SELECT q_id, q_qstn_no, q_text FROM question"; 
    $query_q = mysql_query($sql_q) or die("MySQL Error: " . mysql_error()); 
    // start loop for questions 
    $rad2 = 0; 
    while($data_q = mysql_fetch_array($query_q, MYSQL_ASSOC)){ 

    //  echo "<pre>"; 
    //  print_r($data_q); 
    //  echo "</pre>"; 
    //   


     echo "<tr><td width='25' align='center' valign='top'><label><input name='q_no' size='1' type='hidden' value=". $data_q['q_qstn_no'] .">". $data_q['q_qstn_no'] ."</label></td>"; 
     echo "<td>". $data_q['q_text'] ."<br />"; 
     // db query for answers 
     $sql_a = "SELECT a_id, a_text, a_value FROM answer WHERE q_id=".$data_q['q_id']; 
     $query_a = mysql_query($sql_a) or die("MySQL Error: " . mysql_error()); 
     //$rad = 0; 
     // start loop for answers 
     while($data_a = mysql_fetch_array($query_a, MYSQL_ASSOC)){ 
      echo "<br /><table width='750' border='0'>"; 
      echo "<tr><td><label><input name='answer_".$rad2."' type='radio' value=". $data_a['a_value'] .">". $data_a['a_text'] . "</label></td></tr>"; 
      echo "</table>"; 
      //$rad++; 
     } 
     echo "</tr>"; 
     $rad2++; 
    } 
    echo "<tr><td><input name='Submit' type='submit' onClick='ques_page_calc1.php' value='Submit'></td></tr>"; 

    mysql_free_result($query_q); 
    mysql_free_result($query_a); 
    include("dbconn.php"); 

    ?> 
    </table> 
    </form> 
    </body> 
    </html> 
    <?php 
    } 
    else 
    { 
    header("Location:s_login.php"); 
    } 
    ?> 

的PHP文件來獲取值選擇

<?php 
    ini_set('display_errors',1); 
    error_reporting(E_ALL^E_NOTICE); 
    // include db connection file 
    include("dbconn.php"); 
    session_start(); 

    if(isset($_POST['Submit'])) 
    { 
$id = $_SESSION['tf1_sid']; 
echo $id; 
$correct = 0; 
$ev_id = 1; 

//db query to obtain i_id 
$sql_i = "SELECT i_id FROM ins_stud WHERE s_id = '$id'"; 
$query_i = mysql_query($sql_i) or die("MySQL Error: " . mysql_error()); 
$data_i = mysql_fetch_array($query_i, MYSQL_ASSOC); 
print_r($data_i); 

// capture values from HTML form 
if(!empty($_POST['answer_'.$rad2])) 
{ 
    foreach(($_POST['answer_'.$rad2]) as $ans) 
    { 
    echo $ans; 
    var_dump($_POST); 

    if($ans == 1) 
     $correct = $correct + 1; 
    } 

    //echo $correct; 

    // insert answer to table 
    //$sql_eval = "INSERT INTO eval_set (ev_id, q_id, response, created) VALUES ('" . $ev_id . "', '" . $ques_no . "', '" . $ans . "', CURDATE())"; 
    //mysql_query($sql_eval) or die ("Error: " . mysql_error()); 
    //} 
    } 
    // 
    // insert result to table 
    //$sql_result = "INSERT INTO result (r_score, ev_id, s_id, i_id) VALUES ('" . $correct . "', '" . $ev_id . "', '" . $id . "', '" . $data_i . "')"; 
    //mysql_query($sql_result) or die ("Error: " . mysql_error()); 

    //echo "Result: " . $correct . " questions correct."; 

    //header("Location:ass_result.php"); 
    } 

    // close db connection 
    mysql_close($dbconn); 
    ?> 

我認爲這是這是造成問題的原因,因爲我不知道如何連接變量name字段$_POST['answer_'.$rad2]。但是現在這個改變了,PHP文件中的print_r($data_i);行仍然沒有輸出。

回答

0

你不需要給你的收音機組按鈕不同的名字。所有的你的選擇將有一個名稱(比如「答案」)和你的PHP腳本只是檢查

$_POST['answer'] 

這會給你所選擇的單選按鈕的值。所以,無論你有多少個單選按鈕對於某個問題,給他們所有的同名,你很好。這也將確保只能檢查其中一個相互關聯的單選按鈕。

+0

如果我省略了變量,就不可能爲每個問題保留選定的單選按鈕。例如,回答Q1是好的,但當我回答Q2時,回答Q1重置等等。當頁面上有4個問題時,只有一個選定的單選按鈕。每個問題的單選按鈕都是四個一組的。 – 2013-03-21 03:20:29

+0

對不起,我一定錯過了你實際上給單選按鈕同一個問題的同名。只是你有幾個問題,因此每個組別都有不同的名稱。 – mavili 2013-03-21 03:25:16

0

我解決了它:)我拿走了if(!empty ...)並用它們代替它。

for($i=1;$i<=$qno;$i++){ 
    $repStr = str_replace("1", $i, "answer_1"); 
    //echo "Question ". $i .": ". $repStr; 
    $ans = $_POST[$repStr]; 
    //echo "". $radio ."<br>"; 

    if($ans == 1) 
    $correct = $correct + 1; 

    // everything before is FIXED :D 

    // insert answer to table 
    $sql_eval = "INSERT INTO eval_set (ev_id, q_id, response, created) VALUES ('MAX(ev_id)+1 ', '" . $i . "', '" . $ans . "', CURDATE())"; 
    mysql_query($sql_eval) or die ("Error: " . mysql_error());  
    }