使用PHP和HTML进行“测验”

时间:2012-12-09 15:28:57

标签: php

我正在处理一个个人项目,部分想法涉及用户回答五个问题,并根据回答,它会引导您进入3个不同故事中的一个。我目前正在使用CSS-Tricks中的简单测验作为模板,并且我已使用elseif语句对其进行了修改,以使所有答案都正确无误。我现在面临的问题是,我并不完全确定如何根据回复将其指向其中一个不同的文件。

该脚本的工作原理是在此处输出,收集和显示问题(如您所愿,可以在网站上看到)。

它相对简单,因为所有的" A"答案指向一个故事,所有" B"答案指向另一个和同样的" C"。显然,由于我试图编辑的测验的性质,它想要"评分"他们而不是收集结果并根据它做出决定。

<?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'];

   $responseA = 0;
   $responseB = 0;
   $responseC = 0;

   if ($answer1 == "A") { $responseA++; }
   elseif ($answer1 == "B") {$responseB++; }
   elseif ($answer1 == "C") {$responseC++; }

   if ($answer2 == "A") { $responseA++; }
   elseif ($answer2 == "B") {$responseB++; }
   elseif ($answer2 == "C") {$responseC++; }            

   if ($answer3 == "A") { $responseA++; }
   elseif ($answer3 == "B") {$responseB++; }
   elseif ($answer3 == "C") {$responseC++; }            

   if ($answer4 == "A") { $responseA++; }
   elseif ($answer4 == "B") {$responseB++; }
   elseif ($answer4 == "C") {$responseC++; }            

   if ($answer5 == "A") { $responseA++; }
   elseif ($answer5 == "B") {$responseB++; }
   elseif ($answer5 == "C") {$responseC++; }            

   if ($responseA) { echo '<a href="sin.php">Next Page</a>'; }
   elseif ($responseB) { echo '<a href="mys.php">Next Page</a>'; }
   elseif ($responseC) { echo '<a href="ils.php">Next Page</a>'; }

?>

所以,如果有人能指出我正确的方向,我会很感激。当我想到它时听起来很简单,但它比我为学习项目计划的要复杂得多!

修改

我已经更新了代码以反映cbronson的建议,它确实比以前好多了!我现在遇到的问题是似乎没有计算responseC。前两个变量完美地工作,其中任何组合都会产生A或B但是当我选择所有C时,它会向#34; mys.php&#34;发出链接。而不是&#34; ils.php&#34;。

编辑2

让它再次运作。傻,傻,傻。谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

而不是单个响应变量,为每个答案(A,B和&amp; C)创建三个单独的变量,并为每个测试结果的每个var添加一个。然后,无论哪个响应变量有更多结果(最常选择),将是您的总体答案。领带打破将取决于你。

例如,如果我回答测验:1)A 2)B 3)C 4)A 5)A;变量应该是:responseA = 3,responseB = 1,responseC = 1.变量响应A大于B和C,所以指向响应A的故事。

答案 1 :(得分:-3)

我认为php不是正确的方法。我使用javascript来制作像这样的simaler代码。如果它有帮助我可以给你。回复一下吧!谢谢!