php - 如何修复输入数组并正确显示
问题描述
这个问题有点长,我编辑太多以减少我的代码,但我希望任何人都可以帮助我!
我正在使用 php 在时间表项目中进行数学测试,这将要求用户输入他的姓名,然后问他 10 个问题,例如“2 x 2 =?” 提供四个按钮来选择答案,然后在回答 10 个问题后,用户将被重定向到result.php
显示结果的页面,这是我到目前为止所写的homePage.php
:
<?php
session_start();
if (isset($_POST['submit']) ) {
$_SESSION['QuestionNumber'] = 1;
$_SESSION['CorrectAnswers'] = 0;
$_SESSION['QuestionsAsnwered'] = 0;
$_SESSION['QuestionsAnswered'] = 0;
header("location: MathTest.php");
}
?>
<!DOCTYPE html>
<html>
<body>
<h1 align="center">Math Test</h1>
<form method="POST" action="">
<div style="text-align: center;">
<input type="submit" name="submit" value="Begin Test"">
</div>
</form>
</body>
</html>
在包含问题的 MathTest.php 中:
<?php
session_start();
//just controlling user answer no problem here
if (isset($_POST[$_SESSION['UserAnswer']])) {
if ($_SESSION['QuestionNumber'] == 10) {
header("location: result.php");
}
if ($_SESSION['UserAnswer'] == $_SESSION['CorrectAnswer']) {
$_SESSION['QuestionNumber'] += 1;
$_SESSION['CorrectAnswers'] += 1;
$_SESSION['QuestionsAnswered'] += 1;
QuestionGenerator();
} else {
$_SESSION['QuestionNumber'] += 1;
$_SESSION['QuestionsAnswered'] += 1;
QuestionGenerator();
}
}
//I think that my problem(written down) is here
function QuestionGenerator(){
$rnd1 = rand(1, 12);
$rnd2 = rand(2, 12);
$CorrectAnswer = $rnd1 * $rnd2;
$WrongAnswer1 = $CorrectAnswer - 2;
$WrongAnswer2 = $CorrectAnswer + 2;
$WrongAnswer3 = $CorrectAnswer + 4;
$_SESSION['rnd1'] = $rnd1;
$_SESSION['rnd2'] = $rnd2;
$_SESSION['CorrectAnswer'] = $CorrectAnswer;
$_SESSION['WrongAnswer1'] = $WrongAnswer1;
$_SESSION['WrongAnswer2'] = $WrongAnswer2;
$_SESSION['WrongAnswer3'] = $WrongAnswer3;
$_SESSION['AnswersArray'] = array($_SESSION['CorrectAnswer'], $_SESSION['WrongAnswer1'], $_SESSION['WrongAnswer2'], $_SESSION['WrongAnswer3']);
}
function EchoAnswers($array) {
shuffle($array);
echo "<form method='POST' action='' ";
foreach ($array as $_SESSION['UserAnswer']) {
echo "<button><input style='width: 200px; height: 100px; font-size: 75px;' type='submit' name='" . $_SESSION['UserAnswer'] . "' value='" . $_SESSION['UserAnswer'] . "' ></button";
}
echo "</form>";
}
?>
<!DOCTYPE html>
<html>
<body>
<?php echo "<h1 align='center' style='font-size: 75px;'>Question " . $_SESSION['QuestionNumber'] . " of 10</h1>"; ?>
<h2 align="center" style="font-size: 60px"><?php echo $_SESSION['rnd1'] . " X " . $_SESSION['rnd2'] . " = ?" ?></h2>
<div align="center">
<?php EchoAnswers($_SESSION['AnswersArray']) ?>
</div>
</body>
</html>
问题是当我点击任何按钮时,它只会随机播放答案,但如果我按下最后一个按钮,它将完全正常工作
解决方案
我遇到的问题是有 4 个提交按钮,每个按钮都有不同name
的标签,因此会话将只存储最后一个输入按钮并使其正常工作,但对于其他按钮,它只会刷新页面而没有什么不同,因为它们不受控制php 代码,所以为了解决这个问题,我只改变了 EchoAnswers 函数,如下所示:
function EchoAnswers($array) {
shuffle($array);
echo "<form method='POST' action='' ";
foreach ($array as $_SESSION['UserAnswer']) {
echo "<button><input style='margin: 10px; border: 3px solid black; background-color: lightblue; width: 200px; height: 100px; font-size: 75px;' type='submit' name='UserAnswer' value='" . $_SESSION['UserAnswer'] . "' ></button";
}
echo "</form>";
}
name
标签也设置为,所以$_SESSION['UserAnswer']
我将这部分更改为普通名称,我还更改了 php 代码,如下所示:
if (isset($_POST['UserAnswer'])) {
if ($_SESSION['QuestionNumber'] == 10) {
header("location: result.php");
}
if ($_SESSION['UserAnswer'] == $_SESSION['CorrectAnswer']) {
$_SESSION['QuestionNumber'] += 1;
$_SESSION['CorrectAnswers'] += 1;
$_SESSION['QuestionsAnswered'] += 1;
QuestionGenerator();
} else {
$_SESSION['QuestionNumber'] += 1;
$_SESSION['QuestionsAnswered'] += 1;
QuestionGenerator();
}
}
我在 php 代码中更改的部分是isset($_POST['UserAnswer'])
因为在名称标签中UserAnswer
设置为而不是普通名称。$_SESSION['UserAnswer']
推荐阅读
- asp.net - datepicker 模型的默认值或值
- onelogin - 从 Onelogin GetUser API 获取用户的最后活动时间
- python - 如何在python中将两个列表连接成一个新列表
- android - 如何限制可以在 react-native-document-picker 中选择的文件数量
- react-native - 如何使用天才聊天库获取 React Native 中未读消息的计数?
- node.js - 在尝试 discord.js 之外使用 awaitMessages 的结果
- python - Python Pandas - 基于正则表达式替换 - 忽略其余值 - python 中基于正则表达式的 vlookup
- python - 我无法提交包含 SelectField 和 SelectMultipleField 的 Flask-wtf 表单
- javascript - Node js:在同一个文件中调用异步函数
- pdf - 带有 TSA 时间戳的数字签名和构建带有 OID pdfRevocationInfoArchival in Java 的 PDF 的撤销信息