php - 使用 PHP 和 MySQL 填充 Quiz Web 应用程序表单

标签 php mysql html database forms

这是数据库设计http://www.flickr.com/photos/michaelstitt/6077647604/in/photostream/我决定使用 the help from my previous post on Stack Overflow .

我正在尝试使用 PHP 和 MySQL 构建一个测验 Web 应用程序。构建 HTML 表单并手动编写“question”和“question_choices”代码似乎要容易得多。但是,我想使用数据库中的数据填充表单。

所以,我的问题是您建议我如何从数据库的“question”或“question_choices”表中提取数据来填写 HTML 表单?

HTML 表单将如下所示:

<form method="post" action="quiz1.php">

    <b>What was the make/model of my first car?</b>
    <br>
    <input type="radio" value="0" name="q_1">
    Toyota Camry <br />
    <input type="radio" value="1" name="q_1">
    Honda Accord <br />
    <input type="radio" value="0" name="q_1">
    Ford Explorer <br />
    <input type="radio" value="0" name="q_1">
    Plymouth Voyager <br />

本田雅阁将从表 Question_choices 中的“选择”列派生。 value="1"将由 'is_right_choice' 列确定,并将填充 user_question_answer 表中的 'is_right' 列。 这看起来是个好主意吗?

任何其他建议将不胜感激。预先感谢您。

最佳答案

这不是一个好主意,因为任何查看 HTML 源代码的人都可以找出正确的答案。另一方面,您的架构中拥有执行此服务器端操作的所有信息(并保护答案)。

提问时间

我猜测(你没有说)你想在一页上显示所有测验问题。您希望您的表单发回默认值 quiz.php页。 (<form method="post" action="quiz.php" />)

因为quiz.php可以处理任何测验,您需要在表单中嵌入测验 ID,以便在处理结果时您可以看到正在回答哪个测验。试试<input type="hidden" name="quizid" value="1" /> (假设这是测验 #1)。

您还需要明确从数据库中提取问题的顺序,因为问题是从 ID 切换到顺序(因此,如果您有 10 个问题的测验,第一个 ID 为 11 的问题,最后 ID 21 将成为问题 1-10)。这可以通过order by id轻松处理。在您的 SQL 语句中。

问题的输出很好,单选应该是question_choices中选择的ID ..所有值都是唯一的,并且从代码中不清楚哪个是正确的答案。我建议将元素重命名为 a_<#>因为当您处理它们时,它们实际上是您得到的答案(而不是问题),并且您可能需要考虑在 fieldset 中围绕问题+选择(为了可读性):

<fieldset>
  <b>What was the make/model of my first car?</b><br />
  <input type="radio" value="214" name="a_1">Toyota Camry <br />
  <input type="radio" value="215" name="a_1">Honda Accord <br />
  <input type="radio" value="216" name="a_1">Ford Explorer <br />
  <input type="radio" value="217" name="a_1">Plymouth Voyager <br />
</fieldset>

在提交时,我会验证所有问题至少选择一个选项(除非没有答案也是答案)...这样用户就不会意外提交半填写的表单(通过按 Enter 键)或者因为他们错过了一个问题)。

回答时间

所以第一件事是 quiz.php就是抓$_POST["quizid"]并从数据库加载相关问题和question_choices。

接下来迭代每个答案(1 -> n,其中 n 是问题数)并将它们映射到 question.ID值(value)观。

比较每个答案的值:$_POST["a_#"] (#=1-n) 找出哪个question_choice用户选择的ID - 可以直接插入user_question_answer .

如果您还想存储is_right在该表中,您必须根据 question_choice 检查这些 ID看看是否 is_right_choice设置{您实际上双重存储了此数据,您可以通过删除 is_right 进一步规范化来自user_question_answer因为您已经可以将答案(通过 choice_id )映射到 question_choices并检查它是否正确}

你就完成了!

关于php - 使用 PHP 和 MySQL 填充 Quiz Web 应用程序表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7181563/

相关文章:

javascript - 尝试将值插入到自动生成的元素中

PHP 在所有可能的组合的字符串中查找电话号码

php - 如何在 laravel spark 中创建本地发票?

html - 额外间距图像响应网站

javascript - JS Canvas - 保存透明图像

jquery - 从 JSON 数据创建联系人表

php - fputcsv() 不转义双引号吗?

c# - 如何在一种方法中填充两个表(一对多)并自动添加外键

mysql - 此相关子查询的更高效版本

mysql - 在squirrel sql中创建一个mysql存储过程