2012-09-18 24 views
1

我是PHP新手,需要一些帮助。我似乎无法为学生取得正确的分数。正确得分(php)

场景:

  • 输入答案(答案键)考试与对应点
  • 输入学生的答案为考试
  • 获取学生的总成绩。

我的PHP代码:

for ($count = 1; $count <= $num_ans; $count++) 
{ 
    $answer = $_POST['answer'][($count + 1) - 1]; 
    $sqlB = "SELECT * FROM paper WHERE id=$count and test_name = '$test_name' and subject='$subject'"; 
    $qryB = mysql_query($sqlB); 
    $rowB = mysql_fetch_array($qryB); 
    $anskey = $rowB['answer']; 
} 
if ($answer = $anskey) 
{ 
    $sqlA = "SELECT points FROM paper WHERE test_name = '$test_name' and subject='$subject' and answer='$answer'"; 
    $qryA = mysql_query($sqlA); 
    while ($rowA = mysql_fetch_array($qryA)) 
    { 
     $correctAns += $rowA['points']; 
    } 
} 
+4

欢迎来到Stack Overflow!请不要使用'mysql_ *'函数来编写新的代码。他们不再维护,社区已经开始[弃用程序](http://goo.gl/KJveJ)。请参阅* [红盒子](http://goo.gl/GPmFd)*?相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定哪些,[这篇文章](http://goo.gl/3gqF9)会帮助你。如果你选择PDO,[这里是很好的教程](http://goo.gl/vFWnC)。 –

+0

感谢您的建议 –

+0

@GrazielleLeotero,如果您需要一个简单的PDO示例,您可以使用[my class](https://github.com/Xeoncross/DByte)。 – Xeoncross

回答

0

尝试

for ($count=1; $count<=$num_ans; $count++) {    
     $answer = $_POST['answer'][$count]; 
     $sqlB = "SELECT answer FROM paper WHERE id=$count and test_name = '$test_name' and subject='$subject'"; 
     $qryB = mysql_query($sqlB); 
     $rowB = mysql_fetch_array($qryB); 
     $anskey = $rowB['answer']; 

     if ($answer == $anskey) { 
     $sqlA = "SELECT points FROM paper WHERE test_name = '$test_name' and subject='$subject' and answer='$answer'"; 
     $qryA = mysql_query($sqlA); 
     //considering each unique answer would have specific points, while-loop is not required 
     //while($rowA = mysql_fetch_array($qryA)) { 
     $correctAns += $rowA['points']; 
     // } 
     } 
} //end of for-loop 
+0

答案仍然是0.它不会加起来。 –

+0

结果仍然相同。它不会加起来。我得到的分数仍然为0. –

+0

'$ rowA ['points']'的值是多少?你有什么错误吗? –

0

我觉得有些事情是在你的数据库查询失踪。

$query = "SELECT points FROM paper WHERE test_name = '$test_name' and subject='$subject' and answer='$answer'"; 
$qryA = mysql_query($query); 
while($rowA = mysql_fetch_array($qryA)) { 
    $correctAns += $rowA['points']; 
} 

请检查:

$rowA['points'] = ??// if any value return from db or not. 

因为SQL查询,请通过问题的id /(东西行是唯一的)答案=“$回答”可能是重复的,所以它不能退缩实际值。

希望你能理解。

+0

$ rowA ['points']返回0. –

+0

$ rowA ['points']对应于数据库表'paper'中每个项目给出的点列。 –