我在表单中有以下代码,当按下提交按钮时,php端使用$_POST['revisionCad']
抓取输入值。
<form method="POST">
<input type="number" class="form-control" placeholder="Revision" name="revisionCad" id="revisionCad" min="0">
<button name="submit" class="btn btn-primary" id="submit" tabindex="5" value="Save" type="submit" style="width:200px;">Create/Change Revision</button>
</form>
&#13;
我的问题
一切正常,除非我将数字0作为输入,$_POST
没有任何价值。我的错误检查告诉,请输入一个号码。
以下是我的错误检查代码
if(isset($_POST['revisionCad'])){
$revisionCad = $_POST['revisionCad'];
}
if(empty($revisionCad)){
erDisplay('Please select a revision for Cadgui');
}
但任何大于0的数字$_POST['revisionCad']
都正确抓取。我尝试删除min
属性以及更改为-1。但是每当我输入数字0时,$_POST['revisionCad']
都没有抓住任何值。谁知道为什么?
答案 0 :(得分:3)
要解释为什么会发生这种情况,您必须仔细查看PHP empty()
函数。从文档中我们看到(强调我的)......
确定变量是否为空。如果变量不存在,则视为空;如果其值等于FALSE ,则变为。
在PHP中,零值是一个假值。所以你得到以下输出,
var_dump(false == 0); // Outputs "true"
var_dump(empty(0)); // Outputs "true"
因此,您需要更改代码以检查变量是否已设置且大于或等于零,您可以通过更改显示给以下内容的代码段来执行此操作。
if (isset($_POST['revisionCad']) && $_POST['revisionCad'] >= 0) {
$revisionCad = $_POST['revisionCad'];
} else {
erDisplay('Please select a revision for Cadgui');
}
答案 1 :(得分:1)
您需要更改以下条件:
if(isset($revisionCad) && $revisionCad >=0){
erDisplay('Please select a revision for Cadgui');
}
实际上empty()函数将0视为空值,因此它会出现此错误。
答案 2 :(得分:1)
为表单添加默认值或动态更改代码,如下所示:
<form method= "POST">
<!-- <input type="number" class="form-control" placeholder="Revision" name="revisionCad" id="revisionCad" min="0"> -->
/** Assign default value or set it automatically in your code.**/
<input type="number" class="form-control" placeholder="Revision" name="revisionCad" id="revisionCad" min="0" value=0>
<button name="submit" class="btn btn-primary" id="submit" tabindex="5" value="Save" type="submit" style="width:200px;">Create/Change Revision</button>
</form>
您的PHP代码:
if(isset($_POST['revisionCad'])){
$revisionCad = $_POST['revisionCad'];
}
if(empty($revisionCad)){
erDisplay('Please select a revision for Cadgui');
}
应改为:
// You can set a default value of 0 in the code or leave it at null;
$revisionCad = (isset($_POST['revisionCad']) && !empty( $_POST['revisionCad'] ) || $_POST['revisionCad'] >=0 ) ?
trim($_POST['revisionCad']) : null;
/* Check if data is set to default null by your script,
* Display error, since no data was received
*/
if(is_null($revisionCad))
{
erDisplay('Please select a revision for Cadgui');
}
// if no error, continue with the rest of the codes ...
我希望这会有所帮助。
答案 3 :(得分:0)
你必须在value属性中给出0作为默认值。
<input type="number" class="form-control" placeholder="Revision" name="revisionCad" id="revisionCad" min="0" value="0">
答案 4 :(得分:0)
试试(!isset($revisonCad))
。我希望它有效。
由于您已经提供了empty()
函数,因此将0视为空值。因此,没有抓住任何输入。