$nextWeek = time() + (7 * 24 * 60 * 60);
将其添加到数据库中。
我想选择*其中time =当前时间()或将来......而不是过去。
我希望*从时间不在过去的DB中选择..它是将来的。或者在场。
SELECT * FROM affbanners WHERE timedate=what and active=1 order by rand() limit 1
我希望时间日期存在或未来而不是过去。这意味着时间不应该过去。
timedate
由
$nextWeek = time() + (7 * 24 * 60 * 60);
答案 0 :(得分:3)
如果您的数据库服务器的时钟是正确的,您只需使用以下形式的查询:
SELECT * FROM <table name> WHERE <time field> >= NOW();
然而,为了保持你的问题,我会去...
$nextWeek = time() + (7 * 24 * 60 * 60);
$queryString = 'SELECT * FROM affbanners WHERE active=1 AND timedate >= "'.$nextWeek.'"' ORDER BY RAND() LIMIT 1';
也就是说,您可能想要考虑是否希望以“平衡”(而非简单随机)的方式选择横幅。 (即:每个横幅都有一个大致相似的观看率。)
为此,您需要:
使用类似...
的查询SELECT * FROM affbanners WHERE active = 1 AND timedate&gt; =“'。$ nextWeek。'”'ORDER BY view_count ASC LIMIT 1
通过这样做,您可以平衡一段时间内的观看次数。
<强>更新强>
如果是这种情况,我很想在数据库中创建startdate和enddate字段(在创建横幅时填充)并使用类似的查询...
SELECT * FROM affbanners WHERE active=1 AND startdate >= NOW() AND enddate <= DATE_ADD(NOW(), INTERVAL 1 WEEK) ORDER BY view_count ASC LIMIT 1
您当然也需要跟踪视图,点击等。
那就是说,这是一个非常解决的问题,所以使用像OpenX这样的东西可能更容易。 (你可以下载一个开源版本。)
答案 1 :(得分:0)
您可以在PHP脚本中计算当前时间并将其放入$ time。然后进行像
这样的查询SELECT * FROM affbanners WHERE timedate&gt; = $ time and active = 1 order by rand()
这应该会给你所有横幅的时间设置为现在或将来。