使用PHP预先确定页面序列

使用PHP预先确定页面序列,php,forms,Php,Forms,我正在为一个在线实验构建一个多页表单,其中包括向不同的用户显示问题的不同版本。是否有一种简单的方法来创建包含不同页面文件组合的页面序列?假设我有这些文件:1A.php和1B.php(第1页)2A.php和2B.php(第2页)3A.php,3B.php,3C.php,3D.php,3E.php和3F.php(第3页)等等,我如何创建一组独特的导航路径?例如,一个可能是[1A.php->2B.php->3E.php->4B.php],而另一个可能是[1A.php->2B.php->3A.php->

我正在为一个在线实验构建一个多页表单,其中包括向不同的用户显示问题的不同版本。是否有一种简单的方法来创建包含不同页面文件组合的页面序列?假设我有这些文件:
1A.php
1B.php
(第1页)
2A.php
2B.php
(第2页)
3A.php
3B.php
3C.php
3D.php
3E.php
3F.php
(第3页)等等,我如何创建一组独特的导航路径?例如,一个可能是[
1A.php
->
2B.php
->
3E.php
->
4B.php
],而另一个可能是[
1A.php
->
2B.php
->
3A.php
->
4C.php
]。(我对PHP不熟悉,所以我怀疑这可能不是最复杂的方式,但我很高兴,只要它能工作。)每个页面都有一个
按钮,并通过一个单独的PHP文件连接到数据库

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

有什么建议吗


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

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

<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

}

如果(isset($\u GET[“id”])){
//用您想要加载的html或php加载页面1A.php?id=1B
}
否则{
//加载带有默认内容的页面1A.php
}
您可以添加任意数量的链接,并在一个页面中加载所有内容,尽管如果您有两个以上的页面,您必须在一个巨大的开关中为每个页面编写代码,或者从数据库加载内容(我推荐)。

$questionaires=array('1a'、'1b'、'2a'、'2b'、'3a')//在这里列出所有这些文件名
函数生成问卷(&$array)
{
$key=rand(0,计数($array);
未设置($array[$key]);
返回$key;
}
因此,每次要包含“php”文件时都要调用该函数,因此:
这应该可以做到:从答案开始
顺便说一下,您正在谈论排列:

在您的表单中,在每一页上都有一个名为step like so的隐藏字段

<input type="hidden" name="step" value="1"> // this is for step 1.. value="2" for step 2 etc
这将随机选择一个选项..但分配下一步编号(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,但最大可能数是下一步的最大可能数。这可能对您更有效,但如果您对设置方式感到满意,则不要担心:-)

当您此时提交时,是否所有页面都提交到一个“处理”文件,然后重定向到下一页?或者你还没有做到这一点?@DannyHearnah“处理”文件还包含重定向指令,但那是在添加页面变体之前。在任何情况下,我都可以选择坚持我所拥有的,并将12个条件上传到不同的目录(意味着大量重复)。我有一个解决方案给你,我现在就发布答案谢谢-这个建议与我的意图有点不同,但可以完成任务。我最后做的是为每个问题创建一个重定向文件,并像这样从每个页面调用它。此页面根据您的代码随机分配标题
$optionsarray=array('A'、'B'、'C'、'D'、'E'、'F');标题('Location:'.'4'.$optionsarray[rand(0,5)]。.php')因为问题之间的条件数量不同。我保留了“处理”文件中的原始代码,该文件重定向到
nextURL
@tui,我很高兴它有所帮助-我进行了编辑,可能会帮助您将其保存在一个处理文件中
$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');
$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');