使用PHP按日期筛选SQL结果
我通过PHP从SQL表中获取数据以填充HTML表。我就是这样做的:使用PHP按日期筛选SQL结果,php,html,mysql,datetime,Php,Html,Mysql,Datetime,我通过PHP从SQL表中获取数据以填充HTML表。我就是这样做的: <table class="posts"> <?php $respost = mysqli_query($link,"SELECT * FROM table WHERE post_author=$uid LIMIT 16 "); $row_count=0; $col_count=0; while($rowpost = mysqli
<table class="posts">
<?php
$respost = mysqli_query($link,"SELECT * FROM table WHERE post_author=$uid LIMIT 16 ");
$row_count=0;
$col_count=0;
while($rowpost = mysqli_fetch_array($respost)) {
if($row_count%4==0){
echo "<tr>";
$col_count=1;
}?>
<td>
<?php
$imageid = $rowpost['thumbnail_link'];
<img src="<?php echo $imageid; ?>" alt="" class="img-responsive" height="220px" height="220px">
<h3><?php echo $rowpost['post_title']; ?></h3>
<h4><?php echo (substr($rowpost['post_excerpt'],0,30)); ?></h4>
<h5><?php echo $rowpost['post_date']; ?></a></h5>
</td>
<?php
if($col_count%4==0){
echo "</tr>";
}
$row_count++;
$col_count++;
}
?>
</table>
还请注意,
$uid
是使用$\u GET[]
方法从上一页获取的。所以这个页面的链接看起来像www.mysite.com/page?uid=66
。所以想知道使用POST和表单过滤是否有效?一般来说,如果您使用POST,最好在您的第二个表单中添加uid
作为隐藏字段以保留它。在过滤器中也使用BETWEEN,因此代码应如下所示:
$respost = mysqli_query($link,"SELECT * FROM table WHERE post_author=$uid $filter LIMIT 16 ");
<form name="filter" method="POST" action="team_as.php">
<input type="hidden" name="uid" value="<?php echo $uid; ?>">
SHOW POSTS FROM:
<input type="date" name="sdate">
<input type="date" name="edate">
<input type="submit" name="submit" value="Filter">
</form>
<?php
if(isset($_POST['submit'])){
$uid = $_POST['uid'];
$edate = $_POST['edate'];
$sdate = $_POST['sdate'];
$filter = "AND DATE(post_date) BETWEEN '$sdate' AND '$edate'";
$query = "SELECT * FROM table WHERE post_author=$uid $filter LIMIT 16 ";
$respost = mysqli_query($link, $query);
}else{
$query = "SELECT * FROM table WHERE post_author=$uid LIMIT 16 ";
$respost = mysqli_query($link, $query);
}
?>
您必须像这样在隐藏字段中添加url值
if(isset($_GET['uid']))
{
$uid=mysqli_real_escape_string($_GET['uid']);
}
<form name="filter" method="POST" action="team_as.php">
SHOW POSTS FROM:
<input type="date" name="sdate">
<input type="date" name="edate">
<input type="hidden" name="uid" value="<?php echo $uid; ?>">
<input type="submit" name="submit" value="Filter">
</form>
if(isset($\u GET['uid']))
{
$uid=mysqli\u real\u escape\u字符串($\u GET['uid']);
}
显示来自以下站点的帖子:
完整的日期过滤器代码
<div class="table-responsive m-t-10">
<form class="form-group" method='post' style="margin-bottom: -5px;">
Start Date <input class="form-group" type='date' class='dateFilter' name='dateFrom' value='<?php if(isset($_POST['dateFrom'])) echo $_POST['dateFrom']; ?>'>
End Date <input class="form-group" type='date' class='dateFilter' name='dateTo' value='<?php if(isset($_POST['dateTo'])) echo $_POST['dateTo']; ?>'>
<input type='submit' name='but_search' value='Search'>
</form>
<table id="myTable" class="table table-bordered table-striped dataTable no-footer" role="grid">
<!--<table class="display nowrap table table-hover table-striped table-bordered" cellspacing="0" width="100%">-->
<thead>
<tr>
<th>Date</th>
<th>Customer Name</th>
<th>Company</th>
<th>Userid</th>
<th>Address</th>
<th>Area</th>
<th>Contact</th>
<th style="display:none">Location</th>
<th style="display:none">Product Id</th>
<th>Software Id</th>
<th>Product Key</th>
<th>Validity</th>
<th>Unpaid Amount</th>
<th>Action</th>
<th>Enab/Disa</th>
<th >Delete</th>
</tr>
</thead>
<tfoot style="display:none">
<tr>
<th>Date</th>
<th>Name</th>
<th>Userid</th>
<th>Address</th>
<th>Area</th>
<th>Contact</th>
<th>Software</th>
<th>Location</th>
<th>Product Id</th>
<th>Validity</th>
<th>Unpaid Amount</th>
<th>Action</th>
<th>Enab/Disa</th>
<th>Delete</th>
</tr>
</tfoot>
<tbody>
<?php
$ses = $_SESSION["userid"];
$result = mysqli_query($con, "select id from cmp_user where userid='$ses'");
while ($res = mysqli_fetch_array($result)) {
$uid =$res['id'];
}
?>
<?php
$dateFrom = date('Y-m-d', strtotime($_POST['dateFrom']));
$dateTo = date('Y-m-d', strtotime($_POST['dateTo']));
$result= mysqli_query($con, "select * from cmp_customer");
while ($res = mysqli_fetch_array($result)) {
if (date('Y-m-d', strtotime($res['date']))>$dateFrom && date('Y-m-d', strtotime($res['date'])) < $dateTo) {
?>
echo "<tr>"; ?>
<td><?php echo $res["date"]; ?></td>
<td><?php echo $res["c_name"]; ?></td>
<td><?php echo $res["company"]; ?></td>
<td><?php echo $res["userid"]; ?></td>
<td><?php echo substr($res["address"], 0, 15); ?></td>
<td><?php echo substr($res["zipcode"], 0, 15); ?></td>
<td><?php echo $res["contact"]; ?></td>
<td style="display:none"><?php echo $res["location"]; ?></td>
<td style="display:none"><?php echo substr($res["productid"], 0, 15); ?></td>
<td><?php echo substr($res["softwareid"], 0, 15); ?></td>
<td><?php echo substr($res["productkey"], 0, 15); ?></td>
<td><?php echo $res["Validity"]; ?></td>
<td><?php echo $res["unpaidamt"]; ?></td>
<td><A class='btn btn-outline-success btn-sm' href="update_customer.php?id=<?php echo $res['id']; ?>">Edit</A></td>
<?php if ($res["status"] == 1) {
?>
<td> <a class='btn btn-success btn-sm' onclick="return confirm('Are you sure want Disable this Customer ?')" href="customerstatusdisable.php?userid=<?php echo $res['userid']; ?>">Enable
</a></td>
<?php
} else { ?>
<td><a class='btn btn-danger btn-sm' onclick="return confirm('Are you sure want Enable this Customer ?')" href="customerstatus.php?userid=<?php echo $res['userid']; ?>">Disable
</a></td>
<?php } ?>
<td><a class='btn btn-outline-danger btn-sm' onclick="return confirm('Are you sure want delete this Customer ?')" href="delete_customer.php?id=<?php echo $res['id']; ?>">Delete
<i class="fa fa-trash" title="Delete" ></i></a></td>
<?php echo "</tr>";
}
} ?>
</tbody>
</table>
</div>
开始日期我添加了这个并提交了,页面刷新时链接末尾没有显示?uid=66
,仍然显示与以前相同的结果。没有过滤。uid很重要,因为页面应该只显示该用户完成的帖子。同样供参考,发布日期的格式如下:2014-03-11 12:25:41
Yes,因为您正在发布。但是,uid
变量将存在,因此您可以像往常一样使用它。最简单的检查方法是执行echo$respost
以检查整个查询的外观。关于日期格式,我已经更新了$filter
部分中的代码。@YohanBlake,我对如何使用GET和POST进行了一些小的更新,但同样,这不是一个好的做法。@Chay22,你的评论与这个主题有什么关系?
<form name="filter" method="POST" action="team_as.php?uid=<?php echo $uid; ?>">
if(isset($_GET['uid']))
{
$uid=mysqli_real_escape_string($_GET['uid']);
}
<form name="filter" method="POST" action="team_as.php">
SHOW POSTS FROM:
<input type="date" name="sdate">
<input type="date" name="edate">
<input type="hidden" name="uid" value="<?php echo $uid; ?>">
<input type="submit" name="submit" value="Filter">
</form>
if(isset($_POST['submit']))
{
$uid=mysqli_real_escape_string($_POST['uid']);
$edate = mysqli_real_escape_string($_POST['edate']);
$sdate = mysqli_real_escape_string($_POST['sdate']);
}
$sql="SELECT * FROM table WHERE post_author='$uid'";
if(isset($_POST['submit']))
{
$sql.= " AND $date < post_date > $edate";
}
$respost = mysqli_query($link,$sql);
<div class="table-responsive m-t-10">
<form class="form-group" method='post' style="margin-bottom: -5px;">
Start Date <input class="form-group" type='date' class='dateFilter' name='dateFrom' value='<?php if(isset($_POST['dateFrom'])) echo $_POST['dateFrom']; ?>'>
End Date <input class="form-group" type='date' class='dateFilter' name='dateTo' value='<?php if(isset($_POST['dateTo'])) echo $_POST['dateTo']; ?>'>
<input type='submit' name='but_search' value='Search'>
</form>
<table id="myTable" class="table table-bordered table-striped dataTable no-footer" role="grid">
<!--<table class="display nowrap table table-hover table-striped table-bordered" cellspacing="0" width="100%">-->
<thead>
<tr>
<th>Date</th>
<th>Customer Name</th>
<th>Company</th>
<th>Userid</th>
<th>Address</th>
<th>Area</th>
<th>Contact</th>
<th style="display:none">Location</th>
<th style="display:none">Product Id</th>
<th>Software Id</th>
<th>Product Key</th>
<th>Validity</th>
<th>Unpaid Amount</th>
<th>Action</th>
<th>Enab/Disa</th>
<th >Delete</th>
</tr>
</thead>
<tfoot style="display:none">
<tr>
<th>Date</th>
<th>Name</th>
<th>Userid</th>
<th>Address</th>
<th>Area</th>
<th>Contact</th>
<th>Software</th>
<th>Location</th>
<th>Product Id</th>
<th>Validity</th>
<th>Unpaid Amount</th>
<th>Action</th>
<th>Enab/Disa</th>
<th>Delete</th>
</tr>
</tfoot>
<tbody>
<?php
$ses = $_SESSION["userid"];
$result = mysqli_query($con, "select id from cmp_user where userid='$ses'");
while ($res = mysqli_fetch_array($result)) {
$uid =$res['id'];
}
?>
<?php
$dateFrom = date('Y-m-d', strtotime($_POST['dateFrom']));
$dateTo = date('Y-m-d', strtotime($_POST['dateTo']));
$result= mysqli_query($con, "select * from cmp_customer");
while ($res = mysqli_fetch_array($result)) {
if (date('Y-m-d', strtotime($res['date']))>$dateFrom && date('Y-m-d', strtotime($res['date'])) < $dateTo) {
?>
echo "<tr>"; ?>
<td><?php echo $res["date"]; ?></td>
<td><?php echo $res["c_name"]; ?></td>
<td><?php echo $res["company"]; ?></td>
<td><?php echo $res["userid"]; ?></td>
<td><?php echo substr($res["address"], 0, 15); ?></td>
<td><?php echo substr($res["zipcode"], 0, 15); ?></td>
<td><?php echo $res["contact"]; ?></td>
<td style="display:none"><?php echo $res["location"]; ?></td>
<td style="display:none"><?php echo substr($res["productid"], 0, 15); ?></td>
<td><?php echo substr($res["softwareid"], 0, 15); ?></td>
<td><?php echo substr($res["productkey"], 0, 15); ?></td>
<td><?php echo $res["Validity"]; ?></td>
<td><?php echo $res["unpaidamt"]; ?></td>
<td><A class='btn btn-outline-success btn-sm' href="update_customer.php?id=<?php echo $res['id']; ?>">Edit</A></td>
<?php if ($res["status"] == 1) {
?>
<td> <a class='btn btn-success btn-sm' onclick="return confirm('Are you sure want Disable this Customer ?')" href="customerstatusdisable.php?userid=<?php echo $res['userid']; ?>">Enable
</a></td>
<?php
} else { ?>
<td><a class='btn btn-danger btn-sm' onclick="return confirm('Are you sure want Enable this Customer ?')" href="customerstatus.php?userid=<?php echo $res['userid']; ?>">Disable
</a></td>
<?php } ?>
<td><a class='btn btn-outline-danger btn-sm' onclick="return confirm('Are you sure want delete this Customer ?')" href="delete_customer.php?id=<?php echo $res['id']; ?>">Delete
<i class="fa fa-trash" title="Delete" ></i></a></td>
<?php echo "</tr>";
}
} ?>
</tbody>
</table>
</div>