随机化 - 并记住随机化 - php 中的多项选择题

2024-01-30

Problem:

我正在尝试为我的同学编写一个多项选择测验 - 主要是为了帮助我自己的学习 - 因此我正在使用 PHP (5.2.08) 和 MySQL (5.0.32) 创建一个基于 Web 的多项选择测验

问题表是:

+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(6)       | NO   | PRI | NULL    | auto_increment | 
| question | varchar(200) | NO   |     | NULL    |                | 
| correct  | varchar(80)  | NO   |     | NULL    |                | 
| wrong1   | varchar(80)  | NO   |     | NULL    |                | 
| wrong2   | varchar(80)  | NO   |     | NULL    |                | 
| wrong3   | varchar(80)  | NO   |     | NULL    |                | 
+----------+--------------+------+-----+---------+----------------+

一个问题的 print_r($questions) 输出示例:

Array
(
    [0] => Array
        (
            [id] => 1
            [question] => What is the correct pipeline pressure for Nitrous Oxide (<abbr title="Nitrous Oxide.">N<span class="chem-notation">2</span>O</abbr>)?
            [answers] => Array
                (
                    [0] => Array
                        (
                            [correct] => 1
                            [answer] => 60<abbr title="Pounds per square inch">PSI</abbr>.
                        )
                    [1] => Array
                        (
                            [correct] => 0
                            [answer] => 45<abbr title="Pounds per square inch">PSI</abbr>.
                        )
                    [2] => Array
                        (
                            [correct] => 0
                            [answer] => 30<abbr title="Pounds per square inch">PSI</abbr>.
                        )
                    [3] => Array
                        (
                            [correct] => 0
                            [answer] => 15<abbr title="Pounds per square inch">PSI</abbr>.
                        )
                )
        )

PHP 检索问题/答案并分配给变量:

  $results = $results2 = mysql_query("
    SELECT questions.id AS id,
     questions.question AS q,
     questions.correct AS c,
     questions.wrong1 AS w1,
     questions.wrong2 AS w2,
     questions.wrong3 AS w3
    FROM questions
    ORDER BY questions.id
    LIMIT 40")
    or die("Oops, unable to access database at this time." . mysql_error());

 while ($row = mysql_fetch_array($results)) {
  if (!isset($i)) {
   $i = 0;
  }
  else {
   $i = $i;
  } 

  $answers[$i]  = array(
                  0=>array (correct => 1, answer => $row['c']),
                  1=>array (correct => 0, answer => $row['w1']),
                  2=>array (correct => 0, answer => $row['w2']),
                  3=>array (correct => 0, answer => $row['w3'])
                  );

  $questions[$i] = array(id=>$row['id'],
                   question=>$row['q'],
                   answers=>$answers[$i]);

  $correctAnswer[$i]    = array($row['c']);
            $i++;
 }

显示问题/答案:

<?php

require_once 'incs/dbcnx.php';
require_once 'incs/questions.php';

echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
    <title>Multiple choice questions for ODP students.</title>
    <link rel="stylesheet" type="text/css" href="css/stylesheet.css" />

</head>

<body>

<?php

$submitted  = $_POST['submit'];
$quesions   = $_SESSION['questions'];
$correctAnswers = $_SESSION['correctAnswer'];

if (isset($submitted) && $submitted == "1") {

    // display the results.

echo "<form>";
    for ($i=0;$i<sizeof($questions);$i++) {

        echo "\t\t<fieldset>\n\n";

        echo "\t\t<label>\n\t\t\t<span class=\"qNum\">Q" . $questions[$i][id] . ": </span>\n\t\t\t";
        echo $questions[$i][question] . "\n\t\t</label>\n";

            $submittedName = (string) "question" . $questions[$i][id];

        for ($c=0;$c<sizeof($questions[$i][answers]);$c++) {

            if ($_POST["$submittedName"] == $c) {
                if ($questions[$c][answers][$c][correct] == 1) {
                    echo "\n\t\t<span class=\"correct\"><span class=\"hint\">✓</span>";
                    echo "<input checked type=\"radio\" name=\"question" . $questions[$i][id] . "\"";
                    echo " value=\"$c\" />";
                }
                else {
                    echo "\n\t\t<span class=\"submitted\"><span class=\"hint\">✗</span>";
                    echo "<input type=\"radio\" name=\"question" . $questions[$i][id] . "\"";
                    echo " value=\"$c\" />";
                }
            }
            elseif ($questions[$c][answers][$c][correct] == 1) {
                echo "\n\t\t<span class=\"thisOne\">";
                echo "<input type=\"radio\" name=\"question" . $questions[$i][id] . "\"";
                echo " value=\"$c\" />";
            }
            else {
                echo "\n\t\t<span class=\"optionLine\">";
                echo "<input disabled type=\"radio\" name=\"question" . $questions[$i][id] . "\"";
                echo " value=\"$c\" />";
            }

            echo $questions[$i][answers][$c][answer] . "</span>";
        }
        echo "\n\n\t\t</fieldset>\n\n";
    }

echo "</form>";

}

else {
    // show the form
?>
    <form enctype="form/multipart" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

<?php

    for ($i=0;$i<sizeof($questions);$i++) {

        echo "\t\t<fieldset>\n\n";

        echo "\t\t<label>\n\t\t\t<span class=\"qNum\">Q" . $questions[$i][id] . ": </span>\n\t\t\t";
        echo $questions[$i][question] . "\n\t\t</label>\n";


        for ($c=0;$c<sizeof($questions[$i][answers]);$c++) {
            echo "\n\t\t<span class=\"optionLine\">";
            echo "<input type=\"radio\" name=\"question" . $questions[$i][id] . "\"";
            echo " value=\"$c\" />";
            echo $questions[$i][answers][$c][answer] . "</span>";
        }
        echo "\n\n\t\t</fieldset>\n\n";
    }



?>

    <fieldset>

        <input type="reset" value="clear" />
        <input type="submit" value="submit" />
        <input type="hidden" name="submit" value="1" />

    </fieldset>

    </form>
<?php

}
?>

<div id="variables">
</div>
</body>

</html>

我想做的是重新排序答案并记住重新排序(使用-我认为-的值$questions[$i][answers][$c][correct]确定答案是 true ('1') 还是 false ('2')。但我想我在某个地方迷失了方向。如果有人能提供任何帮助和建议,我们将非常欢迎。

就像任何人都愿意将代码示例编辑到必要的程度一样(太多了,我只是不确定什么是必要的信息)。

Thanks!


你的数据表太糟糕了。您需要一张表来存放问题,另一张表来存放答案。答案表中的每个条目都引用问题表中的问题,并具有指示其是否是正确答案的标志。

So, the QUESTIONS表有以下字段:

  • QUESTION_ID
  • QUESTION_TEXT
  • QUESTION_TYPE-- 比如 MC、TF、FIB...

The ANSWERS表有以下字段:

  • ANSWER_ID
  • QUESTION_ID
  • ANSWER_TEXT
  • IS_CORRECT

让您的生活变得无限轻松,并消除存在的理由对于这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

随机化 - 并记住随机化 - php 中的多项选择题 的相关文章

  • 在 VBA 中从范围创建数组

    我遇到了一个看似基本的问题 但找不到任何资源来解决它 简而言之 我只想将一系列单元格 所有一列 的内容加载到数组中 我能够通过以下方式完成此任务 DirArray Array Range A1 Range A2 但由于某种原因 我无法以这种
  • CodeIgniter/PHP - 从视图内调用视图

    基本上 对于我的网络应用程序 我正在尝试更好地组织它 目前 每次我想加载页面时 我都必须从控制器中执行此操作 如下所示 this gt load gt view subviews template headerview this gt lo
  • Javascript 中 Object.entries 的数组解构

    这是有问题的代码 const posts data id 1 date 2019 02 03 ev filter 1 art foodie ev filter 2 value1 value2 ev filter 3 value1 value
  • 如何在PHP中完成http响应并进行进一步处理?

    就我而言 我需要向客户端回显一个标志并发送一封电子邮件 现在客户端需要等待电子邮件发送 但我想把这两个步骤分开 该怎么做呢 你可以看一下异步运行 PHP 任务 https stackoverflow com questions 858883
  • 项目链接在 Wamp 服务器上不起作用

    我正在另一台计算机上安装 Wamp 服务器来运行中型数据库和 UI 我已成功阻止 IIS 并将服务器路由到 Localhost 8080 但是每当我尝试从 localhost 主页访问我的项目时 在 www 文件中 我被重定向到页面未找到错
  • 我应该在 Symfony 中哪里放置既不是控制器也不是模型的类?

    对于我的应用程序包 我需要一些既不是控制器也不是模型的类 例如 我想要一个scorecard具有诸如 技能 效率 美丽 等成员的类 此外 它可能具有诸如 meanScore 之类的成员方法 getters 这样的类在 Symfony 框架中
  • 如何捕获反序列化异常?

    PHP 是否可以在以下情况下捕获异常 unserialize 产生错误 一个简单的方法是 ret unserialize foo if ret null Error case 但这不是最现代的解决方案 最好的方法是像前面提到的那样有一个自定
  • php 包含打印 1

    我编写了以下代码 当我将 include 函数与旨在输出到页面的函数 例如 或 echo include foo php 结合使用时 它会返回包含内容 但在已包含的内容后面带有 1 echo include foo php 应该 inclu
  • 从 PHP 启动守护进程

    对于网站 我需要能够启动和停止守护进程 我目前正在做的是 exec sudo etc init d daemonToStart start 守护进程已启动 但 Apache PHP 挂起 做一个ps aux透露sudo它本身变成了僵尸进程
  • 唯一的图像哈希值即使 EXIF 信息更新也不会改变

    我正在寻找一种方法来为 python 和 php 中的图像创建唯一的哈希值 我考虑过对原始文件使用 md5 和 因为它们可以快速生成 但是当我更新 EXIF 信息 有时时区关闭 时 它会更改总和 并且哈希也会更改 有没有其他方法可以为这些文
  • PHP 搜索部分字符串

    如何在键入时搜索部分字符串 不使用 MySQL 例如 MySQL 中的 LIKE 函数 但在搜索字符串时使用 PHP 例如 但这显然行不通 但是有没有一个函数可以搜索部分字符串 那太好了 EDIT 如果它在数组中怎么办 如果我使用 strp
  • PHP 何时实现了函数使用闭包? [复制]

    这个问题在这里已经有答案了 我在 PHP 手册中找不到解释的部分use 我有代码 num 0 array walk recursive REQUEST function mValue use num num 我的 Eclipse 抱怨 Pa
  • Symfony2 - 在自定义验证器中调用 EmailValidator

    我正在创建一个自定义验证器约束来验证 联系人 类似于 John Doe 电子邮件受保护 gt 遵循Cookbook http symfony com doc current cookbook validation custom constr
  • 使用排序函数按 NSDates 对数组进行排序[重复]

    这个问题在这里已经有答案了 我有一个名为的模型类Event import Foundation import MapKit public class Event let id Int var title String let status
  • jQuery 相当于 underscore.js 的 groupBy

    jQuery 中是否有一个内置函数可以执行相当于http underscorejs org groupBy http underscorejs org groupBy 有什么解决方法吗 Thanks 不 jQuery 不是为数据处理而设计的
  • 使用 yaml 路由描述时如何在运行时获取 Symfony2 中的路由名称?

    在这里你可以找到我的n关于 Symfony2 的第一个问题 我正在与一个分页捆绑 https github com makerlabs PagerBundle wiki使用中提供的路由名称routing yml文件 从我的角度来看 这种方法
  • Yii2 无效调用:设置只读属性

    我有一个Post具有多对多关系的模型Tags 在 Post 模型中定义 public function getTags return this gt hasMany Tags className id gt tag id gt viaTab
  • Nginx 安全链接模块不适用于 php 文件,但适用于静态文件

    我在用http nginx org en docs http ngx http secure link module html http nginx org en docs http ngx http secure link module
  • 单元测试和静态方法

    阅读并学习单元测试 试图理解以下帖子 http misko hevery com 2008 12 15 static methods are death to testability 这解释了静态函数调用的困难 我不太清楚这个问题 我一直认
  • 如何强制下载图片?

    我的页面上有一个动态生成的图像 如下所示 img src 我不想告诉我的用户右键单击图像并点击保存 而是想公开一个下载链接 单击该链接将提示下载图像 如何实现这一目标 最初我在 js 中尝试这样做 var path my image att

随机推荐

  • 生成多个相同的精灵

    我目前正在开发一款名为 Table Wars 的游戏 这是一款适合两名玩家的回合制策略游戏 进展一直很顺利 直到我遇到了产卵单位的问题 该程序不会产生多个相同的单位 也不会在旧的单位死亡后重生新的单位 以下是一些可能有帮助的信息 每个类都存
  • 在 UIImagePickerController 中隐藏快门

    我在 iPhone 应用程序中为相机视图设计了虹膜快门动画 不幸的是 即使我隐藏相机控件并创建自定义的cameraOverlayView 当视图出现时似乎也无法隐藏Apple的快门 当视图出现时 我使用 UIImagePickerContr
  • SQL - 提高 NOT EXISTS 查询性能

    有没有办法可以提高这种 SQL 查询性能 INSERT INTO WHERE NOT EXISTS Validation 问题是当我的表中有很多数据 例如数百万行 时 执行WHERE NOT EXISTS子句如果很慢 我必须进行此验证 因为
  • Keycloak :REST API调用通过管理员用户名和密码获取用户的访问令牌

    我有一个要求 我需要获取用户的访问令牌 我知道管理员用户名和密码 因此可以获得管理员的访问令牌 是否有任何 REST API 可以为我提供使用上述数据的用户访问令牌 有两种方法可以获取访问令牌 一种带有 Rest 客户端 keycloak
  • 如何使用 onclick 提交 Rails AJAX 表单

    如何使用按钮在 Rails 中提交 AJAX 表单 My Code Controller def list events ExternalEvent all if params city id nil events events where
  • 使用 Python 从 PowerPivot 模型中提取原始数据

    当我必须使用 Python 从 PowerPivot 模型中读取一些数据时 看似微不足道的任务变成了真正的噩梦 我相信在过去的几天里我已经对此进行了很好的研究 但现在我遇到了困难 并且希望得到 Python SSAS ADO 社区的一些帮助
  • 如何将协程添加到正在运行的异步循环?

    如何将新的协程添加到正在运行的 asyncio 循环中 IE 已经在执行一组协程的一个 我想作为一种解决方法 可以等待现有协程完成 然后初始化一个新循环 使用附加协程 但还有更好的办法吗 要将函数添加到已经运行的事件循环中 您可以使用 as
  • Cocoa:NextKeyView - Tab 键顺序

    在我的可可应用程序中 我想更改控件的选项卡顺序 以便我可以从文本字段切换到按钮 我确实将文本字段的 nextKeyView 属性与按钮连接起来 但它似乎根本没有效果 我已经激活了键盘的适当系统设置 因此我现在可以使用 Tab 键切换到所有控
  • 如何使特定的 UITableViewCell 在屏幕上可见,同时 UITableView 中有更多行

    我在表视图中有 20 行 并且我在一半屏幕中设计了 或者说调整了大小 UITableView 使用 IB 并在一半屏幕中显示了与特定 UITableViewCell 相关的内容 哪个单元格的详细信息将显示在半屏中是运行时决定的 我希望在加载
  • Groovy 字符串与 Java 字符串

    我有一个用其他字符串制作的 groovy 字符串 例如 def final PREFIX myprefix def prefix2 PREFIX whatever1 现在假设我有一个HashMap我想使用进行查找prefix2作为密钥的一部
  • 分页是否适用于具有 method="POST" 的表单?

    由于 URI 请求太大 浏览器无法处理 我将高级订单表单从 GET 切换为 POST 一切工作正常 除了遗嘱分页之外 它不断将页面添加到 url 本身http localhost 3000 orders advanced search li
  • Symfony 2.8 文件上传“无法从类型对象读取索引“...”,因为 Entity 未实现 ArrayAcces。”

    我的 editAction 有问题 当我尝试编辑一些产品时 我得到了 无法从类型的对象读取索引 marka ShoeShopBundle Entity Buty 因为它没有实现 ArrayAccess 早些时候我得到 表单的视图数据应该是类
  • FLUTTER:软件包安装错误:SAMSUNG 上失败 [INSTALL_FAILED_INSUFFICIENT_STORAGE]

    我使用 Android Studio 设置了 Flutter 环境 在修复了许多不可想象的问题后 我终于可以在模拟器上运行第一个示例应用程序 但这不会在我的手机上运行 存储空间不足的错误如下所示 Launching lib main dar
  • iPhone/iOS 上的通用 LISP

    是否可以致电Common LispiOS 中的功能 如果是这样 是否可以在动态库中创建它 这取决于您调用 CL 函数的含义 但 ECL 很可能是您的最短路径 从这里开始 因为 ECL 有一个补丁可以更好地适应 iOS http funcal
  • Docker - 无法挂载本地卷,没有这样的文件或目录

    我有一个 docker compose 工作了很长时间然后突然停止了 我正进入 状态 挂载本地卷失败 没有这样的文件或目录 这已经工作了几个月 并在几周前开始出现错误 docker compose 位于源代码管理中 我可以看到它没有改变 我
  • 字符串修剪和分割

    我有一个我读取的文本文件 我需要从中获取值 文本文件示例 Site 01 DBServer LocalHost DBName Database01 Username admin Password qwerty Site 02 DBServe
  • KO 网格显示问题,调整网格大小时显示一行。还包括图像

    使用以下内容 1 视觉工作室 2012 2 热毛巾模板 3 下载ko grid及其CSS 首页 html section class view section
  • 媒体查询宽度小于高度的浏览器尺寸

    媒体查询浏览器大小 其中宽度 I tried media screen and max width 700px and min height 700px 但这是行不通的 请帮忙 使用案例 如果 宽度 gt 高度 我水平对齐项目 如果 宽度
  • 连接到 Kubernetes 上的 MongoDB ReplicaSet

    我已经使用 Helm 和图表在 Kubernetes 上部署了 MongoDB ReplicaSetstable mongodb replicaset 在 Kubernetes 上 我可以使用类似的连接字符串连接到 MongoDB mong
  • 随机化 - 并记住随机化 - php 中的多项选择题

    Problem 我正在尝试为我的同学编写一个多项选择测验 主要是为了帮助我自己的学习 因此我正在使用 PHP 5 2 08 和 MySQL 5 0 32 创建一个基于 Web 的多项选择测验 问题表是 Field Type Null Key