Reputation: 13
I am very much a beginner at this kind of stuff, so please forgive me if this is a really stupid question, but I'm having trouble modifying my code, and I just need some guidance.
Anyways, I need to make a form that allows a user to input 3 different values. The 1st input needs to be an integer number from 1-99. The 2nd input needs to be a real number from 0.0-10.0. And the last input just needs to be any type of string input (the input can literally be anything, it just can't be left blank).
Here is what I have thus far:
<?php
if
(is_numeric($_POST['number1'])&&
is_numeric($_POST['number2']))
{
$number1 = $_POST['number1'];
$number2 = $_POST['number2'];
$string1 = $_POST['string1'];
echo "<p>Int Number =
$number1</p>\n";
echo "<p>Real Number =
$number2</p>\n";
echo "<p>String =
$string1</p>\n";
}
else {
echo 'Error. Integer Number must be an integer (1-99), Real Number must
be a real number (0.0-10.0), and String cannot be left blank.
Please go back and fill out the form again.';
}
?>
So with this code I obviously do not have the rules set (i.e. the first number has to be an integer from 1-99, etc.)
I know that I need to add an if-else statement for the rules to be implemented, but I cannot figure out the correct way to do it.
Any advice/help is truly appreciated.
Thank you!
Upvotes: 1
Views: 452
Reputation: 15106
The 1st input needs to be an integer number from 1-99:
if (is_numeric($_POST['number1']))
...
$number1 = +$_POST['number1'];
if (is_int($number1) && $number1 >= 1 && $number1 <= 99)
The 2nd input needs to be a real number from 0.0-10.0:
if (is_numeric($_POST['number2']) && strlen(substr(strrchr($_POST['number2'], "."), 1)) === 1)
...
$number2 = +$_POST['number2'];
if ($number2 >= 0 && $number2 <= 10)
And the last input just needs to be any type of string input (the input can literally be anything, it just can't be left blank):
$string1 = $_POST['string1'];
if (strlen($string1) > 0)
Combined together, the condition will be:
$error = true;
if (is_numeric($_POST['number1'])
&& is_numeric($_POST['number2'])
&& strlen(substr(strrchr($_POST['number2'], "."), 1)) === 1) {
$number1 = +$_POST['number1'];
$number2 = +$_POST['number2'];
$string1 = $_POST['string1'];
if (is_int($number1)
&& $number1 >= 1
&& $number1 <= 99
&& $number2 >= 0
&& $number2 <= 10
&& strlen($string1) > 0) {
echo "<p>Int Number =
$number1</p>\n";
echo "<p>Real Number =
".number_format($number2, 1)."</p>\n";
echo "<p>String =
$string1</p>\n";
$error = false;
}
}
if ($error) {
echo 'Error. Integer Number must be an integer (1-99), Real Number must
be a real number (0.0-10.0), and String cannot be left blank.
Please go back and fill out the form again.';
}
Upvotes: 1
Reputation: 4430
What about:
//first rule
function setRule1($var){
if (is_numeric($var)){
if($var < 1 || $var > 99){
return false;
} else return true;
} else return false;
}
//second rule if you need check number of decimal place
function setRule2($var){
if (is_numeric($var)){
if(strlen(array_pop(explode('.',$var))) > 1){//<-- change 1 to desired decimal places.
return false;
} else return true;
} else return false;
}
Usage:
if (setRule1($_POST['number1']) && setRule2($_POST['number2']) && $_POST['string1'] != '')//third condistion check if string is blank or not.
{
$number1 = $_POST['number1'];
$number2 = $_POST['number2'];
//and soon...
Upvotes: 0