0

我正在为在线实验构建一个多页表单,其中将涉及向不同用户显示不同版本的问题。有没有一种简单的方法来创建包含不同页面文件组合的页面序列?假设我有这些文件:1A.php1B.php(第 1 页);2A.php2B.php(第 2 页);3A.php, 3B.php, 3C.php, 3D.php,3E.php3F.php(第 3 页)等等,我将如何创建一组独特的导航路径?例如,一个可能是 [ 1A.php-> 2B.php-> 3E.php-> 4B.php] 而另一个是 [ 1A.php-> 2B.php-> 3A.php->4C.php]。(我是 PHP 新手,所以我怀疑这可能不是最复杂的做事方式,但只要可行,我就很高兴。)每个页面都有一个<input type="submit">按钮,并通过单独的 PHP 文件连接到数据库。

这个想法是将用户从起始页面随机重定向到(12)个预设序列之一。

有什么建议么?

编辑:这里的目标不是生成所有可能的问题集。澄清一下,目标是指定 12 种可能的页面组合(出于与实验设计有关的原因)。问卷将有一个起始页,从这里我想将受访者重定向到 12 个分支之一。

4

4 回答 4

0

所以你想根据你的选择将不同的内容加载到页面中?如果是,请执行以下操作:

<a href="1A.php?id=1B">1B</a>
if(isset($_GET["id"])){

//loads page 1A.php?id=1B with whatever html or php you want to load

}
else {

//loads page 1A.php ,with default content

}

您可以添加任意数量的链接,并将所有内容加载到 1 个页面中,尽管如果您有两个以上的页面,您必须在一个巨大的开关中为每个页面编写代码,或者从数据库中加载内容(其中我建议)。

于 2013-02-27T09:02:28.517 回答
0
$questionaires = array('1a','1b',...,'2a','2b',...,'3a'...);//list all those filenames here

function generate_questionaire(&$array)
{
    $key = rand(0, count($array);
    unset($array[$key]);
    return $key;
}

so call that function every time you want to include a `php` file thus:
<?php
$questionNum = generate_questionaire($questionauires);
include_once($questionNum.'.php');
?>
于 2013-02-27T09:16:44.000 回答
0

这应该可以解决问题:来自答案https://stackoverflow.com/a/10466745/1481489的http://pyrus.sourceforge.net/Math_Combinatorics.html 顺便说一句,您正在谈论排列:排列 - 所有可能的集合数字

于 2013-02-27T09:46:12.500 回答
0

在您的表单中,在每个页面上,都有一个名为 step 的隐藏字段,如下所示

<input type="hidden" name="step" value="1"> // this is for step 1.. value="2" for step 2 etc

在重定向之前的处理文件中执行以下操作

$nextstep = (int)$_POST['step'];
$nextstep++;
$optionsarray = array('A','B','C','D','E','F','G','H','I','J','K','L');
header('Location: ' . $nextstep . $optionsarray[rand(0,11)] . '.php');

这将随机选择一个选项..但分配下一步编号(1,2,3等)

我想这就是你所追求的..

编辑:这个呢

$nextstep = (int)$_POST['step'];
$nextstep++;
$stepsarray = array('1'=>5,'2'=>6,'3'=>2,'4'=>6); // '1'=>5 (step 1, 5 posibilities)  '2'=>6 (step 2, 6 posibilities) etc..
$optionsarray = array('A','B','C','D','E','F','G','H','I','J','K','L');
header('Location: ' . $nextstep . $optionsarray[rand(0,$stepsarray[$nextstep])] . '.php');

所以它的作用是有一个名为的数组$stepsarray- 它告诉你每个步骤有多少可能性..然后使用rand仍然生成 url,但可能的最大数量是下一步的最大可能性..这可能对你更好,但如果你对你的设置很满意然后别担心:-)

于 2013-02-27T11:25:56.753 回答