1

I want to validate and that the user only enters float number in the text field such as 3.4. I need to check only the $value1 and $value2 in this case using php.

libraryForm.php

<form action="savelibscores.php" method="POST">
S3: <input class="inputfield" type="text" name="s3" size="5"> <br /><br/>
S4: <input class="inputfield" type="text" name="s4" size="5"> <br /><br/>
<b>Year:<b/>
<select name="year"> 
<option value="Choose">Please select..</option>
<option value="2005">2005</option> 
<option value="2006">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option></select><br/><br/>

<br/>
<input type="submit" value="Save" name="submit">
<input type="reset" name="reset" value="Clear"><br /><br/>

</form>

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(!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.";
   }
}
?>
JackDog
  • 35
  • 9
  • 1
    http://php.net/manual/en/function.is-float.php – chris85 May 03 '15 at 16:30
  • 1
    possible duplicate of [checking if a number is float in PHP](http://stackoverflow.com/questions/14866713/checking-if-a-number-is-float-in-php) – Ben N May 03 '15 at 16:31
  • @ Ben N @ chris85 thanks a lot guys!!! – JackDog May 03 '15 at 16:40
  • Also note your SQL is injectable as is. You also should switch to the PDO or mysqli driver. One solution to injection issue is to cast the values as floats, best solution is prepared statements though. – chris85 May 03 '15 at 16:42

2 Answers2

1

You have a couple of options ..

is_float() function

filter_var() function, with the FILTER_VALIDATE_FLOAT filter as second argument.

floatval() or the (float) cast before your variable name.

The first two will check wether or not it's a float, and the third one will convert whatever you give it to a float. I like to use the filter_var() function as it makes the code clear, and it,s also very useful to verify all sort of things (emails adress, IP adress, URL, etc).

Drown
  • 5,852
  • 1
  • 30
  • 49
-1

Try this:

<input type="number" step="0.1">

Check this post for more details.

Community
  • 1
  • 1
Houkes
  • 54
  • 8