【问题标题】:MYSQL/PHP/JQUERY - Blobs into image gallery, how to solve an issue?MYSQL/PHP/JQUERY - 图像库中的 Blob,如何解决问题?
【发布时间】:2017-05-03 20:17:55
【问题描述】:

我已经制作了一个工作脚本,可以将之前上传的图片(及其标题、大小、类别等)加载到画廊中。 它看起来像这样:https://i.stack.imgur.com/RWASu.jpg

问题是,我让它加载了一个 RANDOM ID 的图像,左右滑动后会有更多这样的图像,我希望它们按 ID 显示,但彼此是 NEXT ID,而不是是相同的或随机的。我怎样才能让它工作?

这是目前为止的脚本:

<?php
$result = mysql_query("SELECT id, rozmiar, technika, kategoria, image_time, title FROM {$table} ORDER BY RAND() LIMIT 1");
if (mysql_num_rows($result) == 0)
    echo '<ul><li>Nie wgrano żadnych plików.</li>';
else
{
    echo '<ul>';
    while(list($id, $rozmiar, $technika, $kategoria, $image_time, $title) = mysql_fetch_row($result))
    {
        echo "<div class='image-frame left-image'>";
        echo "<a href='".$_SERVER['PHP_SELF']."?show=$id' data-lightbox='galeria' data-title='{$title}, {$technika} | {$rozmiar}'><img width='450' src='".$_SERVER['PHP_SELF']."?show=$id'></a>";
        echo "<div class='description'><p>{$technika}, {$rozmiar}</p></div></div>";
    }

    echo '</ul>';
}
?>
        <?php
$result = mysql_query("SELECT id, rozmiar, technika, kategoria, image_time, title FROM {$table} ORDER BY RAND() LIMIT 1");
if (mysql_num_rows($result) == 0)
    echo '<ul><li>Nie wgrano żadnych plików.</li>';
else
{
    echo '<ul>';
    while(list($id, $rozmiar, $technika, $kategoria, $image_time, $title) = mysql_fetch_row($result))
    {
        echo "<div class='image-frame right-image'>";
        echo "<a href='".$_SERVER['PHP_SELF']."?show=$id' data-lightbox='galeria' data-title='{$title}, {$technika} | {$rozmiar}'><img width='450' src='".$_SERVER['PHP_SELF']."?show=$id'></a>";
        echo "<div class='description'><p>{$technika}, {$rozmiar}</p></div></div>";
    }

    echo '</ul>';
}
?>

关于我如何将它变成一个脚本的任何想法,这将加载具有升序 ID 的图像的多个块? 将不胜感激所有的建议。

【问题讨论】:

  • 你打算如何对这些检索到的图像应用类?我的意思是,只有一个是left-image,其他都是right-image
  • 抱歉没有具体说明 - 我想要显示左侧块和右侧块。那些会显示 ID #1 和 ID #2 的图像,但是会有一个向右滑动的选项,这样左边会变成 ID #3,右边会变成 ID #4。我在将 to 块设置为自动显示画廊的另一部分时遇到问题。我一直在想是否有办法制作一个变量,也可以放入 CSS 中,以便每个块都是唯一的和自动化的?
  • 或者也许我应该从两个街区辞职,并在添加更多图像时制作一个只会水平扩展的街区?
  • 我在下面给出了答案。希望这能解决您的问题。

标签: php jquery mysql blob image-gallery


【解决方案1】:

解决办法是这样的:

  • 在没有任何ORDER BYLIMIT 子句的情况下从表中检索所有行,如下所示:

    SELECT id, rozmiar, technika, kategoria, image_time, title FROM {$table}
    
  • 计算检索到的总行数并创建一个空的$resultArray 数组,如下所示:

    $rowCount = mysql_num_rows($result);
    $resultArray = array();
    
  • 遍历结果集并将行追加到$resultArray 数组,如下所示:

    while($row = mysql_fetch_array($result)){
        $resultArray[] = $row;
    }
    
  • 使用rand() 函数从$resultArray 数组中随机选取一行,并从此$resultArray 数组中实现循环数组逻辑以达到您想要的结果,如下所示:

    $i = $randValue = rand(0, $rowCount - 1);
    do{
        list($id, $rozmiar, $technika, $kategoria, $image_time, $title) = $resultArray[$i];
        echo "<div class='image-frame'>";
        echo "<a href='".$_SERVER['PHP_SELF']."?show=$id' data-lightbox='galeria' data-title='{$title}, {$technika} | {$rozmiar}'><img width='450' src='".$_SERVER['PHP_SELF']."?show=$id'></a>";
        echo "<div class='description'><p>{$technika}, {$rozmiar}</p></div></div>";
        $i = ++$i % $rowCount;
    }while($i != $randValue);
    

这是完整的代码,

$result = mysql_query("SELECT id, rozmiar, technika, kategoria, image_time, title FROM {$table}");

$rowCount = mysql_num_rows($result);
$resultArray = array();
while($row = mysql_fetch_array($result)){
    $resultArray[] = $row;
}

$i = $randValue = rand(0, $rowCount - 1);
do{
    list($id, $rozmiar, $technika, $kategoria, $image_time, $title) = $resultArray[$i];
    echo "<div class='image-frame'>";
    echo "<a href='".$_SERVER['PHP_SELF']."?show=$id' data-lightbox='galeria' data-title='{$title}, {$technika} | {$rozmiar}'><img width='450' src='".$_SERVER['PHP_SELF']."?show=$id'></a>";
    echo "<div class='description'><p>{$technika}, {$rozmiar}</p></div></div>";
    $i = ++$i % $rowCount;
}while($i != $randValue);

旁注:不要使用mysql_* 函数,它们在 PHP 5.5 中已被弃用,并在 PHP 7.0 中被完全删除。请改用mysqlipdoAnd this is why you shouldn't use mysql_* functions

【讨论】:

  • 现在我将left-imageright-image 排除在外。您可以根据需要调整代码以合并这些 class 值。
  • 哇,这正是我的意思!
  • 谢谢您,先生,您的解决方案和部分解释它的工作原理,现在对我来说完美无缺。非常感谢!!!
猜你喜欢
  • 2020-03-22
  • 1970-01-01
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 1970-01-01
  • 2011-09-16
  • 2013-02-07
  • 2021-05-22
相关资源
最近更新 更多