0

I am facing an issue while trying to retrieve values from the if-else condition. My query is pasted below:

    <?php
session_start();

if(!$_SESSION['login'] && !isset($_POST['submit'])) {
header("Location:LoginPage.php");
}

function filterTable($query) 
{

$db_name = "id555865_sales_db";
$mysql_username = "id555865_sales_db";
$mysql_password = "password";
$server_name = "localhost"; 
$conn = mysqli_connect($server_name, $mysql_username,$mysql_password,$db_name);
$filter_result = mysqli_query($conn,$query);
return $filter_result;
}


if(isset($_POST['submit']) && isset($_POST['fromDate']) && isset($_POST['toDate']) && isset($_POST['userName']) )
{
$from_date = $_POST['fromDate'];
$to_date = $_POST['toDate'];
$name = $_POST['userName'];

  if(isset($from_date) && isset($to_date) && isset($name)) {
    $query = "SELECT name,date,enquiry,retail,collection,booking,evaluation,test_drive,home_visit FROM employee_details WHERE date BETWEEN '$from_date' AND '$to_date' AND name LIKE'$name';";
$search_result = filterTable($query);
       } 
  }

elseif(empty($_POST['userName']) && !empty($_POST['fromDate']) && !empty($_POST['toDate'])) {
$from_date = $_POST['fromDate'];
$to_date = $_POST['toDate'];  
$query = "SELECT name,date,enquiry,retail,collection,booking,evaluation,test_drive,home_visit FROM employee_details WHERE date BETWEEN '$from_date' AND '$to_date';";
$search_result = filterTable($query);
}

elseif(!empty($_POST['userName'])  && empty($_POST['fromDate']) && empty($_POST['toDate'])) {
$name = $_POST['userName'];  
$query = "SELECT name,date,enquiry,retail,collection,booking,evaluation,test_drive,home_visit FROM employee_details WHERE name LIKE'$name';";
$search_result = filterTable($query);
}

else 
{
$query = "SELECT name,date,enquiry,retail,collection,booking,evaluation,test_drive,home_visit FROM employee_details;";
    $search_result = filterTable($query);

}

$now = time();
if (($now - $_SESSION['start'] > 600) && (isset($_POST['submit']))){
session_destroy();
echo "Session expired.Please Login again.";
header("Location:LoginPage.php");
}

?>

<!DOCTYPE html>
<html>
    <head>
        <style>
              input,input[type='text']
       {
           border:1px solid black;
           padding:5px 5px;
       border-radius:4px;
           font-size:12px;

       }
            table {
                  font-family: 'Roboto', sans-serif;
          font-weight:400;
          font-size:16px;
                  border-collapse: collapse;
                  width: 80%;
          text-align:center;
          margin:auto;
                   }

                  td, th {
                  font-family: 'Roboto', sans-serif;
                  font-weight:400;
                  font-size:12px;
                  border: 1px solid #dddddd;
                  text-align:center;
                  padding: 5px;
                  }

                 tr:nth-child(even) {
                 background-color: #dddddd;
                 }
                 .headingstyle
                 {
                 font-family: 'Roboto', sans-serif;
                 font-weight:400;
                 font-size:14px;
                 text-align:center;
                 }
       </style>
    </head>
<body>

<div class="container;">
<h2 class="headingstyle">Sales App Data</h2>
<form action="https://pranami.000webhostapp.com/salesApp.php" method="post">


    <div class="headingstyle">

     <label class="headingstyle">From Date:</label>
    <input type="text" name="fromDate" placeholder="YYYY-MM-DD" id="datepicker">


    <label class="headingstyle" style="margin-left:20px;">To Date:</label>
    <input type="text" name="toDate" placeholder="YYYY-MM-DD" id="datepicker">


        <label class="headingstyle" style="margin-left:20px;">Name:</label>       
        <input type="text" name="userName">



    <input style="margin-left:20px; background-color:#16367F; font-family:'Roboto', sans-serif;font-weight:400;font-size:14px;color:#ffffff; padding:5px 8px; " type="submit" name="submit" value="Submit">
</div><br/><br/>
    <table>
        <tr>
            <th>Name</th>
                        <th>Date</th>
                        <th>Enquiry</th>
                        <th>Retail</th>
                        <th>Collection</th>
                        <th>Booking</th>
                        <th>Evaluation</th>
                        <th>Test Drive</th>
                        <th>Home Visit</th>
        </tr>
            <?php while($row = mysqli_fetch_array($search_result)):?>
            <tr>
                <td><?php echo $row['name'];?> </td>
                                <td><?php echo $row['date'];?> </td>
                                <td><?php echo $row['enquiry'];?> </td>
                                <td><?php echo $row['retail'];?> </td>
                                <td><?php echo $row['collection'];?> </td>
                                <td><?php echo $row['booking'];?> </td>
                                <td><?php echo $row['evaluation'];?> </td>
                                <td><?php echo $row['test_drive'];?></td>
                                <td><?php echo $row['home_visit'];?></td>
            </tr>
            <?php endwhile;?>
    </table>
    </form>
</body>
</html>

The problem is in the if-else part. I have a HTML form which has 3 input fields and as the user gives values in the input fields,after clicking the submit button, the data will be retrieved from the MySQL Database and shown in a table. If the user inputs data in all the 3 fields and clicks the submit button, the data is retrieved correctly from the database. But what I wanted is that if the user doesnot give any value for the "Name" field, then all the data should be retrieved according to the data value that is given. Or if the user gives value only for the "Name" field, then the data should be retrieved for only the given Name.I mentioned those conditions in the elseif part of the PHP Script,but the elseif part is never executed.It doesnot return any value.The table is empty in those cases.

Can anyone please help me with this issue?

3 Answers 3

5

isset simply checks if the field is present or not. It does not check whether the field is empty. You can use empty() to check if user enter something in the field or not

Also text box, text area etc sets an empty value when you submit form

Sign up to request clarification or add additional context in comments.

2 Comments

Hi, I have tried using the empty() function, but its still not working. I have attached the updated code above.Can you please have a look?
echo '<pre>'; print_r($_POST); exit; to see values submitted and debug
0

if a value is set but its value is '0' when you try to check if it is check it will be true, so you should use empty() function to check this, however it's better if you optimise your 'if structure'

if (empty($name))

this will return true if name is empty

1 Comment

I have tried using the empty() function,but its still returning no value.I have edited the code above using empty() function.Can you please check and let me know where I am going wrong.
0

No need to check isset() here. Because from your code all the three fields post values every time you submit the page. For that only your code always executes first if condition. So change isset() code to empty() code.

your code is like


if(isset($_POST['submit']) && isset($_POST['fromDate']) && isset($_POST['toDate']) && isset($_POST['userName']))
{
......
}
elseif(empty($_POST['userName']) && !empty($_POST['fromDate']) && !empty($_POST['toDate']))
{
......
}
elseif(!empty($_POST['userName'])  && empty($_POST['fromDate']) && empty($_POST['toDate']))
{
......
}
else
{
......
}

Change your code to like this below


if(!empty($_POST['submit']) && !empty($_POST['fromDate']) && !empty($_POST['toDate']) && !empty($_POST['userName']))
{
......
}
elseif(empty($_POST['userName']) && !empty($_POST['fromDate']) && !empty($_POST['toDate']))
{
......
}
elseif(!empty($_POST['userName'])  && empty($_POST['fromDate']) && empty($_POST['toDate']))
{
......
}
else 
{
......
}

It will works. Hope this code will helps you.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.