2015-01-23 5 views
0

두 개의 select 선택 사항에 따라 페이지를 관련 페이지로 리디렉션하려고합니다. 나는 이것이 PHP 페이지 핸들러의 일종이 가장 좋을 것이라고 생각하게하는 페이지를 쉽게 바꿀 수 있기를 원한다면 Javascript 나 PHP로이 것이 가장 잘 될지 확신 할 수 없다. 이 작업을 수있는 방법의페이지가 여러 '선택'선택에 따라 리디렉션됩니다.

JSFiddle

모든 예는 크게 감상 할 수있다. 도움을 주려고 JSFiddle을 만들었습니다. 내가 충분히 구체적이지 않은 경우 누군가가 "엔지니어링"을 선택한 다음 "뉴 사우스 웨일즈"를 선택하면 페이지가 리디렉션되고 다른 페이지는 "건강"을 선택한 다음 "새 남쪽 웨일즈 "등

미리 감사드립니다.

+0

당신은'if' /'else'와 PHP는이 작업을 수행 할 수 있습니다 '] == "뉴 사우스 웨일즈"== "뉴 사우스 웨일즈") == "뉴 사우스 웨일즈"== "뉴 사우스 웨일즈" ") {$ redirect = 'page2.php';} else if ... ' – Sean

+0

링크를 어떻게 리디렉션합니까? 다음 패턴 (예 : "Engineering", "New South Wales")이 www.example.com/engg/newsouthwales로 리디렉션되고 "Health"및 "Queensland"www.example.com/health/로 리디렉션됩니다. 퀸즐랜드 등)보다 효율적으로 할 수 있습니다. 당신은 PHP를 사용하거나 그냥 자바 스크립트가 될 계획입니다. – karmendra

+0

@karmendra 안타깝게도 사이트 구조로 계속해서 놀고 있기 때문에이 단계에서 URL이 무엇인지 확신 할 수 없으므로 덜 효율적으로 수행해야합니다. 나 또한 PHP를 사용하여 PHP 파일에 양식 작업을 설정할 수 있으며, 거기에서 리디렉션되기를 선호합니다. 당신의 도움을 주셔서 감사합니다! – verrucktfuchs

답변

0

@ Sean의 의견이 대부분 제공되었으므로 코드를 약간 조정했습니다. 근무 PHP는 :

<?php if ($_POST['specialist'] == "engineering" && $_POST['state'] == "act"){ header("Location: act.php");} else if ($_POST['specialist'] == "engineering" && $_POST['state'] == "nsw"){ header("Location: nsw.php");} else if ($_POST['specialist'] == "engineering" && $_POST['state'] == "nt"){ header("Location: nt.php");} ...

+0

@Sean 귀하의 도움에 감사드립니다! – verrucktfuchs

1

좀 더 깨끗한 솔루션은

<?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; 
    } 
} 
?> 

당신이 엔지니어 각 시간을 확인하지 않아도이 방법이 될 것입니다. 각기 다른 직업에 대해 여러 가지를 만들 수 있습니다. 이 경우 구현 된 리디렉션 후에 exit(); 또는 break;을 사용하는 것이 좋습니다.

다른 사람들로부터 악용되기 쉽지만 변수를 사용하고 직접 사용하면 더 빨리 만들 수 있으므로 사용 가능한 값을 확인하십시오.

<?php 

$engineering_states = array('act', 'nsw', 'nt', 'qld', 'sa', 'tas', 'vic', 'wa'); 

if($_POST['specialist'] == "engineering"){ 
    if(in_array($_POST['state'], $engineering_states)){ 
     header("Location: $_POST['state'].php"); 
    } 
} 
?> 
+0

감사! 예를 들어 'else if'를 사용하여 아래에 "health"를 추가 하시겠습니까? – verrucktfuchs

+0

if else else if else if else else if else else if else if else else if else if else if else if else if else if else if else if else if else else if else if else if if else 위의 코드에 따르면 건강을위한 경우에는 적합합니다. – karmendra

+0

또 다른'if' 블록. 엔지니어링이 아닌 경우 블록을 건너 뜁니다. 코드 블록 중 하나가 실행될 필요가있을 때만'if-else'를 사용하십시오. 다른 말로하면 같은 액션을위한 코드 일뿐입니다 :) – Rimble

1

내 방식은 배열을 만드는 것입니다 (나중에도 쉽게 데이터베이스로 대체 할 수 있습니다). >`경우 ($ _ POST의 [ '전문가'] == "엔지니어링"&& $ _POST [ '상태 -

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

희망이

+0

대단히 감사합니다 @ karmendra! 이것은 또한 훌륭한 해결책이기도합니다. 왜냐하면 내가 다른 사람과 함께 갔던 이유는 단지 나를 바꾸는 것이 더 쉬울 것이기 때문이었습니다. 문제가 있으면이 문제를 시도해보십시오. 다시 한번 감사드립니다. – verrucktfuchs

+0

문제가되지 않는다면 편하게 사용할 방법을 선택할 수 있습니다. 그러나이 코드는 크기 조정, 읽기 및 유지 관리가 쉽다는 느낌이 들었습니다. 즉, 배열에 요소를 추가하기 위해 하나 이상의 링크를 추가하려는 경우입니다. 변경 사항을 추가해야하는 코드 행 수를 변경하거나 추가해야하는 경우를 생각해보십시오. 더 많은 코드를 추가/버그를 추가하는 더 많은 기회를 변경, 내 철학. – karmendra

+0

매우 사실! 감사합니다. 곧 사이트 구조를 알게되고 간단하게 만들 수 있습니다. – verrucktfuchs

관련 문제