每次获取随机/不同的记录

时间:2011-09-28 09:29:27

标签: mysql random

每次用户刷新页面时,我都想要旋转3个缩略图。因此每次都要显示不同的缩略图。我有图像名称存储在数据库中。我正在使用此SQL查询来获取“通过rand()限制1”从表名顺序中选择缩略图。它完美地提取了一个缩略图。

问题是有时会出现相同的图像。例如,我第一次刷新页面缩略图1.jpg显示但第二次再次出现1.jpg。

所以我想要的是每次刷新页面时都有不同的缩略图。

有人能为我提供一些建议吗?

2 个答案:

答案 0 :(得分:2)

随机选择无法做到这一点,因为相同的图像可以再次出现。

对于您想要的效果,您需要使用cookie来存储最后显示的图像名称,而不是显示该图像以用于下一个请求。

正如您在评论中确认的那样,您不想显示最后显示的缩略图。在这种情况下,你可以使用sessions

这样做
// get last shown from session if any
$last_shown = '';
if(isset($_SESSION['last_shown_thumb']))
    $last_shown = $_SESSION['last_shown_thumb'];

// select a thumbnail randomly which is not the one last shown
$query = "SELECT thumbnail FROM tablename WHERE thumbnail <> '" . $last_shown . "' order by rand() limit 1";
$res = mysql_query($query);
$row = mysql_fetch_row($res);
$curr_thumb = $row[0];

// set the current to last shown in session
$_SESSION['last_shown_thumb'] = $curr_thumb;

答案 1 :(得分:1)

假设您使用的是PHP,则将先前的缩略图存储在$current_thumbnail中。
然后,你可以这样做

SELECT thumbnail FROM tablename WHERE thumbnail <> '$current_thumbnail' ORDER BY rand() LIMIT 1

您的查询只需要知道您当前显示的缩略图,以便过滤掉它。