Как отфильтровать записи по дате с переполнением стека

У меня есть фильтр рабочей даты с PHP. Проблема в том, что если я не фильтрую свои записи, то никакие записи не отображаются, а также я получаю этот тип ошибки:

Примечание: неопределенный индекс: dateFrom in … в строке 37

Как я могу создать фильтр дат с использованием PHP, чтобы, если я не добавлял даты в свой фильтр, он отображал все записи, а если я добавлял даты для фильтрации, он отображал только отфильтрованные записи?

Вот мой код:

HTML ФОРМА
введите описание изображения здесь

<?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>

0

Решение

вам нужно изменить date('Y-m-d', strtotime($row['due_date'])); вместо $row['due_date'] как это

if (date('Y-m-d', strtotime($row['due_date']))>$dateFrom && date('Y-m-d', strtotime($row['due_date'])) < $dateTo){

и вам нужно сначала проверить переменную isset(); ваш код должен быть таким

<?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 }
}

}
?>
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]