2015-10-22 10 views
1

我有我的PHP形式的下拉選項...如何爲您在選擇下拉列表中的變量如果選項之一是0

<div class="field"> 
     <label>* Number of People</label> 
     <select class="ui dropdown" name="male"> 
     <option value="">Gender Male</option> 
     <option <?php if ($male == 0) echo 'selected' ; ?> value="0">0</option> 
     <option <?php if ($male == 1) echo 'selected' ; ?> value="1">1</option> 
     <option <?php if ($male == 2) echo 'selected' ; ?> value="2">2</option> 
     <option <?php if ($male == 3) echo 'selected' ; ?> value="3">3</option> 
     <option <?php if ($male == 4) echo 'selected' ; ?> value="4">4</option> 
     <option <?php if ($male == 5) echo 'selected' ; ?> value="5">5</option> 
     <option <?php if ($male == 6) echo 'selected' ; ?> value="6">6</option> 
     <option <?php if ($male == 7) echo 'selected' ; ?> value="7">7</option> 
     <option <?php if ($male == 8) echo 'selected' ; ?> value="8">8</option> 
     <option <?php if ($male == 9) echo 'selected' ; ?> value="9">9</option> 
     <option <?php if ($male == 10) echo 'selected' ; ?> value="10">10</option> 
     </select> 
     <?php if(isset($maleErr)) print ('<span class="error">* ' . $maleErr . '</span>'); ?> 
    </div> 

然而,由於第一個選項是0 ,原來的錯誤檢查是這樣的:

if (empty($_POST["male"])) { 
    $maleErr = "# of people (gender male) required"; 
    } else { 
    $male = test_input($_POST["male"]); 
    } 

不斷彈出錯誤,它沒有被設置。我意識到,因爲0 PHP的空函數等於空的,我把它改成這樣:

if (is_null($_POST["male"])) { 
    $maleErr = "# of people (gender male) required"; 
    } else { 
    $male = test_input($_POST["male"]); 
    } 

是正確的方式來檢查表單字段不爲空?

請讓我知道。謝謝。

附錄

你的意思是這樣的嗎?

<option <?php if ($male === 0) echo 'selected' ; ?> value="0">0</option> 

回答

0

它永遠不會爲空,因此不能使用is_null()。它將始終設置爲不能使用isset()。正如你所見,0是空的。因此,要檢查選項是否已被選中,請嘗試檢查它是否爲空字符串:

if ($_POST["male"] === "") { 
    $maleErr = "# of people (gender male) required"; 
} else { 
    $male = test_input($_POST["male"]); 
} 
+0

這將仍然失敗,因爲'0 ==「」'是真實的。 –

+0

啊,是的。所以我們每個人都是正確的。 – AbraCadaver

+0

@AbraCadaver,感謝您的解答。使用它。欣賞它。 – user273072545345

0

使用strict comparison

if ($male === 0) 

===比較值和類型,因此,儘管0 == ''是真實的,0 === ''是假的。

+0

嘿,請看我在我的帖子上面的附錄。你的意思是這樣嗎?我只是在我的表單上試了一下,我仍然得到了錯誤觸發,即:* *人(性別男性)需要' – user273072545345

+0

@ user27307254534534534543675765:不,我認爲馬克看錯了東西。 – AbraCadaver

+0

這樣猜測,但解決方案是一樣的。 'if(isset($ _ POST ['male'])&&($ _POST ['male'] ===「」)){...性別失蹤....}'。不能做'==「」'或'== 0「,因爲'=='會給出誤報。 –

相關問題