2012-09-18 50 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'中每個項目給出的點列。 –