[英]Filter SQL results by date using PHP
我通過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_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>
現在我想要做的是,為此設置一個過濾器。 我想添加兩個日期選擇器,當用戶單擊“過濾器”按鈕時,表格應僅填充在兩個給定日期內發布的帖子。
我想過為日期選擇器使用一個表單:
<form name="filter" method="POST" action="team_as.php">
SHOW POSTS FROM:
<input type="date" name="sdate">
<input type="date" name="edate">
<input type="submit" name="submit" value="Filter">
</form>
PHP來處理這些數據:
$edate = $_POST['edate'];
$sdate = $_POST['sdate'];
$filter = "AND $date < post_date > $edate";
我想知道是否有辦法在$respost
mysql查詢中包含這個$filter
,如下所示:
$respost = mysqli_query($link,"SELECT * FROM table WHERE post_author=$uid $filter LIMIT 16 ");
另請注意, $uid
是使用$_GET[]
方法從上一頁獲取的。 所以這個頁面的鏈接看起來像www.mysite.com/page?uid=66
。 所以想知道使用POST和表單過濾是否有效?
一般情況下,如果你做POST,最好在你的第二種形式中添加uid
作為隱藏字段以保持它。 也可以在過濾器中使用BETWEEN,因此代碼應如下所示:
<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);
}
?>
更新:順便說一句,有一個小形式'hack'允許你使用GET和POST vars(使用隱藏字段的內容),但根本不是一個好習慣,所以我不推薦它:
<form name="filter" method="POST" action="team_as.php?uid=<?php echo $uid; ?>">
當你提交這個表單時,你將同時分配GET和POST數組,即你將uid
作為GET var,所有其他人將進入POST數組。
您必須在隱藏字段中添加您的網址值,如下所示
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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.