Вывод всех картинок из папки на PHP
Если Вы делали сайт-визитку, то перед Вами могла встать задача по выводу какого-нибудь портфолио, каких-то работ, другими словами, изображений. Предположим, Admin-панели у сайта нет, а вот новые работы заказчик должен добавлять максимально легко, не залезая в исходный код. Вот в таких случаях Вам очень поможет данная статья, в которой мы реализуем вывод всех картинок из папки на PHP.
Привожу сразу весь PHP-код:
<?php
$dir = 'images/'; // Папка с изображениями
$cols = 3; // Количество столбцов в будущей таблице с картинками
$files = scandir($dir); // Берём всё содержимое директории
echo "<table>"; // Начинаем таблицу
$k = 0; // Вспомогательный счётчик для перехода на новые строки
for ($i = 0; $i < count($files); $i++) { // Перебираем все файлы
if (($files[$i] != ".") && ($files[$i] != "..")) { // Текущий каталог и родительский пропускаем
if ($k % $cols == 0) echo "<tr>"; // Добавляем новую строку
echo "<td>"; // Начинаем столбец
$path = $dir.$files[$i]; // Получаем путь к картинке
echo "<a href='$path'>"; // Делаем ссылку на картинку
echo "<img src='$path' alt='' width='100' />"; // Вывод превью картинки
echo "</a>"; // Закрываем ссылку
echo "</td>"; // Закрываем столбец
/* Закрываем строку, если необходимое количество было выведено, либо данная итерация последняя */
if ((($k + 1) % $cols == 0) || (($i + 1) == count($files))) echo "</tr>";
$k++; // Увеличиваем вспомогательный счётчик
}
}
echo "</table>"; // Закрываем таблицу
?>
Разумеется, здесь идёт смесь представления и реализации, что, конечно, нехорошо, но данный скрипт Вы должны будете подстроить под свой движок. Возможно, у Вас и таблиц не будет. В остальном, думаю, проблем с понимаем, как вывести на сайт изображения из папки на PHP, возникнуть не должно.
Теперь для того, чтобы добавить очередное изображение на сайт, достаточно просто скопировать необходимую картинку в папку "images". Вот таким простым способом реализуется задача, которая, на первый взгляд, неразрешима без вмешательства в исходный код, базу данных, либо создания Admin-панели.
-
- Михаил Русаков
Комментарии (21):
if (($files[$i] != ".") && ($files[$i] != ".."))
Ответить
array_shift($files); array_shift($files);
Ответить
<?php $dir = 'images/'; // Папка с изображениями $cols = 3; // Количество столбцов в будущей таблице с картинками $files = scandir($dir); // Берём всё содержимое директории echo "<table>"; // Начинаем таблицу $k = 0; // Вспомогательный счётчик для перехода на новые строки for ($i = 0; $i < count($files); $i++) { // Перебираем все файлы if (($files[$i] != ".") && ($files[$i] != "..")) { // Текущий каталог и родительский пропускаем if ($k % $cols == 0) echo "<tr>"; // Добавляем новую строку echo "<td>"; // Начинаем столбец $path = $dir.$files[$i]; // Получаем путь к картинке echo "<a href='$path'>"; // Делаем ссылку на картинку echo "<img src='$path' alt='' width='100' />"; // Вывод превью картинки echo "</a>"; // Закрываем ссылку echo "</td>"; // Закрываем столбец /* Закрываем строку, если необходимое количество было выведено, либо данная итерация последняя */ if ((($k + 1) % $cols == 0) || (($i + 1) == count($files))) echo "</tr>"; $k++; // Увеличиваем вспомогательный счётчик } } echo "</table>"; // Закрываем таблицу ?> Ребят отлично работает! Подскажите как выводить название картинки без разширения??? то есть без .jpg
Ответить
<?php $dir = 'antiques/Accessories/Clothing/'; // Папка с изображениями $ar=array(); $name = scandir($dir); $parts = pathinfo($img); $cols = 3; // Количество столбцов в будущей таблице с картинками $files = scandir($dir); // Берём всё содержимое директории echo "<table>"; // Начинаем таблицу $k = 0; // Вспомогательный счётчик для перехода на новые строки for ($i = 0; $i < count($files); $i++) { // Перебираем все файлы if (($files[$i] != ".") && ($files[$i] != "..")) { // Текущий каталог и родительский пропускаем if ($k % $cols == 0) echo "<tr>"; // Добавляем новую строку echo "<td width='220' align='center'>"; // Начинаем столбец $path = $dir.$files[$i]; // Получаем путь к картинке echo "<a href='$path'>"; // Делаем ссылку на картинку echo "<img src='$path' width='200' height='200' />"; // Вывод превью картинки echo "$name[$i]"; echo "</a>"; // Закрываем ссылку echo "</td>"; // Закрываем столбец /* Закрываем строку, если необходимое количество было выведено, либо данная итерация последняя */ if ((($k + 1) % $cols == 0) || (($i + 1) == count($files))) echo "</tr>"; $k++; // Увеличиваем вспомогательный счётчик } } echo "</table>"; // Закрываем таблицу ?>
Ответить
сделал вывод названия но не могу отрезать расширения у выводимых файлов! Есть варианты?
Ответить
Функцию basename() используйте.
Ответить
я не особо силен, знаю как отрезать у одно файла, но не пойму как у всех в каталоге, если можно пример?
Ответить
В цикле перебирайте все изображения в директории и у каждого в цикле обрезайте расширение.
Ответить
не силен! без примера не пойму! )
Ответить
http://myrusakov.ru/php-how-study.html
Ответить
Павел, как Вы решили проблему? не поделитесь? Столкнулась с аналогичной...
Ответить
Михаил, подскажите что нужно добавить в Ваш код, что бы помимо количества столбцов на странице было так же ограничение на количество изображений. Иными словами, переход между страницами и т.п. с ограничением в 30 выводимых картинок, т.к. при загрузке 1000 изображений крайне неудобно получается.
Ответить
Сделать ограничение в цикле на 30 картинок и всё. А первая выводимая картинка в зависимости от номера страницы.
Ответить
Здравствуйте, Михаил, У Вас очень полезный сайт для разработчиков. За Ваш труд спасибо. Михаил, просьба к Вам. Дополните, пожалуйста, эту статью еще двумя вариантами Вашего скрипта. Вариант второй: чтобы выводились изображения по N шт. (например по 50 штук) на странице с постраничной навигацией. Вариант третий: выборочный вывод картинок по имени файла, с постраничной навигацией. Эти варианты будут очень полезными Вашим читателем. Спасибо!
Ответить
Михаил, мы нашли решение вывода всех картинок из нужной директории в документ с постраничной навигацией. Но теперь появилась другая проблема. Как вывести картинки по-порядку. Файлы названы m1.jpg, m2.jpg, m3.jpg и т.д. до m100.jpg Но выводятся картинки не по-порядку, как это исправить?
Ответить
Здравствуйте, подскажите пожалуйста как ограничение количества прописать?
Ответить
Здраствуйте, может подскажете, не могу подключить Ваш скрипт в страничку сайта. https://yadi.sk/d/21ffz6MjenF37 файл foto.php Есть такая цмс Ласто ,этот файл от неё. Автор цмс сказал,что вставляется через переменную echo Мне надо,чтобы Ваш скрипт вставился в страницу, пока получается ,что он вставляется выше страницы. За ранее спасибо за помощь.
Ответить
Здравствуйте. Скажите пожалуйста. Закачиваю с помощью вашего кода картинки с русскими названиями из папки виндус. А код показывает кракозябры. Понятно, что вопрос встал в кодировки. Код на UTF-8 , а картинки в Win1251. Скажите не знаете как научить код понимать обе кодировки. (переименовать картинки в английский не приемлемо.)
Ответить
Нашел команду http://php.net/manual/ru/function.iconv.php все типтоп.
Ответить
Михаил а вы могли бы выпускать курсы что бы они работали в Ubuntu ?
Ответить
Михаил Здравия! Скрипт работает супер. Очень хороший. А как бы можно сделать чтобы к каждой картинке из сведений в базе данных могли быть реализованы подписи? Ну возможно просто использование сравнений названий и сопоставления названий по названиям и id в базе данных. Было бы здорово узнать подобное. Так как такой скрипт будет уже универсальным. Вообще ты меня спас этим скриптом. С Благодарностью Андрей. Жду дополнения к статье или новую статью о котором писал выше. Необходимо как воздух просто
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.