在特定日期之后从mysql中删除和替换记录

时间:2015-03-12 22:31:16

标签: php mysql

我目前正在实施一个网站,管理员用户可以发布可供用户查看的优惠。优惠有一个到期日,可由管理员用户选择。我可以在数据库中插入商品详情。但是我想从数据库中只检索一个要求,该要约只能在到期日之前显示。在到期日之后,它应该从数据库中删除该提议并将其替换为数据库中的下一个。

我有一个名为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"]. ""; 
   }
}

任何方式这样做,以便网页只显示一个要约,直到它到期,然后将其替换为数据库中的下一个?

2 个答案:

答案 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()