不久前我需要为一个客户构建一个测验。几个选择题,提交按钮,它会对测验进行评分并告诉你你的成绩。它有点傻乎乎的,并且是非常简单的 PHP,但我认为它可能是某些人的一个好的入门教程,以及在 HTML 中构建表单和使用 PHP 在另一个页面上处理数据的基本理论的一个很好的入门介绍。
测验的问题被包裹在一个表单中
<form action="grade.php" method="post" id="quiz">
... questions here ...
</form>
表单通常有提交按钮,这个也不例外。当点击提交按钮时,它会将表单中每个输入的数据“POST”到提供的“action”URL。
测验本质上是问题的列表,所以有序列表就可以,所以单个问题看起来像这样
<li>
<h3>CSS Stands for...</h3>
<div>
<input type="radio" name="question-1-answers" id="question-1-answers-A" value="A" />
<label for="question-1-answers-A">A) Computer Styled Sections </label>
</div>
<div>
<input type="radio" name="question-1-answers" id="question-1-answers-B" value="B" />
<label for="question-1-answers-B">B) Cascading Style Sheets</label>
</div>
<div>
<input type="radio" name="question-1-answers" id="question-1-answers-C" value="C" />
<label for="question-1-answers-C">C) Crazy Solid Shapes</label>
</div>
<div>
<input type="radio" name="question-1-answers" id="question-1-answers-D" value="D" />
<label for="question-1-answers-D">D) None of the above</label>
</div>
</li>
请注意,那里有四个输入,但它们都具有“radio”类型和相同的“name”属性。它们基本上以这种方式充当单个输入,因为一次只能选择其中一个,并且数据作为单个值进行 POST。
最后,我们的提交按钮
<input type="submit" value="Submit Quiz" />
在我们的 grade.php 文件中,我们需要获取已 POST 的值,然后检查每个值并增加一个正确的数字,最后显示一个 div 显示正确答案的数量
<?php
$answer1 = $_POST['question-1-answers'];
$answer2 = $_POST['question-2-answers'];
$answer3 = $_POST['question-3-answers'];
$answer4 = $_POST['question-4-answers'];
$answer5 = $_POST['question-5-answers'];
$totalCorrect = 0;
if ($answer1 == "B") { $totalCorrect++; }
if ($answer2 == "A") { $totalCorrect++; }
if ($answer3 == "C") { $totalCorrect++; }
if ($answer4 == "D") { $totalCorrect++; }
if ($answer5) { $totalCorrect++; }
echo "<div id='results'>$totalCorrect / 5 correct</div>";
?>
感谢 Chris!我认为数字是一个陷阱问题?!
第 5 个,doh!
这确实很基础。为什么你不使用后台的一个小型数据库来更容易地维护和移植呢?
这个网站已被证明正是我所需要的。
谢谢,很多很棒的技巧。
我是 PHP 新手,所以我喜欢这种类型的帖子。感谢这个很酷的技巧。
它真的不需要提交到另一个页面。让它提交到自身并使用条件语句来检查是否按下了“提交”。然后检查答案并显示结果。
@Bogdan 对于像这样简单的东西,使用数据库的开销是不需要的。
总的来说,这是一个非常不安全的基础程序。
CSS 代表疯狂的实体形状 DOH!!
我最讨厌这个测验的地方在于它提醒我 IE6 存在了多久,而我仍然必须为它编写代码。
2001 年发生了两件可怕的事情
1) 911 恐怖袭击
2) IE6 发布
@Bob
这个不错!
哇,我正在浏览 Css-Tricks,它刚刚更改/更新了……非常棒
-Kelton
非常直接,但很好的教程!
笔记
1 - 在这种情况下,“if”不需要花括号。
2 - 新的设计很不错……我喜欢侧边栏上的标题!
保重;)
你说得对,它们不需要花括号。但是,使用花括号是良好的编码风格,我一直都这样做。不要担心它会降低代码速度,它不会!我的第一个计算机科学课程,我的教授总是让我们使用它们,并且它一直伴随着我。
-Tom
http://TDevelops.com
TomSmallwood 的推文
它非常有用,对于 WP 好的插件来说,这是一个好主意!
XD
喜欢新的风格 Chris……
喜欢在帖子中添加测验的想法(偶尔为 Kick2Kick 做),是否有已知的好的插件可以为 WordPress 博客做测验?
没有现成的……但搜索了一下就找到了相关内容
https://wordpresstheme.cn/extend/plugins/quiz/
喜欢新的设计
谢谢这个。到目前为止,我对 PHP 的了解不多,但我想了解更多。
有人知道学习 PHP 的很酷的网站(或书籍)吗?
为什么不使用列表?
为什么使用 div?如果你在你的 css 中将输入的 clear:both 设置为清除,然后将标签浮动到输入的旁边,你就可以不用它们了。
你好 Chris Coyier。
祝贺这篇帖子,我将其翻译成葡萄牙语并在我的博客上发布,并保留您的所有版权,可以吗?
查看
http://ruancarlos.com.br/Blog/criando-um-simples-quiz-com-php/
谢谢我的朋友
基础且干净。谢谢。
谢谢,我正在做一个测验,但它是在 asp.net 中。感谢提示
你好,
我知道这是一个旧话题,但如果有人能回答我的问题,我将非常高兴。现在这个教程对于制作简单的静态测验非常不错,但是如果我想使用数据库和用户友好的输入表单来添加问题和答案,以及让测验每次人们访问时都使用**随机**问题,我该怎么做呢?
嗨,大家好,
如果您能提供一些建议,我将不胜感激 :)
我正在创建自己的网站,这将是一个作品集,帮助我获得毕业生 PHP 网站开发人员的工作。
我想在网站中添加一个测验,用户可以参加,并希望有一个个人资料,他们可以在其中查看他们的结果!
我真的不知道从哪里开始或者在哪里寻找可以帮助我构建和创建这个测验的信息,谁能帮我一下吗?
谢谢
Rich