【问题标题】:dynamic image gallery动态图片库
【发布时间】:2010-12-26 03:39:18
【问题描述】:

大家好,我的第一篇文章:D

问题:

我正在尝试制作模板库,而不是幻灯片,我可以轻松地在多个网站上重复使用它。
主要用于快速作品集网站,所有者不知道如何更新代码以添加图片。

它需要从选定的目录中读取所有图像文件。 (jpg、gif、png、bmp) 它需要能够在不更改任何代码的情况下更新内容。 (从文件夹动态加载) 它需要将img标签写入查看的页面。 (使用 JavaScript 进行自定义/css?)

从 php/JavaScript 输出的一组 img 标签需要是缩略图,点击后将链接到完整的 def 图片,这可能在最初制作链接时使用 JavaScript 处理。

进展:

我找到了一个 php 脚本,它可以从文件夹中读取文件并将 URL 保存到数组中,以便在 JavaScript 中使用。 然而,用于显示图片的代码是作为单个块幻灯片放映完成的,因为我需要它单独发布所有图像,而不仅仅是替换同一图像的 src。

例子:

root/index.htm - pastebin[.]com/m52568ed5
root/images/getimages.php - pastebin[.]com/f5395a572
根/images/pic01.png
根/images/pic03.jpg
根/图像/asdfs.gif

那么我如何让 JavaScript 循环遍历 galleryarray[curimg] 并写出我的链接?

我走了这么远,卡住了。

function rotateimages(){
 // document.getElementById("slideshow").setAttribute("src", "res/gallery/painting/"+galleryarray[curimg])
 // curimg=(curimg<galleryarray.length-1)? curimg+1 : 0
 for (curimg=1;curimg!=0;curimg++;) {
 document.write("<div><img class='gallery' src='" + galleryarray[curimg] + "' /></div>")
 }
}

提前致谢,布雷登。


编辑: 这是我的沙箱来显示发生了什么

-编辑:删除链接

无论我如何更改每个项目的输出,例如,如果我用一个简单的 echo 替换整个部分,我得到的结果如下:

<!DOCTYPE html>
<html>
    <head>
        <title>My Gallery</title>
    </head>

    <body>
        <div id="gallery"></div>
    </body>
</html>

似乎在尝试运行“foreach()”时卡住了

这是当前的 php:

<?php

function getDirTree($dir,$p=true) {
    $d = dir($dir);$x=array();
    while (false !== ($r = $d->read())) {
        if($r!="."&&$r!=".."&&(($p==false&&is_dir($dir.$r))||$p==true)) {
                $x[$r] = (is_dir($dir.$r)?array():(is_file($dir.$r)?true:false));
        }
    }

    foreach ($x as $key => $value) {
        if (is_dir($dir.$key."/")) {
                $x[$key] = getDirTree($dir.$key."/",$p);
        }
    }

    ksort($x);
    return $x;
}

$tree = getDirTree("./res/gallery/");

echo '<div id="gallery">';

foreach($tree as $element => $eval) {
    if (is_array($eval)) {

        foreach($eval as $file => $value) {
                if (strstr($file, "jpg")) {
                        $file = 'res/gallery/'.$element.'/'.$file;
                        echo 'test'; //test//echo '<a href="'.$file.'">test</a>'; //test// <img class="gallery" src="'.$file.'" alt="'.$file.'"/></a>';
                }
        }


    }
}
echo '</div>';

考虑到我在开始这个之前从未做过 php,我认为我做得很好。

