每天显示一个文字

时间:2011-07-25 07:30:22

标签: php sql

我的桌子有太多的文字记录。 (例如1000记录)

我的表结构如下所示:

ID          |         Text
---------------------------------------
 1          |       My Test Text 1
 2          |       My Test Text 2

我想每天显示一条记录,对此有什么想法吗?

感谢

7 个答案:

答案 0 :(得分:3)

使用今天日期ORDER BY RAND(CURDATE())$date = date('Y-m-d') ;的种子按rand排序,然后使用...ORDER BY RAND($date)

答案 1 :(得分:2)

SELECT * FROM my_table ORDER BY RAND() LIMIT 1

这将获取随机记录。使用PHP缓存它,使用24小时。每次加载此页面时,PHP都应检查缓存文件和过期时间。如果缓存已过期,请进行新查询,重新缓存。冲洗,重复。

答案 2 :(得分:2)

RAND()函数以定义的方式工作,因此您可以使用种子在表上生成随机选择。出于此目的,您可以使用当前日期作为种子,查询将如下所示 从Table_Name中选择文本ORDER BY RAND(CURDATE())LIMIT 1

答案 3 :(得分:0)

为此你需要在表中添加列来存储插入数据的日期。

然后您可以随时编写查询以按日期获取数据..

答案 4 :(得分:0)

您唯一的选择是随机排序并将结果限制为1,因为您没有日期列。

SELECT text FROM yourTable ORDER BY RAND() LIMIT 1

(假设MySQL)

答案 5 :(得分:0)

您可以根据日期编写(或查找)生成伪随机整数(某种类型的高冲突散列)的函数。用于SELECT Text WHERE ID = ?。这样您就不必存储任何其他数据。当然,您必须将 n 范围内的整数绑定到 m ,其中 n 是您的最低ID m 是你最高的。

答案 6 :(得分:0)

因为你没有日期,我的建议是使用文本文件来存储昨天显示的ID (一些 UNTESTED 快速代码让你入门):

<?php
$tempfile = '/path/to/file/yesterday_id.txt';

list($yesterday_id, $yesterday_date) = explode("\t", file_get_contents( $tempfile ));
$today = date('Y-m-d');
if( $yesterday_date <> $today)
{
   $yesterday_id++;
}

$sql = "SELECT * FROM sometable WHERE id = '$yesterday_id'";
$rs = mysql_query( $sql );
if( $r = mysql_fetch_assoc($rs))
{
   echo $r['text'];
   file_put_contents($tempfile, "{$yesterday_id}\t{$today}");
}
else
{
   echo "text not found.";
}
?>