Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 验证';价格';(双)表单输入PHP_Javascript_Php_Jquery_Forms_Validation - Fatal编程技术网

Javascript 验证';价格';(双)表单输入PHP

Javascript 验证';价格';(双)表单输入PHP,javascript,php,jquery,forms,validation,Javascript,Php,Jquery,Forms,Validation,嗨,我正在尝试使用PHP验证表单上的用户输入。 我已设法验证文本、数字和年份输入,但无法使价格生效 我在代码顶部创建错误变量: $titleErr = ""; $developerErr = ""; $releaseErr = ""; $stockErr = ""; $priceErr = ""; 然后,我验证输入,并在需要时为变量分配一条消息: if (!preg_match("/^[a-zA-Z ]*$/",$title)) { $titleErr

嗨,我正在尝试使用PHP验证表单上的用户输入。 我已设法验证文本、数字和年份输入,但无法使价格生效

我在代码顶部创建错误变量:

 $titleErr = ""; $developerErr = ""; $releaseErr = ""; $stockErr = ""; $priceErr = "";
然后,我验证输入,并在需要时为变量分配一条消息:

if (!preg_match("/^[a-zA-Z ]*$/",$title)) {
                    $titleErr = "Invalid input, only letters and white space allowed.";
                } else if (!preg_match("/^[a-zA-Z ]*$/",$developer)){
                    $developerErr = "Invalid input, only letters and white space allowed.";
                } else if ($release<1990 || $release>2020){
                    $releaseErr = "Invalid input, enter a year between 1990 & 2020.";
                } else if (!is_numeric($stock)){
                    $stockErr = "Invalid input, only numbers allowed.";
                } else if (!is_float($price)){
                    $priceErr = "Invalid input, only doubles allowed.";
                }
if(!preg_match(“/^[a-zA-Z]*$/”,$title)){
$titleErr=“输入无效,只允许字母和空白。”;
}如果(!preg_match(“/^[a-zA-Z]*$/”,$developer))为else{
$developer=“输入无效,只允许字母和空白。”;
}否则如果($release2020){
$releaseErr=“输入无效,请输入1990年至2020年之间的年份。”;
}如果(!是数字($stock)){
$stockErr=“输入无效,只允许数字。”;
}如果(!是浮动($price)){
$priceErr=“输入无效,只允许双精度。”;
}
前4条语句完美地验证了输入。但是,最后一个检查输入是否为浮点值(对于价格,例如10.99)的程序似乎在我输入正确的输入时返回错误消息

这是我的表格:

<form class ="form-horizontal" role="form" id="add" name="add" action="?" method="post">           
            <div class="form-group">
                <label class="control-label col-sm-2">Title</label> <div class="col-sm-10"><input class="form-control" id="addFormTitle" name="title" type="text"> <span class="error"><?php echo $titleErr;?></span></div>
            </div>
            <div class="form-group">
                <label class="control-label col-sm-2">Developer</label> <div class="col-sm-10"><input class="form-control" id="addFormDeveloper" name="developer" type="text"> <span class="error"><?php echo $developerErr;?></span></div>
            </div>
            <div class="form-group">
                <label class="control-label col-sm-2">Release (Year Format/YYYY)</label> <div class="col-sm-10"><input class="form-control" id="addFormRelease" name="release" type="text"> <span class="error"><?php echo $releaseErr;?></span></div>
            </div>
            <div class="form-group">
                <label class="control-label col-sm-2">Stock</label> <div class="col-sm-10"><input class="form-control" id="addFormStock" name="stock" type="text"> <span class="error"><?php echo $stockErr;?></span></div>
            </div>
            <div class="form-group">
                <label class="control-label col-sm-2">Price (&#163)</label> <div class="col-sm-10"><input class="form-control" id="addFormPrice" name="price" type="text"> <span class="error"><?php echo $priceErr;?></span></div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <button type="submit" class="btn btn-default" name="addSubmit" value="Add product">Submit</button>
                </div>
            </div>
        </form>

标题
开发商
发布(年份格式/YYYY)
股票
价格(£)
提交

您可以使用
floatval
函数获取变量的浮点值,然后检查它是否为浮点值,如下所示:

if(is_float(floatval($price))){
    echo "float value";
}else{
    echo "not a float value";
}
if (!preg_match("/^[a-zA-Z ]*$/",$title)) {
    $titleErr = "Invalid input, only letters and white space allowed.";
} else if (!preg_match("/^[a-zA-Z ]*$/",$developer)){
    $developerErr = "Invalid input, only letters and white space allowed.";
} else if ($release<1990 || $release>2020){
    $releaseErr = "Invalid input, enter a year between 1990 & 2020.";
} else if (!is_numeric($stock)){
    $stockErr = "Invalid input, only numbers allowed.";
} else if (!is_float(floatval($price))){
    $priceErr = "Invalid input, only doubles allowed.";
}
编辑:

在代码中,可以执行以下操作:

if(is_float(floatval($price))){
    echo "float value";
}else{
    echo "not a float value";
}
if (!preg_match("/^[a-zA-Z ]*$/",$title)) {
    $titleErr = "Invalid input, only letters and white space allowed.";
} else if (!preg_match("/^[a-zA-Z ]*$/",$developer)){
    $developerErr = "Invalid input, only letters and white space allowed.";
} else if ($release<1990 || $release>2020){
    $releaseErr = "Invalid input, enter a year between 1990 & 2020.";
} else if (!is_numeric($stock)){
    $stockErr = "Invalid input, only numbers allowed.";
} else if (!is_float(floatval($price))){
    $priceErr = "Invalid input, only doubles allowed.";
}
if(!preg_match(“/^[a-zA-Z]*$/”,$title)){
$titleErr=“输入无效,只允许字母和空白。”;
}如果(!preg_match(“/^[a-zA-Z]*$/”,$developer))为else{
$developer=“输入无效,只允许字母和空白。”;
}否则如果($release2020){
$releaseErr=“输入无效,请输入1990年至2020年之间的年份。”;
}如果(!是数字($stock)){
$stockErr=“输入无效,只允许数字。”;
}否则,如果(!is_float(floatval($price))){
$priceErr=“输入无效,只允许双精度。”;
}

当浏览器向PHP发送值时(例如使用GET或POST),PHP会将所有内容解释为字符串。即使该值是
1
,实际上也是
“1”
。因此,使用
is\u float()
将始终是错误的。请检查regex以获得良好的思考,但这不会起作用,因为
floatval('string')
被强制转换为
float(0)
。因此,您无法判断该值实际上是0还是输入不正确<代码>是浮点数(floatval($any_string))总是
true
。啊,捕捉得好。它无法将0捕获为浮点。@user2966455请参阅上面的注释。试着输入一个无效的值,我保证它不会捕捉到它。@Mike是的,你是对的,我该如何更正它?@user2966455,Mike是对的。我想你的