2015-05-04 48 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