【问题标题】:random images from db, with links trough id来自 db 的随机图像,带有链接槽 id
【发布时间】:2012-10-09 13:07:09
【问题描述】:

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

这是随机缩略图的代码:

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

【问题讨论】:

    标签: php sql random limit


    【解决方案1】:

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

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

    【讨论】:

    • 抱歉,r1.id 或 r2.id 是否从同一张表中提取有什么关系。
    【解决方案2】:

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

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

    祝你好运!

    【讨论】:

    • 确保表格总是多于 X 行。如果不是,请确保使用 MAX(id) 或将参数 X 设置为零。让它变得美观和可读,还要确保编写一些文档,让每个人(包括一年后的你自己)都知道你为什么这样做。很高兴能提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 2010-10-28
    • 1970-01-01
    相关资源
    最近更新 更多