php 选择题如何实现
实现PHP选择题的方法
使用HTML表单和PHP处理逻辑可以轻松实现选择题功能。以下是一个简单的实现方式:
<form method="post" action="process.php">
<p>1. PHP是什么语言?</p>
<input type="radio" name="q1" value="a"> A. 服务器端脚本语言<br>
<input type="radio" name="q1" value="b"> B. 客户端脚本语言<br>
<input type="radio" name="q1" value="c"> C. 标记语言<br>
<p>2. PHP文件的默认扩展名是?</p>
<input type="radio" name="q2" value="a"> A. .html<br>
<input type="radio" name="q2" value="b"> B. .php<br>
<input type="radio" name="q2" value="c"> C. .xml<br>
<input type="submit" value="提交答案">
</form>
处理答案的PHP代码
创建process.php文件处理用户提交的答案:

<?php
$correct_answers = [
'q1' => 'a',
'q2' => 'b'
];
$score = 0;
foreach ($correct_answers as $question => $correct_answer) {
if (isset($_POST[$question]) && $_POST[$question] === $correct_answer) {
$score++;
}
}
echo "你的得分是: " . $score . "/" . count($correct_answers);
?>
数据库存储的实现
如果需要将问题和答案存储在数据库中:
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'quiz_db');
// 获取所有问题
$questions = $conn->query("SELECT * FROM questions");
// 显示问题表单
while ($question = $questions->fetch_assoc()) {
echo "<p>{$question['question_text']}</p>";
// 获取选项
$options = $conn->query("SELECT * FROM options WHERE question_id = {$question['id']}");
while ($option = $options->fetch_assoc()) {
echo "<input type='radio' name='q{$question['id']}' value='{$option['id']}'> {$option['option_text']}<br>";
}
}
随机出题功能
实现从题库中随机抽取题目:

// 从题库中随机选择5道题
$random_questions = $conn->query("SELECT * FROM questions ORDER BY RAND() LIMIT 5");
计时功能
添加JavaScript实现答题计时:
let timeLeft = 300; // 5分钟
const timer = setInterval(() => {
timeLeft--;
document.getElementById('timer').innerText = `剩余时间: ${Math.floor(timeLeft/60)}分${timeLeft%60}秒`;
if (timeLeft <= 0) {
clearInterval(timer);
document.forms[0].submit();
}
}, 1000);
防止重复提交
在PHP中防止用户多次提交:
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (!isset($_SESSION['submitted'])) {
$_SESSION['submitted'] = true;
// 处理提交逻辑
} else {
echo "您已经提交过答案";
}
}
以上方法可以根据实际需求进行组合和扩展,实现各种复杂的选择题功能。






