2012-02-20 4 views
3

일부 오류 검사를 시도하고 있습니다. html 페이지에서 라디오 버튼을 선택하지 않으면 php로 전달되어 라디오 버튼과 링크를 선택하여 해당 페이지로 돌아가도록합니다.PHP의 switch 문

PHP 그것이 확인 라디오 버튼 중 하나를 발견되지 않는 오류를주고있다

<!DOCTYPE html> 
<html> 
    <head> 
     <title></title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    </head> 
    <body> 
     <div> 
      <form action="Week7PHP.php" method="post"> 
       <input type="radio" name="city" value="sf">San Francisco<br /> 
       <input type="radio" name="city" value="paris">Paris<br/> 
       <input type="radio" name="city" value="tokyo">Tokyo<br/> 
       <input type="submit" id="Submit"> 
      </form> 
     </div> 
    </body> 
</html> 

<?php 


switch($_POST["city"]){ 
    case "sf": 
     echo "Welcome to San Francisco, enjoy the beautiful weather."; 
     break; 
    case "tokyo": 
     echo "Welcome to Tokyo, enjoy the sushi."; 
     break; 
    case "paris"; 
     echo "Welcome to Paris, enjoy the Eiffel Tower."; 
     break; 
    Default: 
     echo "Please pick a city."; 
     echo "<a href=\"/week7.html\">Go Back</a>"; 


} 

?> 

HTML : 포함

내 현재 코드입니다. 공지 사항 : 정의되지 않은 인덱스 : 도시

당신은 default: 옵션 다음 break;를 추가 할 필요가
+1

무엇 "오류"가주고있다? – penartur

+0

전환하기 전에 echo $ _POST [ "city"]. 그것이 무엇을 제공하는지 확인하십시오. –

+0

알림 : 정의되지 않은 색인 : 도시 "paris"구문 다음에 세미콜론을 제외하고 오류가 – stytown

답변

2

이유가

나는 개인적으로 내 _POST_GET_REQUEST 전역을 사용하지 것이다 게시하여 설정하기 전에 당신이 $_POST["city"]를 사용하는 오류가 발생 할 수있다 :이 isset() function을위한 완벽한 사용이다 스위치. 스크립트가 얼마나 기본적인지 상관없이 컨트롤러를 코딩하여 이러한 "특수"변수를 확인하고 처리합니다.

뭔가처럼 간단 :

<?php 
if(isset($_POST['city'])){ 
    $city=$_POST['city']; 
}else{ 
    $city=''; 
} 
//Or simpler 
$city=(isset($_POST['city']))?$_POST['city']:''; 



//The use $city 
switch($city){ 
    case "sf": 
     echo "Welcome to San Francisco, enjoy the beautiful weather."; 
     break; 
    case "tokyo": 
     echo "Welcome to Tokyo, enjoy the sushi."; 
     break; 
    ... 
    ... 

?> 
+0

데이터 조작이없는 경우 두 번째 변수를 할당하는 이점을 이해하지 못합니다. 'isset()'내부의'switch '가 적절하게 호출되는 경우는 거의 없습니다. – amindfv

+0

제출 버튼이'if (isset ($ _ POST [ 'submit']))')로 설정되어 있는지 확인해야합니다. PHP가 –

+0

이 될 경우 항상 사용하기 전에 변수를 검사하고 내 대답 아직 논리적 인 것 같습니다. –

3

어떤 옵션이 포착되어 있지 않은 경우 오류가 발생합니다. 그리고 "paris"뒤에 콜론을 사용해야합니다.

<?php 


switch($_POST["city"]){ 
    case "sf": 
     echo "Welcome to San Francisco, enjoy the beautiful weather."; 
     break; 
    case "tokyo": 
     echo "Welcome to Tokyo, enjoy the sushi."; 
     break; 
    case "paris": 
     echo "Welcome to Paris, enjoy the Eiffel Tower."; 
     break; 
    default: 
     echo "Please pick a city."; 
     echo "<a href=\"/week7.html\">Go Back</a>"; 
     break; 

} 

?> 
+6

마지막 옵션 이후에'break' 할 필요는 없습니다. 마지막 옵션이고'case'가 더 이상 일치 할 수 없기 때문입니다. – deceze

+0

$ _POST [ 'city']가 설정되지 않았기 때문에 여전히 오류가 발생합니다. – amindfv

3

문제는 switch 문이 하나도 설정되어 있지 않은 경우 경우에 $_POST["city"] 액세스를 시도 할 것입니다.

if (isset($_POST["city")) { 
    /* switch statement */ 
} else { 
    /* form element*/ 
}