I have a working date filter with PHP. The problem is that if I don't filter my records then no records are shown and also I get this type of error:
Notice: Undefined index: dateFrom in ... on line 37
How can I make a date filter using PHP, so that if I don't add any dates to my filter it shows all records, and if I add dates to filter it shows only filtered records?
Here's my code:
<?php
include('config/connect.php');
$query=mysqli_query($connect,"SELECT * FROM tasks");
?>
<table>
<tr>
<th>Title</th>
<th>Due Date</th>
<th>Edit | View</th>
</tr>
<?php
//GETTING VALUE FROM FILTER
$new_date = date('Y-m-d', strtotime($_POST['dateFrom']));
//echo $new_date;
$new_date2 = date('Y-m-d', strtotime($_POST['dateTo']));
//echo $new_date2;
$dateFrom = date('Y-m-d', strtotime($_POST['dateFrom']));
$dateTo = date('Y-m-d', strtotime($_POST['dateTo']));
while($row=mysqli_fetch_array($query)){
//FILTERING USING DATES
if (($row['due_date'] > $dateFrom) && ($row['due_date'] < $dateTo)){
?>
<tr>
<td><?php echo $row['title'] ?></td>
<td><?php echo $row['due_date'] ?></td>
<td><a href="edit_task.php?id=<?php echo $row['id'];?>"> <button type="button">Edit</button> </a> | <a href="view_task.php?id=<?php echo $row['id'];?>"> <button type="button">View</button> </a></td>
</tr>
<?php }} ?>
</table>
you need to change date('Y-m-d', strtotime($row['due_date']));
instead $row['due_date']
like this
if (date('Y-m-d', strtotime($row['due_date']))>$dateFrom && date('Y-m-d', strtotime($row['due_date'])) < $dateTo){
and you need to check variable first by isset();
your code should be like this
<?php
if (isset($_POST['dateFrom'])) {
//GETTING VALUE FROM FILTER
$new_date = date('Y-m-d', strtotime($_POST['dateFrom']));
//echo $new_date;
$new_date2 = date('Y-m-d', strtotime($_POST['dateTo']));
//echo $new_date2;
$dateFrom = date('Y-m-d', strtotime($_POST['dateFrom']));
$dateTo = date('Y-m-d', strtotime($_POST['dateTo']));
while($row=mysqli_fetch_array($query)){
//FILTERING USING DATES
if (date('Y-m-d', strtotime($row['due_date']))>$dateFrom && date('Y-m-d', strtotime($row['due_date'])) < $dateTo){
?>
<tr>
<td><?php echo $row['title'] ?></td>
<td><?php echo $row['due_date'] ?></td>
<td><a href="edit_task.php?id=<?php echo $row['id'];?>"> <button type="button">Edit</button> </a> | <a href="view_task.php?id=<?php echo $row['id'];?>"> <button type="button">View</button> </a></td>
</tr>
<?php }
}
}
?>