我有一个在不同页面上有多个问题的测验,我想将用户答案存储在一个数组中,以便稍后检查他们的答案是否正确。测验的设置方式是测验的多个部分都有自己的页面,但在这些页面上有多个问题。每个问题都是相继显示的。让我们说第1部分有2个问题,在点击答案按钮后,加载了同一页面。问题是值不会进入数组。只有1个值存储在数组中,当第二个问题被回答时,数组中的第一个值消失,只显示第二个值。 这是我用来在数组中存储按钮值的代码。
<script>
$( document ).ready(function() {
var antwoordenObject1= new Array();
$('.btn').click(function() {
antwoordenObject1.push($(this).val());
alert("newArray contents = "+ antwoordenObject1);
});
});
</script>
这是我的PHP代码,用于显示问题和多项选择答案:
<?php
$conn = mysqli_connect("127.0.0.1", "root", "", "kinderboekenweek");
$sql = "SELECT * FROM vraag WHERE object_id_object = (SELECT id_object FROM object WHERE speurtocht_speurtocht_id= ".$SpeurtochtID." AND id_object = ".$object.") ";
$resultVragen = $conn->query($sql);
$URL = "";
if ($resultVragen->num_rows > 0) {
while($rowVragen = $resultVragen->fetch_assoc()) {
$arrayVraag[] = $rowVragen['vraag'];
$arrayVraag = array_filter(array_merge(array(0), $arrayVraag));
$arrayAntwoord[] = $rowVragen['antwoord'];
$arrayAntwoord = array_filter(array_merge(array(0), $arrayAntwoord));
$arrayOptie1[] = $rowVragen['optie1'];
$arrayOptie1 = array_filter(array_merge(array(0), $arrayOptie1));
$arrayOptie2[] = $rowVragen['optie2'];
$arrayOptie2 = array_filter(array_merge(array(0), $arrayOptie2));
$arrayOptie3[] = $rowVragen['optie3'];
$arrayOptie3 = array_filter(array_merge(array(0), $arrayOptie3));
$arrayOptie4[] = $rowVragen['optie4'];
$arrayOptie4 = array_filter(array_merge(array(0), $arrayOptie4));
$arrayHint[] = $rowVragen['hint'];
$arrayHint = array_filter(array_merge(array(0), $arrayHint));
}
}
$result = $conn->query("SELECT COUNT(*) FROM vraag WHERE object_id_object = (SELECT id_object FROM object WHERE speurtocht_speurtocht_id= ".$SpeurtochtID." AND id_object = ".$object.") ");
if ($result->num_rows > 0) {
while($rowCount = $result->fetch_assoc()) {
$arrayCount[] = $rowCount;
$arrayCount = array_filter(array_merge(array(0), $arrayCount));
}
}
if($_SESSION['qno'] < implode($arrayCount[1])){
if($_SESSION['qno']>$arrayCount[1] && isset($_SESSION['qno']))
$_SESSION['qno'] = 1;
elseif($_SESSION['qno']<$arrayCount[1] && isset($_POST['vraag1'])){
$_SESSION['qno'] += 1;
unset($_POST['vraag1']);
} elseif ($_SESSION['qno'] != 1 && isset ($_POST['vorige'])){
$_SESSION['qno'] -= 1;
}
}
if($_SESSION['qno'] == implode($arrayCount[1])){
$URL = "loading1.php";
}else {
$URL = "speurtochtvragenpagina.php";
}
?>
<form name="exam" method="post" action="<?php echo $URL; ?>">
<?php echo $arrayVraag[$_SESSION['qno']]; ?> <br>
<input type="hidden" name="vraag1" value="submit" />
<input id = "vraag1" class = 'btn btn-default' type="submit" name="vraag1" value="<?php echo $arrayOptie1[$_SESSION['qno']]; ?> "> <br>
<input id = "vraag1" class = 'btn btn-default' type="submit" name="vraag1" value="<?php echo $arrayOptie2[$_SESSION['qno']]; ?> "> <br>
<input id = "vraag1" class = 'btn btn-default' type="submit" name="vraag1" value="<?php echo $arrayOptie3[$_SESSION['qno']]; ?>"> <br>
<input id = "vraag1" class = 'btn btn-default' type="submit" name="vraag1" value="<?php echo $arrayOptie4[$_SESSION['qno']]; ?>"> <br>
</form>
答案 0 :(得分:1)
答案 1 :(得分:0)
当您将测验作为1页进行测试时,您不必存储任何内容,只需进行一次ajax调用即可发布值并返回结果。
答案 2 :(得分:0)
你可以使用map函数将多个元素放在一个数组中,然后使用匹配条件检查foreach循环,但是你必须放入event.preventDefault();在你的js代码的开头!