【发布时间】:2016-06-06 12:48:25
【问题描述】:
我有一个测验,在不同的页面上有多个问题,我想将用户的答案存储在一个数组中,以便以后检查他们的答案是否正确。测验的设置方式是测验的多个部分都有自己的页面,但这些页面上有多个问题。每个问题依次显示。假设第 1 部分有 2 个问题,单击答案按钮后会加载相同的页面。问题是这些值没有进入数组。只有一个值存储到数组中,当第二个问题被回答时,数组中的第一个值消失,只显示第二个值。 这是我用来在数组中存储按钮值的代码。
<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>
【问题讨论】:
-
提交按钮提交。页面刷新,JavaScript 被重置...
-
您的代码对SQL injection 是可访问的,您可能需要在公开此应用程序之前修复它:)
-
您可以在脚本末尾添加
event.preventDefault();或return false;,以防止提交事件。
标签: javascript php jquery arrays