我正在制作成绩簿,虽然下面的代码有效,但速度非常慢。表格的第一列是每个学生的姓名,然后每个单元格后跟对应一个特定的问题,并显示学生回答的内容。并非每个学生都会回答给定的问题。
现在我有一个循环,并为每个用户在每个问题的循环内部循环。
每个问题都有一个唯一的ID,在一个单独的表中,每个答案都有一个相应的用户ID和一个相应的问题ID。
我找了类似的帖子没有运气,我只用了几个月的PHP,所以任何建议将不胜感激。
问题
| id |问题|选择1 |选择2 |选择3 |选择4 | correctAnswer | categoryId |
答案
| id | questionId | userId | studentAnswer |
用户
| id | firstName |
由于
//Select all questions from a specific category $mid defined by user
$questionQuery = mysql_query("SELECT * FROM questions WHERE mid = $mid");
$questionCount = mysql_num_rows($questionQuery);
//Blank space in table above users
echo "<tr><td></td>";
//Question Number, each category has a different number of questions
for ($q = 0; $q < $questionCount; $q++){
echo "<td>" . ($q+1) . "</td>";
}
echo "</tr>";
//Select all students for a given teacher
$userQuery = mysql_query("SELECT * FROM users WHERE teacherId = $userid ORDER BY `block`, `lastName`");
$userCount = mysql_num_rows($userQuery);
for($s = 0; $s < $userCount; $s++){
$currentUserId = mysql_result($userQuery, $s, 0);
//Echo student's name
echo "<tr class='user" . ($s%2) ."'><td>" . mysql_result($userQuery, $s, 1) . "</td>";
//Load current question id
for ($q = 0; $q < $questionCount; $q++){
$questionNum = mysql_result($questionQuery, $q, 0);
//Selects students answer from answers database for above question
$answerQuery = mysql_query("SElECT * FROM answers WHERE questionId = $questionNum AND userId = $currentUserId");
$answerCount = mysql_num_rows($answerQuery);
//If no answers move on to next cell
if($answerCount == 0){
echo "<td></td>";
}
else{
$currentAnswer = mysql_result($answerQuery, 0, 3);
$correctAnswer = mysql_result($questionQuery, $q, 6);
if ($currentAnswer == $correctAnswer){
echo "<td class='right'><div id='parent'>" . $currentAnswer . "</div></td>";
}
else{
echo "<td class='wrong'><div id='parent'>" . $currentAnswer . "</div></td>";
}
}
}
echo "</tr>";
}