Проблема динамической галереи PHP - PullRequest
1 голос
/ 13 февраля 2011

Я пытаюсь создать скрипт динамической галереи изображений, чтобы клиент, как только я закончил работу с сайтом, мог загружать изображения через FTP, и сайт обновлялся автоматически. Я использую сценарий, который нашел здесь, но не могу заставить его работать на всю жизнь. PHP записывает информацию, но никогда не запишет изображения, которые он должен найти в каталоге. Не уверен почему. Демо здесь и вы можете увидеть рабочий код (без 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;
}
$path = "../images/bettydew/";
$tree = getDirTree($path);

echo '<ul class="gallery">';

foreach($tree as $element => $eval) {
    if (is_array($eval)) {
        foreach($eval as $file => $value) {
                if (strstr($file, "png")||strstr($file, "jpg")||strstr($file, "bmp")||strstr($file, "gif")) {
                        $item = $path.$file;
                        echo '<a href="javascript:void(0);"><img src="'.$item.'" alt="'.$item.'"/></a>';
                }
        }
    }
}

echo '</ul>';
?>

Ответы [ 2 ]

0 голосов
/ 13 февраля 2011

проблема пути и проблема рекурсии в подкаталогах.

возможно попробуйте это:

<?php
$path = "./images/bettydew/";
$file_array = array ();
readThisDir ( $path, &$file_array );

echo '<ul class="gallery">';
foreach ( $file_array as $file )
{
  if (strstr($file, "png")||strstr($file, "jpg")||strstr($file, "bmp")||strstr($file, "gif"))
  {
  list($width, $height) = getimagesize($file);
  echo '<li><a href="javascript:void(0);"><img src="'.$file.'" width="'.$width.'" height="'.$height.'" alt="'.$file.'"/></a></li>';
  }
}
echo '</ul>';

  function readThisDir ( $path, $arr )
  {
    if ($handle = opendir($path)) 
    {
        while (false !== ($file = readdir($handle))) 
        {
            if ($file != "." && $file != "..") 
            {
              if (is_dir ( $path."/".$file ))
              {
                readThisDir ($path."/".$file, &$arr);
              } else {
                $arr[] = $path."/".$file;
              }  
            }
        }
        closedir($handle);
    }
  }
?>
0 голосов
/ 13 февраля 2011

Либо Ваш путь является ошибкой ... это вызвало у меня похожую ошибку, когда я указал неверный путь к переменной $ path.

Или у вас нет разрешения на чтение в этом каталоге ... проверьте права доступа тоже

И не забудьте проверить '/' в конце вашего пути, так как без него ваш код не может работать рекурсивнопоиск в дочернем каталоге ...

И, наконец, ваш код не будет указывать правильный путь к файлам подкаталога при записи вывода ... так что проверьте это тоже ...

...