2011-09-30 141 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和测试它的数据库,这将表明您得到预期的结果