有一些问题,基本上我有一个随机的图片库。
这是随机缩略图的代码:
<?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。
答案 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代码中的列/参数混淆。
祝你好运!