Php 将调查用户重定向到他/她所在的最后一页
我一直在做一项调查,我几乎完成了,但有一个要求真的让我筋疲力尽 用户可以进行调查,共有6组不同的问题,每组问题位于1-6的问题组中。当用户进行问题组1-4并注销时,他/她应重新登录并重定向到问题组5。到目前为止,我的代码正在工作并重定向到前三个页面(questions1.php、people.php和environment.php),但其余页面拒绝 我认为问题在于我的if-elseif声明。我们非常感谢为实现预期结果所提供的任何帮助。干杯 这是密码Php 将调查用户重定向到他/她所在的最后一页,php,sql,mysqli,Php,Sql,Mysqli,我一直在做一项调查,我几乎完成了,但有一个要求真的让我筋疲力尽 用户可以进行调查,共有6组不同的问题,每组问题位于1-6的问题组中。当用户进行问题组1-4并注销时,他/她应重新登录并重定向到问题组5。到目前为止,我的代码正在工作并重定向到前三个页面(questions1.php、people.php和environment.php),但其余页面拒绝 我认为问题在于我的if-elseif声明。我们非常感谢为实现预期结果所提供的任何帮助。干杯 这是密码 if ($row['userid']==$us
if ($row['userid']==$user){
while($row = mysql_fetch_assoc($result_set)){
if($row['question_group_id']==1 && $row['choosen']==1){
header("location:people.php");
}
elseif($row['question_group_id']==2 && $row['choosen']==1){
header("Location:environment.php");
}
elseif($row['question_group_id']==3 && $row['choosen']==1){
header("Location:widerorganization.php");
}
elseif($row['question_group_id']==4 && $row['choosen']==1){
header("Location:procurement.php");
}
elseif($row['question_group_id']==5 && $row['choosen']==1){
header("Location: communication.php");
}
elseif($row['question_group_id']==6 && $row['choosen']==1){
header("Location: notificationpage.php");
}}}
else {
header("Location:questions1.php");
}
这是一个呈现干净代码的问题 我刚刚重新格式化了你的代码。以下是您之前的代码:
if ($row['userid']==$user)
{
while($row = mysql_fetch_assoc($result_set))
{
if ($row['question_group_id']==1 && $row['choosen']==1)
{
header("location:people.php");
}
else if($row['question_group_id']==2 && $row['choosen']==1)
{
header("Location:environment.php");
}
else if ($row['question_group_id']==3 && $row['choosen']==1)
{
header("Location:widerorganization.php");
}
else if ($row['question_group_id']==4 && $row['choosen']==1)
{
header("Location:procurement.php");
}
else if ($row['question_group_id']==5 && $row['choosen']==1)
{
header("Location: communication.php");
}
else if ($row['question_group_id']==6 && $row['choosen']==1)
{
header("Location: notificationpage.php");
}
}
}
else
{
header("Location:questions1.php");
}
解决方案:既然每个条件都有可预测的模式,为什么我们不将这些页面放入关联数组,而不是创建繁琐的if
条件?无论如何,这是我对你的代码的建议调整
<?php
$locations = array(
// Question Group ID => Landing page
1 => 'people.php',
2 => 'environment.php',
3 => 'wideorganization.php',
4 => 'procurement.php',
5 => 'communication.php',
6 => 'notificationpage.php'
);
if ($row['userid']==$user)
{
while($row = mysql_fetch_assoc($result_set))
{
// Here's the Question Group ID
$questionGroupID = $row['question_group_id'];
// Now we determine here
if (isset($locations[$questionGroupID]) && $row['choosen'] == 1)
{
// Defined from the associative array above
header(sprintf("location:%s", $locations[$questionGroupID]));
exit();
}
}
}
else
{
header("location:questions1.php");
}
这是您的代码,按照您的要求,不带循环,带有开关
语句。这可能不会直接起作用,因为关于$newrow
的内容和$row
的来源仍然存在太多的不确定性。但这是一个很好的开始,对于调试来说真的很好。switch
语句允许您对每个案例进行一些自定义修改(正如您在编辑问题之前所做的那样)
还要注意,在header()之后,可能仍会执行一些代码。要防止这种情况,请添加exit()
在每次header()
之后,您在while
语句之外使用$row
,然后您将覆盖它,并在最后一次elseif
中再次使用它。您好,Dave,您的问题的格式真的可以通过一点TLC来实现,这将使我们更容易帮助您@塞巴斯蒂安特罗伊,哈哈…酷…@vonUbisch我刚才看到了..在上一个elsei上如果我去掉了“userid”的行..我把循环外的userid放在循环内,但这会使代码更糟..它甚至没有检查任何东西,而是直接转到questions1.php,这是elsei代码看起来比我的更干净..尽管当我运行它时会重定向到第一个位置people.phpI我很确定这段代码可以完成它的工作:)如果它总是将您重定向到people.php
,这意味着question\u group\u id
列的值是1。如果你能从数据库中显示你使用的查询和源表的结构,那么每个人都能帮助你,这将更有帮助。我正在与一位用户进行测试,他对前3个组进行了调查。因此,此人应该被引导到procurement.php。请让我显示查询和表结构
$page = 'questions1.php';
if ($row['userid'] == $user):
$newrow = mysql_fetch_assoc($result_set);
if ($newrow['choosen'] == 1):
switch ($newrow['question_group_id']):
case 1:
$page = 'people.php';
break;
case 2:
$page = 'enviroment.php';
break;
case 3:
$page = 'widerorganization.php';
break;
case 4:
$page = 'procurement.php';
break;
case 5:
$page = 'communication.php';
break;
case 6:
$page = 'notificationpage.php';
break;
endswitch;
endif;
endif;
header("Location: {$page}");
exit;