我有一个表格,文字记录太多。 (例如1000
记录)每天显示一个文本
我的表结构类似于下面:
ID | Text
---------------------------------------
1 | My Test Text 1
2 | My Test Text 2
我想显示每天的纪录,对此有任何想法?
感谢
我有一个表格,文字记录太多。 (例如1000
记录)每天显示一个文本
我的表结构类似于下面:
ID | Text
---------------------------------------
1 | My Test Text 1
2 | My Test Text 2
我想显示每天的纪录,对此有任何想法?
感谢
为了通过与兰德今天的日期ORDER BY RAND(CURDATE())
或$date = date('Y-m-d') ;
,然后的种子使用...ORDER BY RAND($date)
谢谢你,你很棒 –
哇。我不知道你可以在'RAND()'里放一个日期。现在懒得去尝试一下,但我会听你的话 - 那是岩石。 – AlienWebguy
是啊,它的方便随时随地做事。 – plague
的,你需要在表中添加列在其上的数据已经被插入存储日期。
,然后你可以写查询来获取数据按日期..
不,因为我想如果我有20条记录,从这20条记录每天显示一条文字 –
SELECT * FROM my_table ORDER BY RAND() LIMIT 1
这将获取一个随机记录。使用PHP以24小时使用寿命进行缓存。每次加载此页面时,PHP都应检查缓存文件和过期时间。如果缓存过期,则进行新查询,重新缓存。冲洗,重复。
您的唯一选择是随机排序并将结果限制为1,因为您没有日期列。
SELECT text FROM yourTable ORDER BY RAND() LIMIT 1
(假设MySQL的)
您可以编写(或发现),将基于日起伪随机整数(某种类型非常高的碰撞哈希)函数。用它来SELECT Text WHERE ID = ?
。这样你就不必存储任何额外的数据。当然,你将不得不作出米,其中ñ是你最低的ID和米是您最高的ñ在区间震荡的整数。
,因为你没有日期,我的建议是使用文本文件中存储什么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.";
}
?>
RAND()函数中定义的方式工作,所以你可以用种子来生成表上的随机选择。为此目的,您可以使用当前日期作为种子和查询将看起来像 从Table_Name选择文本ORDER BY RAND(CURDATE())极限1
呃...是啊...有一个日期与每一行,或者你真的只想在24小时内获取一次记录? – bdares
@bdares:看到'i_forget'回答,解决了我的问题,谢谢 –