来自db的随机图像,链接通过id

时间:2012-10-18 23:45:14

标签: php sql random limit

有一些问题,基本上我有一个随机的图片库。

这是随机缩略图的代码:

<?php
include('../../connect.php');
$result = mysql_query("SELECT *
                       FROM picture AS r1
                       JOIN
                       (
                          SELECT ROUND(RAND() * (SELECT MAX(id)
                                                 FROM picture) ) AS id
                       ) AS r2 
                       WHERE r1.id >= r2.id 
                          AND public_approved=1
                       ORDER BY r1.id ASC 
                       LIMIT 4;")
or die(mysql_error());

while($row = mysql_fetch_array( $result ))  
{
echo "<div style='float:left; margin:2px;' >";
echo '<a href="pictures.php?id=' . $row['id'] .'"><img src="../../files/small/thumb0_'. $row['file_name'] . '.' . $row['file_extension'] . '" border="0"></br>';
echo "</div>";
}
?>

当点击其中一个缩略图时,页面会重新加载并使用以下命令加载主要内容:

<?php
include('../../connect.php');

$passed_id = $_GET['id']; 

$result1 = mysql_query("SELECT * FROM picture where id='$passed_id' ")
  or die(mysql_error());

while($row = mysql_fetch_array( $result1 ))     
{?>

这将继续通过显示较大图像和标题等的表格。

我遇到了两个问题:

1 - 即使我在限制中指定4,有时也只显示1 2或3个拇指。

2 - 有时当我点击缩略图时会使用错误的ID,即缩略图ID 2,但会激活ID 8。

2 个答案:

答案 0 :(得分:3)

你得到1,2或3个拇指的原因是因为r1.id&gt; = r2.id其中r1.public_aprove 1只有结果集1或2或3.原因是你的RAND()。

问题2哪一行[id]你使用r1.id或r2.id - 我怀疑它的r2.id。

答案 1 :(得分:1)

假设X是您想要显示的图像数量,您应该将[MAX(id) - X]作为RAND()乘数。这样结果集就会有足够的结果。

第二个问题看起来很简单,有人可能会发布一个好的答案,但请记住,这通常是你的php / html代码中的列/参数混淆。

祝你好运!