我有一个下拉选项在我的php表单…
<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"]);
}
一直弹出没有设置的错误。我意识到,由于php的empty函数的0等于空,所以我将其更改为:
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>
它永远不会为null,所以不能使用is_null()
。它总是被设置为不能使用isset()
。如你所见,0
是空的。因此,要检查一个选项是否已被选中,请检查它是否为空字符串:
if ($_POST["male"] === "") {
$maleErr = "# of people (gender male) required";
} else {
$male = test_input($_POST["male"]);
}
使用严格比较:
if ($male === 0)
===
比较值和类型,因此当0 == ''
为真时,0 === ''
为假。