我通过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";
我想知道是否有办法在$filter
mysql查询中包含此$respost
,如下所示:
$respost = mysqli_query($link,"SELECT * FROM table WHERE post_author=$uid $filter LIMIT 16 ");
另请注意,$uid
是使用$_GET[]
方法从上一页获取的。因此,此页面的链接看起来像www.mysite.com/page?uid=66
。所以想知道使用POST和表单过滤是否有效?
答案 0 :(得分:3)
一般情况下,如果你进行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);
}
?>
更新:顺便说一下,有一个小表格&#39; hack&#39;这允许你使用GET和POST vars(使用隐藏字段的内容),但根本不是一个好习惯,所以我不推荐它:
<form name="filter" method="POST" action="team_as.php?uid=<?php echo $uid; ?>">
当您提交此表单时,您将同时分配GET和POST数组,即您将uid
作为GET var,其他所有将进入POST数组。
答案 1 :(得分:0)
您必须在隐藏字段中添加您的网址值,如此
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);
我认为它解决了你的问题
答案 2 :(得分:0)
带有日期过滤器的完整代码
<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>