这不是一个特定于编程的问题,而是一个普遍的问题:
我的数据库中有几个引号。我可以随时添加更多引号,但想法是这样的:
每天都会显示一个新报价,之后的第二天会显示下一个报价。当达到报价的“限制”时,会显示第一个报价,让您始终在您的网站上获得报价。
我该怎么做?
我知道需要进行检查,例如“如果昨天显示了报价,则显示新报价,并且如果昨天的报价也是数据库中的最新报价,则从第一个报价开始”。我完全不知道如何开始,所以非常感谢您的帮助!
我正在使用 PHP 和 MySQL。
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
Galchens awnser 应该覆盖它,但是如果您添加或删除引号,您将获得两次相同的引号。
更好的方法是每天绘制一个随机报价(使用 cronjob)
SELECT * FROM Quotes ORDER BY RAND() LIMIT 1
添加 2 个字段,used 和 today(枚举 0,1 或 int 1) set today = 1 表示每天随机报价 set used = 1 如果已使用报价和今天的报价
一旦没有更多未使用的引号离开更新为 0;
由于您已经在使用 cronjobs 将结果缓存到文件中!
我会在数据库中通过 id 获取引号,例如 1-100,然后使用 php 函数从数据库中随机选择它
rand(1, 100);
当然,您需要将为该日期选择的内容保存在另一个表格中,以便您可以检查是否已为新的一天生成。