使用PHP过滤后,以前的数据仍会显示

时间:2014-05-06 12:11:45

标签: php mysqli

我有一个使用PHP显示所有数据的查询然后我有第二个使用startdate和enddate进行过滤的查询但是当我使用第二个查询时,数据表显示第一个查询输出加上第二个查询输出。

这是我的代码。

以下是我对第一个输出的查询:

<?php
session_start();
$con=mysqli_connect("localhost","root","","leavecalendar");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$sql = mysqli_query($con,"SELECT * FROM timekeeping ");
while($row = mysqli_fetch_array($sql))
if(!empty($row)){   

    $_SESSION['row'][] = $row;
header("location:timekeepinglogs.php");
//print_r($_SESSION);
}
//header("location:timekeepinglogs.php");
//print_r($_SESSION);
?>

以下是结果的截图:

enter image description here

现在,这是由生成按钮

触发的第二个查询
<?php
session_start();
$row = $_SESSION['row'];
$con=mysqli_connect("localhost","root","","leavecalendar");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$sql = mysqli_query($con,"SELECT * FROM timekeeping WHERE createddate >=     '$_POST[startdate]' AND createddate <='$_POST[enddate]' ");
while($row = mysqli_fetch_array($sql))
if(!empty($row)){   

    $_SESSION['row'][] = $row;
//header("location:timekeepinglogs.php");
//print_r($_SESSION);
}
header("location:timekeepinglogs.php");
//print_r($sql);
?>

现在这里是第二个查询的作用(注意在第一个图片中最后一行有空时钟)我使用日期范围过滤它可能2到5可能因此它应该只显示3行。看看

enter image description here

如您所见,只需选择日期范围内的数据并将其显示在数据表的底部。我只想显示过滤后的数据。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

可能您要在表中的每个请求中附加数据,因此您需要清除每个新请求的会话数据

假设您要按日期搜索,之后您需要使用

清除会话数据
unset($_SESSION['row']);