这不是一个特定于编程的问题,而是一个更一般的问题:
我的数据库里有几句名言。我可以随时添加更多的引用,但想法是这样的:
每天都会显示一个新的报价,第二天会显示下一个报价。当达到报价的“限制”时,将显示第一个报价,允许您始终在您的网站上拥有报价。
我该怎么做呢?
我知道需要有一个检查,如“如果报价是昨天显示,显示新的报价,如果昨天的报价也是数据库中最新的从第一个报价开始”。我完全不知道如何开始,所以一点帮助都是非常感谢的!
我使用的是PHP和MySQL。
发布于 2012-12-10 03:41:09
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
发布于 2012-12-10 03:36:20
我会有数据库中的报价id,例如1-100,然后从数据库中随机选择它使用php函数
rand(1, 100);当然,您需要将为该日期选择的内容保存在某个位置,可能是另一个表,这样您就可以检查是否为新的一天生成了该表。
发布于 2012-12-10 03:56:00
Galchens awnser应该涵盖它,但如果您添加或删除引号,您将获得两次相同的引号。
一个更好的方法是每天随机抽取一个引号(使用cronjob)
SELECT * FROM Quotes ORDER BY RAND() LIMIT 1添加2个字段,used和today (枚举0、1或int 1) set today =1表示每天的随机引用set used =1(如果已使用引号)和today quote
一旦不再有未使用的引号,则更新为0;
因为您已经在使用cronjob,所以将结果缓存到一个文件中!
https://stackoverflow.com/questions/13790924
复制相似问题