如何每天轮换报价

时间:2012-12-09 19:30:02

标签: php mysql

这不是一个特定于编程的问题,而是一个更普遍的问题:

我的数据库中有几个引号。我可以随时添加更多引号,但想法是:

每天都会显示一个新报价,并显示下一个报价的第二天。当达到报价的“限制”时,会显示第一个报价,让您始终在您的网站上有报价。

我该怎么做?

我知道需要进行一次检查,例如“昨天显示的报价,显示新的报价,昨天报价也是数据库中第一个引用的最新报价”。我完全不知道如何从这开始,所以非常感谢一点帮助!

我正在使用PHP和MySQL。

3 个答案:

答案 0 :(得分:3)

function get_daily_quote(){
    $q = floor(time()/86400);  // will produce a number
    $n = 100; // num of quotes - you can count the quotes in the database or something
    $res = mysql_query('SELECT * FROM `quotes` ORDER BY `id` ASC LIMIT '.($q%$n).', 1');
    return mysql_fetch_assoc($res);
}

或者使用pdo而不是mysql的旧函数,但是你明白了......

修改

只是为了解释 - $ q将始终从前一天开始增加1。当从表中获取引用元组时,$ q%$ n将是最好的。我们将按ID排序以保持结果的顺序相同,ID将是自动递增的主键。这应该可以解决问题。

当然,如果您想要性能,可以将其保存到文件中并每天运行一次以进行更新,因此您无需查询数据库。

修改 固定$ q

答案 1 :(得分:0)

我会通过id在数据库中得到引号,例如1-100然后使用php函数随机从数据库中选择它

rand(1, 100);

当然,你需要保存那个日期所选择的东西,或许还有另一张桌子,这样你就可以检查这是否已经为新的一天生成了。

答案 2 :(得分:0)

Galchens awnser应该覆盖它但是如果您添加或删除引号,您将获得相同的引用两次。

更好的方法是每日抽取一个随机引用(使用cronjob)

SELECT * FROM Quotes ORDER BY RAND() LIMIT 1

添加2个字段,使用和今天(枚举0,1或int 1) 设置今天= 1每天随机报价 set used = 1如果已使用报价且今天报价

一旦没有更多未使用的引号,则更新用于0;

由于您已经在使用cronjobs将结果缓存到文件中!