2009-12-13 85 views
2

嘿,我的第一篇:d动态图片库

问题:

我试图做一个模板库,而不是一个幻灯片,我可以很容易地在多个网站上重复。
主要用于快速对折站点,其中所有者不知道如何更新代码以添加图片。

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

从php/JavaScript输出的img标记集合需要是缩略图,点击时会链接到完整的图片,这可能在制作链接时可以用JavaScript处理原来。

进展:

我发现了一个PHP脚本,将读取一个文件夹中的文件和网址保存到在JavaScript中使用的数组。 但是,用于显示图片的代码是以单块幻灯片放映的形式完成的,因为我需要将所有图片单独发布,而不仅仅是替换同一图片的src。

实施例:

根/ index.htm的 - 引擎收录COM/m52568ed5
根/图像/ getimages.php - 引擎收录COM/f5395a572
根/图像/ PIC01 [] []。 PNG
根/图像/ pic03.jpg
根/图像/ asdfs.gif

那么,如何通过galleryarray [curimg]获取JavaScript中循环,并写出我的链接?

我得到了这个,并卡住了。

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>") 
} 
} 

在此先感谢Braden。


编辑: 我的继承人沙盘显示怎么回事

- 编辑:删除链接

无论我如何改变每个项目的输出,例如,如果我更换整个部分用一个简单的回声我得到的是以下内容:

<!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我开始之前,我想我做的好。

回答

5

很简单,自动相册程序,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>'; 

而且我用的灯箱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脚本的输出会标记之间。

+0

看起来有趣的生病给它一个裂缝和后期结果。 – Neros 2009-12-13 11:05:35

+0

我改变了目录,并上传,但它不工作:S 继承人我的当前htm文件加载的PHP - http://pastebin.com/f4fce85e – Neros 2009-12-13 11:13:35

+0

你不能包括

0

您可以使用PHP来写出img标签。

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

编辑:看着你的pastebin,它看起来像你误会了PHP的工作原理。 <script src="res/getimages.php"></script>将不起作用,因为在客户端读取脚本标签。 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也是如此。你可以不断地询问这一切是如何工作的,但是你永远不会真正理解它,并且不能解决如何把所有的东西放在一起。只要给它几个小时!

+0

确定很酷,但我不知道PHP做到这一点:)头脑帮助我了吗? 是的,我知道它无限期运行,我怎么阻止它是我的问题之一。 – Neros 2009-12-13 10:56:49

+0

顺便说一句,圣地狱,这是一个快速回复。 – Neros 2009-12-13 10:57:37

+0

那么你为什么要标记问题PHP呢? – pavium 2009-12-13 11:00:19

0

感谢所有帮助过我的人,感谢Sergey Kunetsov为他的画廊剧本做了些许修改,完美工作。

和任何人谁想要它,继承人最后工作的PHP。

http://pastebin.com/f442f31f3

是得到显示的文件夹是$路径。

享受,再次感谢。