这不是一个特定于编程的问题,而是一个更普遍的问题:
我的数据库中有几个引号。我可以随时添加更多引号,但想法是:
每天都会显示一个新报价,并显示下一个报价的第二天。当达到报价的“限制”时,会显示第一个报价,让您始终在您的网站上有报价。
我该怎么做?
我知道需要进行一次检查,例如“昨天显示的报价,显示新的报价,昨天报价也是数据库中第一个引用的最新报价”。我完全不知道如何从这开始,所以非常感谢一点帮助!
我正在使用PHP和MySQL。
答案 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将结果缓存到文件中!