PHP Галерея изображений - PullRequest
0 голосов
/ 22 августа 2009

Кто-то попросил меня создать галерею изображений PHP, которая будет считывать изображения из каталога, а затем создавать эскизы для галереи. Существует один каталог с thumnails и один каталог с полноразмерными изображениями.

Я читаю имена файлов из каталога / thumb / и вставляю каждое имя файла в качестве значения в thumbArray. Оттуда я выводю значения в миниатюре src (<img src="<?php echo $thumbArray[$i]; ?>" />), где $ i - просто счетчик. Таким образом, миниатюрные изображения создаются из массива, но когда вы нажимаете на миниатюру, он запрашивает? Имя файла в URL. Используя $ _SERVER ['QUERY_STRING'], я затем прочитал указанную строку запроса и вставил запрос (имя файла) в большой <img src"<?php echo $_SERVER['QUERY_STRING']; ?>" />. Это ограничено, хотя. Как теперь я не могу читать массив, как опорную точку, так и больше не могу указывать вперед или назад в массиве.

Теперь я понимаю больше?

Пожалуйста, помогите ...

    <?php 
    $i = 0;

    /* Large file name and thumbnail file name must match */
    /* Large image size = 480px x 300px */
    echo '<img class="frameImg" src="images/large/'.$_SERVER['QUERY_STRING'].'" />';

    ?>
    <p id="prevNext"><a href="#">&lt;&lt; Prev </a> || <a href="#"> Next &gt;&gt;</a></p>
  </div>
  <div id="thumbs">
    <ul>
     <?php
    /* Must change $dir to the full path of directory all the way from root /home/user/domain/images/thumb */
    $dir = "*************************";
    $dh = opendir($dir);

    /* Thumbnail file name and large file name must match */
    $thumbArray = array();
    while (($file = readdir($dh)) !== false) {
        if ($file != "." && $file != "..") {
            $thumbArray[$i]=$file;
            echo '<li id="'.$i.'"><a href="?'.$thumbArray[$i].'"><img src="images/thumb/'.$thumbArray[$i].'" alt="Alt for '.$thumbArray[$i].'" /></a></li>';
            $i++;
        }
    }
    closedir($dh);
    ?>

1 Ответ

1 голос
/ 22 августа 2009

если я вас правильно понимаю, вам просто нужно выбрать следующее и предыдущее значения из массива $ thumbArray [$ i].

например.

$prevThumb = $thumbArray[($i-1)];
$nextThumb = $thumbArray[($i+1)];

Конечно, для первого и последнего вы должны проявить особую осторожность. (и проверка существования элемента)


EDIT: хорошо, я понимаю.

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

для кнопок «предыдущий / следующий» теперь можно использовать индекс из уже созданного массива, чтобы найти имя файла для предыдущего / следующего изображения.

я сделал себя понятным?

...