2011-09-30 278 views
0

我已經得到了一個表單,其中有回答的問題。然後在接下來的頁面中,我試圖驗證問題,看看答案是否正確,因爲最終我必須計算出測試的百分比。while foreach內部循環

$tid1 = $_SESSION['tid']; 
$departmentid = $_SESSION['deptid']; 
$userid = $_SESSION['userid']; 

foreach($_POST['question'] as $key => $answer) { 
    include 'datalogin.php'; 
    mysql_query("INSERT INTO ex_answer (id,class_name,testname,name,percentage,qnr,answer_chosen,points_scored,result) 
VALUES ('0','$departmentid','$tid1','$userid','0','$key','$answer[0] $answer[1] $answer[2] $answer[3] $answer[4] $answer[5] $answer[6] $answer[7] $answer[8]','0','0')"); 

    $sql1="SELECT * FROM ex_question WHERE test_name = '$tid1' AND q_nr = '$key'"; 
    $result1=mysql_query($sql1); 
    while($row1 = mysql_fetch_array($result1)) { 
     $q_nr=$row1['q_nr']; 
     echo $q_nr; 
    } 
} 

的問題是(我認爲),它不是從表中選擇的問題數量q_nr = '$key'正確,因爲echo $q_nr沒有給出輸出

+0

不'包括 'datalogin.php';'真正需要的是在'foreach'循環內? (也就是說,它是否真的需要被包含在每一次迭代中,或者你可以在'foreach'之前加入一次嗎?)另外,請發佈你的數據庫表格描述,這將有所幫助。 – megaflop

+0

如果你的'echo mysql_num_rows($ result1);'會發生什麼?你有行嗎?當你用靜態值而不是變量運行查詢時會發生什麼(例如'SELECT * FROM ex_question WHERE test_name ='testname'AND q_nr ='1'')?你有沒有得到你期望的結果?如果你這樣做,確保'$ key'和'$ tid1'包含你期望的值。我看不到'$ tid1'被定義在任何地方 - 'datalogin.php'中發生了什麼? – DaveRandom

+0

echo the line:$ sql1 =「SELECT * FROM ex_question WHERE test_name ='$ tid1'AND q_nr ='$ key'」; 然後你可以看到問題。 – mahadeb

回答

1

如果你得到一個有效的結果(測試數據庫中的客戶端的SQL),那麼你應該只是使用下面的方法訪問它作爲關聯數組:

mysql_fetch_assoc($result1); 

,而不是mysql_fetch_array(),或使用 mysql_fetch_array($ RESULT1,MYSQL_ASSOC)

測試什麼被退還給您,註釋掉ÿ我們while循環,然後執行:

$row1 = mysql_fetch_array($result1); 
print_r($row1); 

你之前while循環添加用於驗證的以下內容:

if (!$result1) { 
    die('Could not query:' . mysql_error()); 
} 
+0

我改變了它,但仍然不起作用。 – Wilest

+0

你應該打印出你的結果來看看你得到了什麼,我改變了上面的顯示。是'q_nr'在print_r中返回的一個鍵嗎? – Mark

+0

我將它改爲:$ sql1 =「SELECT * FROM ex_question WHERE test_name ='$ tid1'AND q_nr ='$ key'」; $ result1 = mysql_query($ sql1); $ num_rows1 = mysql_fetch_row($ result1); ($ row1 = mysql_fetch_assoc($ result1)){ // $ q_nr = $ row1 ['q_nr']; // echo $ q_nr; //} print_r(mysql_fetch_array($ result1));但仍然沒有輸出,但如果我回聲$ SQL1 =「SELECT * FROM ...然後我看到它的工作,我迷路了 – Wilest

1

使用mysql_fetch_assoc能夠返回數組上使用列名索引。

0

您也可以輸出SQL和測試它的數據庫,這將表明您得到預期的結果