0

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

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

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

我该怎么做?

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

我正在使用 PHP 和 MySQL。

4

3 回答 3

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

于 2012-12-09T19:41:09.383 回答
0

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 将结果缓存到文件中!

于 2012-12-09T19:56:00.470 回答
0

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

rand(1, 100);

当然,您需要将为该日期选择的内容保存在另一个表格中,以便您可以检查是否已为新的一天生成。

于 2012-12-09T19:36:20.320 回答