每天显示一条短信


show a text per day

我有一个表,有太多的文本记录。(例如1000记录)

我的表结构如下:

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

我想每天显示一个记录,你知道这个吗?

谢谢

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

SELECT * FROM my_table ORDER BY RAND() LIMIT 1

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

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

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

,然后你总是可以写查询来获取数据的日期..

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

SELECT text FROM yourTable ORDER BY RAND() LIMIT 1

(假定MySQL)

您可以编写(或找到)一个函数,该函数将根据日期生成伪随机整数(某种类型的高碰撞散列)。使用SELECT Text WHERE ID = ?。这样就不需要存储任何额外的数据。当然,您必须在nm的范围内设置整数边界,其中n是您的最低ID, m是您的最高ID。

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

<?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.";
}
?>