2014-01-10 1 views
1

Прошу прощения, если название немного расплывчато ... Я все еще относительно новичок на PHP (3 месяца или около того). Кроме того, мой родной язык не английский, поэтому, пожалуйста, медведь со мной :) Я также искал этот сайт и google, чтобы найти решение, но без везения.Как мне связать с эскизами в подкаталоге при использовании php для получения списка изображений?

У меня есть сценарий, установленный в моей директории изображений, которая сканирует все подкаталоги, а затем выводит список ссылок, которые, если щелкнуть, перейдут на страницу, на которой отображаются все изображения выбранного подкаталога. Путь к такой странице будет:

www.mysite.com/images/list_images.php?folderName=RandomFolder 

Код для этого:

images/index.php 

<?php 
    $path = 'images/' ; 
    $results = scandir($path); 
    for ($i=0;$i<count($results);$i++) 
    { 
    $result=$results[$i]; 
    if ($result === '.' or $result === '..') 
     continue; 
    if (is_dir($path . '/' . $result)) 
    { 
     echo "<a href='list_images.php?folderName=$result'>$result</a><br/>"; 
    } 
    } 
?> 

-------------------- 
list_images.php 

<?php 
    if(isset($_GET['folderName'])) 
     $folder=$_GET['folderName']; 
    $path = 'images/'.$folder.'/' ; 
    $images = glob($path . '*.{jpg,jpeg,png,gif}', GLOB_BRACE); 
    foreach ($images as $image) 
    { 
    echo "<a href='$image'><img src='$image'/></a>"; 
    } 
?> 

Теперь мой вопрос: В каждом из моих изображений подкаталогов я другой подкаталог называется «пальцы», что содержит - да, вы догадались - миниатюры. Каждый эскиз называется точно таким же, как его соответствующий файл в каталоге над ним. Теперь, как бы я сделал img src в приведенном выше коде, чтобы указать на большой палец?

Любая помощь была бы очень желанной! Заранее спасибо!

EDIT:

Я снова посмотрел на свой код, и я сделал несколько дополнительных линий. Он по-прежнему не работает, но по крайней мере теперь он выводит миниатюры, которые ссылаются на большее изображение. Вот новый код:

list_images.php 
    if (isset($_GET['folderName'])) $folder=$_GET['folderName']; 
    $path = 'images/'.$folder.'/' ; 
    $thumb_path = ''.$path.'/thumbs/'; 
    $thumbs = glob($thumb_path . '*.{jpg,jpeg,png,gif}', GLOB_BRACE); 
    $images = glob($path . '*.{jpg,jpeg,png,gif}', GLOB_BRACE); 
    foreach ($thumbs as $thumb){ 
     foreach ($images as $image){ 
      echo "<a class='fancybox' href='$image'><img src='$thumb'/></a>"; 
     } 
    } 

Это своего рода работает сейчас. Единственная проблема заключается в том, что он выводит 13 одинаковых миниатюр для каждого изображения - и он делает это 13 раз (для каталога, содержащего 13 файлов изображений), так что всего 169 эскизов.

Любые идеи, как исправить это?

ответ

0

Если вы уверены, что имя папки thumbs, нет причин, по которым вы не можете это сделать. Взгляните на следующее.

echo "<a href='$image'><img src='thumbs/$image'/></a>"; 
+0

Спасибо за быстрый ответ. Я уже пробовал то, что вы предлагаете. Он работает, но миниатюрные изображения каким-то образом не работают - они показаны как маленькие «сломанные» изображения ... (я не уверен, что они называются) –

0

Вы можете сделать str_replace на пути.

Если путь к изображению mydir\image01\pic01.jpg

str_replace('image01','image01\thumb',$image); 

будет указывать на mydir\image01\thumb\pic01.jpg

+0

Но тогда мне не нужно было бы создавать str_replace для каждого единственная папка с картинками? –

+0

А теперь я вижу, что у вас есть '$ path = 'images /'.$ folder.'/''. Почему бы просто не поместить 'thumbs /' за ним, чтобы он просматривал папку с большими пальцами? – Michel

+0

Нет, это тоже не сработало - я пробовал это раньше. Это также преобразует ссылки, указывающие на большие пальцы, а не на большие файлы. –