在表单中,用户需要输入两个值。这些值应该只浮动数字。我已经搜索了如何validate to input float values
,以及我这样做的方式,它接受整数。我将filter_var()
函数与FILTER_VALIDATE_FLOAT
一起使用。它成功接受浮点数,但它也接受我不想要的整数。
savelibscores.php
<?php
define('DB_NAME','');
define('DB_USER','');
define('DB_PASSWORD','');
define('DB_HOST','localhost');
$connect = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
if(!$connect){
die('Could not connect:'.mysql_error());
}
$db_selected=mysql_select_db(DB_NAME,$connect);
if(!$db_selected){
die('Can\'t use'.DB_NAME.':'.mysql_error());
}
if(isset($_POST['submit'])){
$value1=$_POST['s3'];
$value2=$_POST['s4'];
$value3=$_POST['year'];
if(filter_var($value1,FILTER_VALIDATE_FLOAT) && filter_var($value2,FILTER_VALIDATE_FLOAT)) {
echo 'TRUE.';
} else {
echo 'FALSE.';
}
if(!empty($value1) && !empty($value2) && !empty($value3)){
$sql=mysql_query("INSERT INTO `library`(s3,s4,year) VALUES ('".$value1."','".$value2."','".$value3."')")or die(mysql_error());
}
else{
echo "Please fill all the fields. Please be sure to use float values also.";
}
}
?>
答案 0 :(得分:0)
浮点数是整数的超集,并且作为浮点输入,“3”和“3.14159”一样有效,即使3也恰好也是有效整数。
你宁愿强迫人们输入“3.0”而不是“3”吗?生成的浮点值将完全相同,并且只会使您的用户不太方便。
答案 1 :(得分:0)
验证仅接受浮点数
<强>更新强>
$value1 = "23.5";
if (is_numeric($value1))
{
if (strpos($value1, ".") !== false)
{
echo 'TRUE'; //float
} else {
echo 'FALSE'; //integer
}
}
答案 2 :(得分:-1)
is_float($number)
会告诉您$ number是否为浮点数。 (23返回false)。
如果您不想接受23.0这样的数字,那么:
function isDecimal($number)
{
if(is_numeric($number) and floor($number)!==$number)
return true;
return false;
}