2

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

这是随机缩略图的代码:

<?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。

4

2 回答 2

3

您获得 1,2 或 3 个拇指的原因是因为 r1.id >= r2.id 其中 r1.public_aprove 1 只有结果集 1 或 2 或 3。原因是您的 RAND()。

对于问题 2,您使用的是 r1.id 还是 r2.id 的哪一行 [id] - 我怀疑它的 r2.id。

于 2012-10-18T23:50:25.457 回答
1

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

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

祝你好运!

于 2012-10-18T23:56:00.310 回答