2010-06-28 2 views
3

여기 내 코드입니다 : I 0을 입력하면필드에 0을 입력하면 비어있는 것으로 등록됩니까?

if (isset($_POST['addmonths'])){ 
    if (!empty($_POST['months'])){ 
     if (is_numeric($_POST['months'])){ 
      $monthstoadd = $_POST['months']; 
      if ($monthstoadd < 1){ 
       mysql_query("UPDATE users SET months='lifetime' WHERE username='$lookupuser'"); 
       echo "Successfully set " . $lookupuser . " to lifetime"; 
      }elseif ($monthstoadd > 0){ 
       $monthstoadd = $monthstoadd*2592000; 
       mysql_query("UPDATE users SET months=months+'$monthstoadd' WHERE username='$lookupuser'"); 
       echo "Successfully added " . $_POST['months'] . " months to " . $lookupuser . "'s paid time."; 
      }else{ 
       echo "Error."; 
      } 
     }else{ 
      echo "Months need to be numeric. If you're trying to set lifetime, use 0."; 
     } 
    }else{ 
     echo "You didn't enter anything."; 
    } 
} 

, 그것은 일생에 사용자를 설정해야하지만, 대신 단지 에코 You didn't enter anything.이 문제를 해결하는 방법을 정말 확실하지. 어떤 아이디어? 일반적으로

답변

0

===과 함께 비어있는 레지스터 대신 비어 있는지 확인하려면 유형을 확인해야합니다.

if ($_POST['months'] !== ''){

이는 경우 정확히 해당하는 빈에 확인합니다. 그렇지 않으면 통과합니다.

1

, 당신은 (배열 키) (존재하지 않는 false 단지 변수의 반환 또는 null입니다) isset에 대한 empty 또는 array_key_exists을 대체 할 수 있습니다.

이 경우

, 당신은이 POST 데이터이기 때문에, null이 브라우저는 입력을 하나 보낼 수 있거나 전송 (값 없을 것

if (!isset($_POST['months']) || $_POST['months'] === "") 
또는

if (!array_key_exists('months', $_POST) || $_POST['months'] === "") 

할 수 빈 문자열. PHP는 ""으로 변환됩니다. 따라서 issetarray_key_exists은 서로 바꿔 사용할 수 있습니다. 그러나 isset은 기능이 아니기 때문에 실행하는 것이 더 빠르기 때문에 선호됩니다 (작성하는 것이 더 빠르다는 것은 말할 것도 없습니다).

2

필드에 0을 입력하면 비어있는 것으로 등록됩니까?

예, 그렇습니다. the docs for empty에서 :

다음 일이 빈 것으로 간주됩니다 :

(문자열로 0) ""(정수로 0) (빈 문자열)
0
"0"
NULL
거짓
array() (빈 배열)
var $ var; (선언 된 변수이지만 클래스에 값이 없음)

아이디어가 있으십니까?

empty 당신이 검사하고있는 조건에 맞는 것이 아닌 것 같습니다 (뭔가 입력 했습니까?). you'r 다른 사에 $_POST['months]를 사용하기 때문에

if (trim($_POST['months']) != ''){ 

: 이미 분명히 이 값이 있어야 나타 내기 위해 마커 필드를 사용하고 있기 때문에, 당신은 trim과 빈 문자열에 대한 수표를 고려해 볼 수 있습니다 장소, 나는 또한 아마 지역 변수에 트림 버전을 캐시거야.

+0

정보 주셔서 감사합니다,하지만 그 질문에 대답하지 않습니다. – Rob

+0

이 답변을 확장하려면 값이 정확히 0인지 확인하십시오. if (! _ empty [$ _ POST [ 'months']) || ($ _POST [ 'months'=== 0)) { ' – Joseph

+0

@ 로브 : 제목에서 물어 본 질문에 대한 대답으로 전반적인 질문을 요약합니다 ("빈 칸"이 작동하지 않는 이유는 무엇입니까?).). 어떻게 수정 할지를 설명하기 위해 뭔가를 추가했습니다. –

관련 문제