我目前正在实施一个网站,管理员用户可以发布可供用户查看的优惠。优惠有一个到期日,可由管理员用户选择。我可以在数据库中插入商品详情。但是我想从数据库中只检索一个要求,该要约只能在到期日之前显示。在到期日之后,它应该从数据库中删除该提议并将其替换为数据库中的下一个。
我有一个名为offer的表,其中包含以下字段( offerid,offertitle,details,expirydate )
addoffer.php
$title = $_POST['offertitle'];
$details = $_POST['details'];
$enddate = date('Y-m-d', strtotime($_POST['date']));
$sqlquery = "INSERT INTO `offers` (`offerid`, `offertitle`, `details`, `expirydate`)
VALUES ( NULL, '$title', '$details', '$date')";
if($mysqli->query($sqlquery)){
echo '<h3>Offer posted</h3>';
}else {
echo 'error';
}
查看offer.php
$mysqlquery = "SELECT * FROM offers";
$results = $mysqli->query($mysqlquery);
if ($results->num_rows > 0) {
while ($row = $results->fetch_assoc()){
echo "". $row["offertitle"]. "";
}
}
任何方式这样做,以便网页只显示一个要约,直到它到期,然后将其替换为数据库中的下一个?
答案 0 :(得分:0)
更改代码如下。它将显示除过期之外的所有要约。
$current_date = date('Y-m-d');
$mysqlquery = "SELECT * FROM offers where expirydate<$current_date ";
$results = $mysqli->query($mysqlquery);
if ($results->num_rows > 0) {
while ($row = $results->fetch_assoc()){
echo "". $row["offertitle"]. "";
}
}
答案 1 :(得分:0)
我会为此编写简单的SQL查询:
SELECT * FROM offers WHERE expirydate > NOW() ORDER BY expirydate LIMIT 1
假设您的expirydate字段属于DATE或DATETIME类型,这将起作用。它取得了expirydate订购的第一个报价,因此即将到期的报价首先出现。
删除是另一个问题。您可以在单个查询中执行SELECT和DELETE。但是,另一个查询将删除过期的优惠:
DELETE FROM offers WHERE expirydate < NOW()