【问题标题】:PHP - displaying 1 random record for each weekPHP - 每周显示 1 条随机记录
【发布时间】:2010-04-26 09:05:48
【问题描述】:

我想根据周显示来自数据库的 1 条随机记录。

我需要判断是否是新的,如果是新的一周,则选择记录并显示新记录。

我想我可以只使用一周中的一天来生成新记录,无论哪种方式都可以。

当有人在同一天再次访问或刷新页面时,我真的很难概念化我将如何存储记录 ID 而不是选择新记录 ID。

有什么想法吗?如果我不够清楚,请告诉我。

另外,我无法访问 cron 作业,因为它是共享主机。

【问题讨论】:

    标签: php mysql date


    【解决方案1】:

    创建一个表格,其中包含您要显示的行的 ID 和一个日期时间/时间戳列,该列说明该行的插入时间。然后你所要做的就是更新 id 如果它被插入超过一周。不幸的是,您必须对每个请求进行此检查。如果您不希望这样,您可以创建一个每周运行一次并更新表的 cron-job。

    【讨论】:

    • 我明白你的意思,但每次选择新记录时,我是只插入一条记录还是一条新记录?
    • @mike 我会在表格中只使用一条记录...除非您想保留过去显示的历史记录。
    【解决方案2】:

    让脚本从您的数据库中选择随机记录,然后将记录的内容放入数据库的空间中。然后让脚本显示记录的点到数据库上的位置。这样选择脚本只会作为 cron 作业运行一次。

    基本上,脚本 A 会提取已记录的文件并将新选择的文件替换为旧文件,然后脚本 B 指向该表条目。如果您无法创建表格和条目,只需将脚本 A 记录的 Id 保存在文本文件中,然后将该 Id 读入正在显示它的脚本中。

    【讨论】:

      【解决方案3】:

      MySQL 的函数RAND() 接受一个整数参数N,用作种子值。这允许在多个请求中获得相同的序列 - 您可以查看 http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_rand 中的示例。我会尝试使用SELECT field_1, field_2, field_3 FROM table_name ORDER BY RAND($time) ASC LIMIT 1 之类的东西,其中$time 将是本周初的UNIX 时间戳。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-18
        • 2012-06-15
        • 2019-03-07
        • 1970-01-01
        • 2011-12-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多