【发布时间】:2015-03-01 01:33:43
【问题描述】:
我正在尝试做一个由 PHP、jQuery、AJAX 和数据库驱动的测验。但我在第一方被难住了。
一个典型的测验由十个问题组成,每个问题后面有四个可能的答案 - 都在一页上。 HTML 可能看起来很像这样:
<div class="OuterWrapper">
<div class="question"><b>No one knows if there’s just one universe or a series of universes, commonly referred to as a:</b></div>
<ul class="answers">
<li class="Answer correct"><label><input data-key="A" type="radio">multiverse</label></li>
<li class="Answer wrong"><label><input data-key="B" type="radio">parallel universe</label></li>
<li class="Answer wrong"><label><input data-key="C" type="radio">constellation</label></li>
<li class="Answer wrong"><label><input data-key="D" type="radio">black hole</label> </li>
</ul>
</div><!-- OuterWrapper -->
<div class="OuterWrapper">
<div class="question"><b>Scientists believe the universe is:</b></div>
<ul class="answers">
<li class="Answer wrong"><label><input data-key="A" type="radio">shrinking</label></li>
<li class="Answer correct"><label><input data-key="B" type="radio">expanding</label></li>
<li class="Answer wrong"><label><input data-key="C" type="radio">in a state of equilibrium</label></li>
<li class="Answer wrong"><label><input data-key="D" type="radio">becoming bipolar</label></li>
</ul>
</div><!-- OuterWrapper -->
显示的 PHP 代码如下所示:
<div class="OuterWrapper">
<div class="question"><b>'.$Question.'</b></div>
<ul>
<li class="Answer '.$Correct.'"><label><input data-key="'.$Value.'" type="radio">'.$Answer.'</label></li>
</ul>
</div>
</div>
我知道如何创建一个显示所有十个问题的数组。或者我可以创建一个显示所有答案的数组。但是,我不知道如何将两者结合起来,以便每个问题后面都有与该问题相关的四个答案。
我假设我必须以某种方式将我的 $Answers 数组放入 $Questions 数组中?
echo join ($Questions, '').join ($Answers, '');
起初我放弃了,只是做了一个常规查询,但这是一场噩梦 - 各种样式/语法问题。
无论如何,谁能告诉我如何创建我上面描述的数组?或者,如果这种类型的数组有一个名称,那么只要知道这个名称就可以帮助我在 Google 上获得提示。
下面是一些更完整的代码,尽管它仍然非常精简。
$MyURL = 'gw-intro-1';
$stmt = $pdo->prepare("SELECT T.URL, TQ.QID, TQ.Question, TA.URL, TA.QID QID2, TA.Value, TA.Answer, TA.Correct
FROM g_tests T
LEFT JOIN g_test_questions TQ ON TQ.URL = T.URL
LEFT JOIN g_test_answers TA ON TA.URL = T.URL
WHERE T.URL = 'gw-intro-1' AND TQ.QID = TA.QID
ORDER BY TA.N
");
$stmt->execute(array(
'MyURL'=>$MyURL
));
$Q1 = null;
while ($row = $stmt->fetch()) {
$URL = $row['URL'];
$QID = $row['QID'];
$QID2 = $row['QID2'];
$Question = $row['Question'];
$Value = $row['Value'];
$Answer = $row['Answer'];
$Correct = $row['Correct'];
$Correct = str_replace('1', 'correct', $Correct);
$Correct = str_replace('2', 'wrong', $Correct);
// Some aborted attempts at making arrays...
$Questions[] = '<div class="question"><b>'.$Question.'</b></div>';
$Answers[] = '<li class="Answer '.$Correct.'"><label><input data-key="'.$Value.'" type="radio">'.$Answer.'</label></li>';
}
【问题讨论】:
-
我不建议在您的 html 中使用
wrong/correct类。用户可以轻松查看源代码并找到正确答案。 -
是的,一旦我启动并运行了这个东西,我就想做这件事。我想我可以在用户单击提交按钮后使用 AJAX 或 jQuery 插入“正确”和“错误”类。
-
我的想法是创建一个多维数组 ->
$Questions[] = array('question'=> $Question, 'answers'=> array($Answer1,$Answer2,$Answer3,$Answer4));。然后你可以做一个 foreach 循环 -foreach($Questions as $Question){ echo $Question['question']; foreach($Question['answer'] as $Answer){ echo $Answer; } }来显示结果(问题的外循环和答案的内循环)