两页随机图片

时间:2013-01-31 13:05:49

标签: php mysql

我有一张桌子可以存储三类图像:汽车,自行车,公共汽车。这些图像显示在两页上。在第一页上,您应该看到每个类别的图像,这些图像是随机定义的。在第二页上,您应该看到剩余的图片。我怎么能用php做到这一点?

2 个答案:

答案 0 :(得分:1)

我更喜欢在MySQL中执行此操作,您可以将订单设置为:

ORDER BY MD5(ImageNo+UserRandomNumber)

SQL FIddle

您可以为每个用户生成一个随机数,将其存储在会话中,然后将其应用于订购,只要提供的数量保持不变,订单也将保持不变。

答案 1 :(得分:0)

您确实可以使用会话来存储第一页上显示的图像,然后将它们留在第二页上。在不知道您的确切表结构的情况下,这样的事情应该有效:

<?php

// page 1
session_start();

function get_random_image_id($category)
{
    // SELECT id FROM images WHERE category = $category ORDER BY RAND() LIMIT 1
}

function show_image($id)
{
    // SELECT * FROM images WHERE id = $id
    // echo <img ...>
}

$_SESSION['image_ids'] = array(
    get_random_image_id("cars"),
    get_random_image_id("bikes"),
    get_random_image_id("buses"),
);

foreach($_SESSION['image_ids'] as $image_id)
{
    show_image($id);
}

?>

<?php

// page 2
session_start();

function show_images($exclude_ids)
{
    $ids = implode(",", $exclude_ids);
    // SELECT * FROM images WHERE id NOT IN ($ids)
}

$exclude = array();
if(isset($_SESSION['image_ids'])) // has the user visited page 1?
{
    $exclude = $_SESSION['image_ids'];
}

show_images($exclude);

?>