I have following statements:
if (isset($_POST['name'])) {
$name = $_POST['name'];
$sql = "SELECT * FROM patients WHERE name LIKE '{$name}' ";
} elseif (isset($_POST['surname'])) {
$surname = $_POST['surname'];
$sql = "SELECT * FROM patients WHERE surname LIKE '{$surname}' ";
} elseif (isset($_POST['pesel'])) {
$pesel = $_POST['pesel'];
$sql = "SELECT * FROM patients WHERE pesel LIKE '{$pesel}' ";
}
And I have 3 search forms. But only the first one works (name). Other do not respond. How to change it?
Please check if all the $_POST[] variables are not set at the same time. Because, $_POST['name'] is the first variable and if it is set, other conditions will not be checked.
try this:
if(isset($_POST['name'])||isset($_POST['surname'])||isset($_POST['pesel'])) {
$name = $_POST['name'];
$sql = "SELECT * FROM patients WHERE name LIKE '{$name}' or surname LIKE '{$surname}' or pesel LIKE '{$pesel}'";
}
try this....
if(isset($_POST['name'])) {
$name = $_POST['name'];
echo $name;
$sql = "SELECT * FROM patients WHERE name LIKE '{$name}' ";
}
else if(isset($_POST['surname'])) {
$surname = $_POST['surname'];
echo $surname;
$sql = "SELECT * FROM patients WHERE surname LIKE '{$surname}' ";
}
else if(isset($_POST['pesel'])) {
$pesel = $_POST['pesel'];
echo $pesel;
$sql = "SELECT * FROM patients WHERE pesel LIKE '{$pesel}' ";
}
You can use multiple like condition in single query
$sql = "SELECT * FROM patients WHERE name LIKE '{$name}' OR LIKE '{$surname}' OR LIKE '{$pesel}' ";
The browser will send the input field in the request, even if it's empty.
You cannot test whether a string is empty with isset
. You need !== ""
too.