首页 > 解决方案 > 使用 PHP 从 HTML 表单中获取“n”个单选选项的有效方法

问题描述

我目前正在开发一个测验程序,该表格有大约 20 个问题。使用 PHP 我知道如何在操作页面中获取结果。

<html>
<body>
<form action = "result.php">
Question 1:
<input type='radio' name='Q1' value='Op1' /> Op1
<input type='radio' name='Q1' value='Op2' /> Op2
<input type='radio' name='Q1' value='Op3' /> Op3
<input type='radio' name='Q1' value='Op4' /> Op4

Question 2:
<input type='radio' name='Q2' value='Op1' /> Op1
<input type='radio' name='Q2' value='Op2' /> Op2
<input type='radio' name='Q2' value='Op3' /> Op3
<input type='radio' name='Q2' value='Op4' /> Op4
.
.
.
.
</form>
</body>
</html>

结果.php

<?PHP
$answer1 = $_POST['Q1'];
$answer2 = $_POST['Q2'];
.
.
?>

这看起来一点也不整洁,有没有任何有效的方法来获取前端为所有这些问题选择的选项,而不是编写 20 条语句。

TIA

标签: phphtmlforms

解决方案


一种允许您迭代特定单选按钮答案的选项是将它们存储在它们自己的数组中。

例如

<input type="radio" name="radio[Q1]" value="Op1">
<input type="radio" name="radio[Q1]" value="Op2">

<input type="radio" name="radio[Q2]" value="Op1">
<input type="radio" name="radio[Q2]" value="Op2">

然后你可以用循环迭代这些foreach

foreach($_POST['radio'] as $question => $answer) {
    // $question will be "Q1", "Q2", etc
    // $answer will be the chosen radio button value
}

将所有单选按钮放在一个名称下(即"radio"),您可以将这些键和值与您可能想要包含的其他表单字段区分开来。


另外,你<form>应该有method="post",但我想你可能已经有了。


推荐阅读