2015-05-04 126 views
0

在表格中,用户需要输入两个值。这些值应该只浮点数。我已经搜索如何validate to input float values,以及我做到这一点,它接受整数。我使用filter_var()函数与FILTER_VALIDATE_FLOAT。它接受成功的浮点数,但它也接受我不想要的整数。验证只接受浮点数,但它也接受整数,在PHP?

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."; 
} 


} 
?> 
+1

一个整数也是浮动。 –

+0

@ this.lau_呵? – PeeHaa

+0

你可以检查每个变量是否是整数。 'if(!is_int($ value1)){echo'TRUE。'; } ex:'is_int(23)= bool(true)'和'is_int(23.5)= bool(false)' –

回答

0

花车都是整数的超集,并作为浮点输入“3”只是为“3.14159”是有效的,即使3也因此恰好是一个有效的整数。

你愿意强迫人们输入“3.0”而不是“3”吗?由此产生的浮点值将是,正好是是一样的,并且只会让用户不太方便。

+0

所以我的代码很好? – JackDog

+0

@JackDog是的,通过使用'filter_var($ value,FILTER_VALIDATE_FLOAT)'你确定它是一个有效的浮点数。 – RocketNuts

+0

这是正确的答案,JackDog的代码很好。 –

0

验证只接受浮点数

UPDATE

$value1 = "23.5"; 

if (is_numeric($value1)) 
{ 
    if (strpos($value1, ".") !== false) 
    { 
     echo 'TRUE'; //float 
    } else { 
     echo 'FALSE'; //integer 
    } 
} 
+0

由于输入始终是一个字符串,所以不能回答问题。所以'is_int'将总是返回false。 –

+0

@ this.lau_ return'TRUE' if $ value1 = 23.5;'如果$ value1 = 23则返回FALSE';变量'$ value1'必须为'numeric' –

+0

如果$ value1 = “23.5”;'这是这个问题的一种输入。 –

-1

is_float($number)会让你知道,如果$数量是浮动与否。 (23返回false)。

如果你不想接受号码,如23.0,则:

function isDecimal($number) 
{ 
    if(is_numeric($number) and floor($number)!==$number) 
    return true; 

    return false; 
} 
+0

你读过这个问题吗? '$ value1'来自一个POST值,所以它是一个字符串。字符串上的'is_float'将始终为假。 –

+0

我读过这个问题,我没有意识到is_float不会试图为检查而输入字符串。谢谢,我猜:P – vivoconunxino