Javascript 要重定向的页面取决于多个“选择”选项

Javascript 要重定向的页面取决于多个“选择”选项,javascript,php,html,Javascript,Php,Html,我试图根据两个选择将页面重定向到相关页面。我不确定这是否最好用Javascript或PHP实现,因为我希望能够轻松地更改页面——这让我认为某种PHP表单处理程序是最好的 如能举出任何例子说明这一点,我们将不胜感激。我已经做了很多事来帮忙。如果我不够具体,我会尝试将页面重定向到某个页面,如果有人选择工程,然后是新南威尔士,如果他们选择健康,然后是新南威尔士等等 提前感谢。找到了解决方案,@Sean的评论提供了大部分,我只是稍微调整了代码。工作PHP: 更干净一点的解决方案会更好 <?php

我试图根据两个选择将页面重定向到相关页面。我不确定这是否最好用Javascript或PHP实现,因为我希望能够轻松地更改页面——这让我认为某种PHP表单处理程序是最好的

如能举出任何例子说明这一点,我们将不胜感激。我已经做了很多事来帮忙。如果我不够具体,我会尝试将页面重定向到某个页面,如果有人选择工程,然后是新南威尔士,如果他们选择健康,然后是新南威尔士等等


提前感谢。

找到了解决方案,@Sean的评论提供了大部分,我只是稍微调整了代码。工作PHP:


更干净一点的解决方案会更好

<?php
if ($_POST['specialist'] == "engineering" && isset($_POST['state'])){
    switch($_POST['state']){
        case "act":
            header("Location: act.php");
        break;
        case "nsw":
            header("Location: nsw.php");
        break;
        case "nt":
            header("Location: nt.php");
        break;
        default:
            // Redirect to a default page if not matched or some other message
        break;
    }
}
?>

我的方法是创建一个数组,将来也可以轻松地用数据库替换它

<?php
$a = Array(
    "engineering" => Array( "act"=>"enggact.php",
                            "nsw"=>"enggnsw.php",
                            "nt"=>"enggnt.php"
                          ),
    "health" => Array(  "act"=>"heltact.php",
                            "nsw"=>"heltnsw.php",
                            "nt"=>"heltnt.php"
                          ),
    "information-technology" => Array(  "act"=>"itact.php",
                            "nsw"=>"itnsw.php",
                            "nt"=>"itnt.php"
                          )
);
if(isset($a[$_POST['specialist']][$_POST['state']])) {
    header("Location:".$a[$_POST['specialist']][$_POST['state']]);
}
?>

希望这有帮助

你可以在php中使用if/else->if$_POST['specialist']==工程和&$_POST['state']==新南威尔士州{$redirect='page1.php'}或者如果$_POST['specialist']==健康和&$_POST['state']==新南威尔士州{$redirect='page2.php'}或者如果……你重定向链接是什么样的?如果有一种模式遵循,例如工程,然后新南威尔士重定向到www.example.com/engg/newsouthwales,健康,然后昆士兰www.example.com/Health/Queensland等,您可以更有效地执行。你打算使用php还是只使用javascript。@karmendra不幸的是,我不确定这个阶段的URL是什么,因为我们仍在处理网站结构,所以可能不得不降低效率。我还更喜欢使用PHP,这样我就可以将表单操作设置为PHP文件,它将从此处重定向。谢谢你的帮助@肖恩,谢谢,肖恩,我要玩一玩。谢谢你的帮助!试过@Sean谢谢你的帮助!谢谢例如,您是否会在下面使用else-if来添加运行状况?随着代码的增长,拥有许多if-else-if将变得非常难以管理和无法读取,在这些情况下,您更喜欢切换case。根据上面的代码,一个用于健康的else if将适合。或者只是另一个if块。因为如果不是工程的话,它会跳过这个区块。仅当需要执行任一代码块时才使用if-else。否则,这只是相同操作的更多代码:@verrucktfuchs我添加了一个替代的较短版本,看看您是否喜欢这个版本。@TomKriek谢谢!这很有道理。非常感谢你在这方面的帮助和时间。非常感谢@karmendra!这也是一个很好的解决方案,我之所以选择另一个,只是因为它可能更容易让我改变。如果我有任何问题,我会试试这个。再次感谢。没问题,你可以选择你喜欢的方式。但是我觉得这段代码很容易扩展、阅读和维护,也就是说,如果你想再添加一个链接,你只需要在数组中添加一个元素。想想当您必须更改/添加一个条目时,您需要添加或修改多少行代码。你添加/更改的代码越多,添加bug的机会就越多,这是我的哲学。非常正确!谢谢-希望我们能很快知道网站结构,并能简化
<?php
$a = Array(
    "engineering" => Array( "act"=>"enggact.php",
                            "nsw"=>"enggnsw.php",
                            "nt"=>"enggnt.php"
                          ),
    "health" => Array(  "act"=>"heltact.php",
                            "nsw"=>"heltnsw.php",
                            "nt"=>"heltnt.php"
                          ),
    "information-technology" => Array(  "act"=>"itact.php",
                            "nsw"=>"itnsw.php",
                            "nt"=>"itnt.php"
                          )
);
if(isset($a[$_POST['specialist']][$_POST['state']])) {
    header("Location:".$a[$_POST['specialist']][$_POST['state']]);
}
?>