【问题讨论】:

    标签: php javascript image gallery


    【解决方案1】:

    非常简单的自动图库脚本,photos.php:

    <?php
    function getDirTree($dir,$p=true) {
        $d = dir($dir);$x=array();
        while (false !== ($r = $d->read())) {
            if($r!="."&&$r!=".."&&(($p==false&&is_dir($dir.$r))||$p==true)) {
                $x[$r] = (is_dir($dir.$r)?array():(is_file($dir.$r)?true:false));
            }
        }
    
        foreach ($x as $key => $value) {
            if (is_dir($dir.$key."/")) {
                $x[$key] = getDirTree($dir.$key."/",$p);
            }
        }
    
        ksort($x);
        return $x;
    }
    
    $tree = getDirTree("./foto/");
    
    echo '<div id="gallery">';
    echo '<ul class="linone">';
    foreach($tree as $element => $eval) {
        if (is_array($eval)) {
            echo '<li><h4>'.$element.'</h4>';
            echo '<ul class="linone photos">';
            foreach($eval as $file => $value) {
                if (strstr($file, "jpg")) {
                    $file = 'foto/'.$element.'/'.$file;
                    echo '<li><a href="'.$file.'"><img src="'.$thumb.'" alt="'.$thumb.'"/></a></li>';
                }
            }
            echo '</ul>';
            echo '</li>';
        }
    }
    echo '</ul>';
    echo '</div>';
    

    我还使用了 lightbox jQuery 插件来让这个画廊看起来很舒服。

    此外,管理此页面的照片非常简单 - 您只需将 .jpg 文件上传到您的照片目录(本例中为“/foto/”)。

    index.php:

    <!DOCTYPE html>
    <html>
        <head>
            <title>My Gallery</title>
        </head>
    
        <body>
            <?php require_once('photos.php') ?>
        </body>
    </html>
    

    这个文件将包含photos.php文件并运行它,photos.php脚本的输出将在标签之间。

    【讨论】:

    • 看起来很有趣,我给它一个破解并发布结果。
    • 我更改了目录,并上传了但它不工作:这是我当前加载 php 的 htm 文件 - pastebin.com/f4fce85e
    • 你不能用
    • 你的代码缺少 ed "?>" 即便如此,我试了一下并没有发生,没有图片出现,没有错误,什么都没有。
    • 是的,当然。如果你的脚本文件充满了 PHP 代码,你需要在文件的开头写“”(但这不是必需的,但是关于这个规则,请了解高级 PHP 编码器 :) )。但是,如果您混合编写 HTML 和 PHP 代码,则需要以“”标签结束。
    【解决方案2】:

    你可以用PHP写出img标签。

    此外,您的 for 循环将无限运行,因为它的结束条件始终为真。

    编辑:查看您的 pastebin,您似乎误解了 PHP 的工作原理。 &lt;script src="res/getimages.php"&gt;&lt;/script&gt; 不起作用,因为脚本标签是在客户端读取的。 PHP 在服务器端运行。要运行 res/getimages.php,您必须执行以下操作:

    <?php //This is a PHP opening tag; anything after this is PHP code
    include('res/getimage.php'); //Imports the PHP file into index.php
    ?> <!--this is the closing PHP tag - anything after this is HTML -->
    

    我强烈建议您完成一个快速教程,例如 W3Schools PHP Tutorial,它将真正帮助您完成此任务。 JavaScript 也一样。你可以不断地询问这一切是如何运作的,但你永远不会真正理解它,也无法弄清楚如何将所有部分放在一起。给它几个小时!

    【讨论】:

    • 好酷,但我不知道 php 可以做到这一点 :) 介意帮助我吗?是的,我知道它无限期地运行,我该如何阻止它是我的问题之一。
    • 顺便说一句,天哪,这是一个快速的回复。
    • 那么你为什么要标记这个问题 PHP ?
    • 因为像 Skilldrick 说的,你可以用 php 编写 img 标签,我只是不知道该怎么做。
    • 我的意思是,如果您不了解 PHP,为什么要那样标记它?如果没有大量的手动操作,PHP 解决方案将无济于事。
    【解决方案3】:

    感谢所有提供帮助的人,非常感谢 Sergey Kunetsov 的画廊脚本,经过轻微修改后完美运行。

    对于任何想要它的人来说,这是最终的工作 php。

    http://pastebin.com/f442f31f3

    显示的文件夹是 $path。

    享受,再次感谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 2020-02-21
      • 2015-12-28
      • 2011-03-26
      • 2020-02-27
      相关资源
      最近更新 更多