我有一个存储三类图像的表:汽车、自行车、公共汽车。这些图像出现在两页上。在第一页上,您应该看到每个类别的图像,定义如此随机。在第二页上,您应该会看到剩余的图片。我怎样才能使用 php 做到这一点?
user1633525
问问题
74 次
2 回答
1
我更喜欢在 MySQL 中执行此操作,您可以将顺序设置为:
ORDER BY MD5(ImageNo+UserRandomNumber)
您可以为每个用户生成一个随机数,将其存储在会话中,然后将其应用于排序,只要提供的数字保持不变,订单也将保持不变。
于 2013-01-31T13:48:28.233 回答
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);
?>
于 2013-01-31T13:39:38.033 回答