как вывести списком файлы из подкаталога?

duncan

батяр з личакова
Регистрация
10 Апр 2007
Сообщения
1.599
Реакции
450
PHP:
$dir = "/images";
$files = scandir($dir);
foreach ($files as $var){
    if (is_file($var)){
   
        echo "<div><img src=\"$var\" class=\"projectSlides\" alt=\"\"/></div>";
   
    }
}
выведет файлы во вложенной папке

но если есть корневая директоря www
в ней две папки images и scripts
в папке scripts лежит файл php
какой код должен быть, чтобы вывело картинки из папки images?
 
PHP:
$dir = "../images";
 
Я не понял что ты хочешь не просто "ткнуть в ошибку", а так сказать полностью сделать :)
PHP:
<?php
    $dir = "../images";
    $files = scandir($dir);
    foreach ($files as $var){
        if (is_file("../images/$var")){
            echo "<div><img src=\"../images/$var\" class=\"projectSlides\" alt=\"\"/></div>";
        }
    }
?>
Вот работающий пример, в каталоге puper два подкаталога - images и script, в подкаталоге script 1 файл, содержимое его сверху
 
Кстати правильней с точки зрения безопасности (выводить только файлы картинок) и изящней (imho) было бы
PHP:
    foreach(glob('../images/*.{jpg,gif,png}', GLOB_BRACE) as $file) {
        echo "<div><img src=\"$file\" class=\"projectSlides\" alt=\"\"/></div>";
    }

Посмотреть можно там же, файл script2.php
 
foreach(glob('../images/*.{jpg,gif,png}', GLOB_BRACE) as $file) {
echo "<div><img src=\"$file\" class=\"projectSlides\" alt=\"\"/></div>";
}
уважуха, все работает!
другой вопрос -- если папка со скриптом лежит еще "глубже", то как вывести?
например:
[корень сайта]/folder1/folder2/index.php
[корень сайта]/images/
 
Ну соответственно и количество ../ ставь сколько там надо
Можешь считать что "../" - это дословно "полняться на каталог выше"
Изначально скрипт в каталоге folder2. Один раз ../ - мы в folder1. Еще один раз - мы в [корень сайта]. И теперь спускаемся в images
То есть в приведенном тобой примере будет glob('../../images/
 
Ну соответственно и количество ../ ставь сколько там надо
Можешь считать что "../" - это дословно "полняться на каталог выше"
Изначально скрипт в каталоге folder2. Один раз ../ - мы в folder1. Еще один раз - мы в [корень сайта]. И теперь спускаемся в images
То есть в приведенном тобой примере будет glob('../../images/
а если местонахождение файла со скриптом точно неизвестно?
 
Ну если точно известно местонахождения картинок - то указать абсолютный путь (начинается со слэша, например '/var/Для просмотра ссылки Войди или Зарегистрируйся....'), а при выводе преобразовывать его к url, зная в каком каталоге корень сайта.
Но давай я предположу: у тебя твой скрипт инклюдиться, причем ты еще 100% не решил куда :) . Тогда решать в зависимости от задачи, сильно неконкретный вопрос. Могу только обратить внимание на следующие моменты.
1) Быть может в главном скрипте можно сделать константу что-то типа WWW_ROOT, чтобы относительно нее заинклюденные скрипты знали где другие данные
2) Быть может стоит обратить внимание на содержимое $_SERVER['SCRIPT_FILENAME'], $_SERVER['SCRIPT_NAME'], константу __FILE__, функции вычисления абсолютного пути из относительного и наоборот (basename(), realpath())
3) Быть может стоит посмотреть в $_SERVER['REQUEST_URI'] какой именно вызван скрипт, и относительно него плясать

Но "в общем" задача решается очень туго. То есть это получается надо скрипту сказать "найди где-то в файловой системе на сервере каталог с картинками, хз где, и преобразуй их в ссылки так, чтобы апач когда их запросят отдал именно эти картинки" :)
 
Назад
Сверху