Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Владимир_С Гость
|
Добавлено: Пт Дек 17 2004 11:33 Заголовок сообщения: Вывод картинок из папки на PHP... подскажите плиз |
|
|
Здравствуйте. Подскажите как мне сделать вывод картинок из папки на PHP. Есть папка img, в ней хранятся картинки... как мне вывести все картинки из этой папки в браузер?
Заранее спасибо. |
|
Вернуться к началу |
|
|
kurt
Зарегистрирован: 16.02.2004 Сообщения: 20 Откуда: Гомель, Беларусь
|
Добавлено: Пт Дек 17 2004 12:32 Заголовок сообщения: |
|
|
Код: | <?php
if ($handle = opendir('/path/to/files')) {
echo "Directory handle: $handle\n";
echo "Files:\n";
/* Это корректный способ цикла по директории. */
while (false !== ($file = readdir($handle))) {
echo "$file\n";
}
/* Это НЕПРАВИЛЬНЫЙ способ цикла по директории. */
while ($file = readdir($handle)) {
echo "$file\n";
}
closedir($handle);
}
?>
|
|
|
Вернуться к началу |
|
|
Владимир_С Гость
|
Добавлено: Пт Дек 17 2004 15:19 Заголовок сообщения: Но это не работает! ((( |
|
|
Это не работает. Выводит только квадратики с крестиками и все. |
|
Вернуться к началу |
|
|
kurt
Зарегистрирован: 16.02.2004 Сообщения: 20 Откуда: Гомель, Беларусь
|
Добавлено: Пт Дек 17 2004 18:49 Заголовок сообщения: |
|
|
Код: | <?
if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$ff.="$file"."|";
}
}
closedir($handle);
}
$f=explode ("|",$ff);
$fa=array_pop($f);
$c=count($f);
for ($i=0;$i<$c;$i++)
{
$f_r=explode(".",$f[$i]);
if (($f_r[1]=="jpg") or ($f_r[1]=="gif"))
{
echo "<br><img src=\"$f[$i]\">";
}
}
?>
|
Размести файл с этим кодом в папке с картинками. |
|
Вернуться к началу |
|
|
Владимир С. Гость
|
Добавлено: Пн Дек 20 2004 10:33 Заголовок сообщения: опять не работает... |
|
|
Если здесь "if ($handle = opendir('.'))" виесто корневой папки написать какую то другую, например /images/ то скрипт все равно ничего не выводит. Подскажите плиз почему... |
|
Вернуться к началу |
|
|
Croak
Зарегистрирован: 26.11.2004 Сообщения: 8
|
Добавлено: Пн Дек 20 2004 17:39 Заголовок сообщения: |
|
|
if ($handle = opendir('/path/to/files')) {
/* Это корректный способ цикла по директории. */
while (false !== ($file = readdir($handle))) {
if ($file!="."&&$file!="..") echo "<IMG SRC='"."http/path/to/folder"."/".$file."'>";
}
closedir($handle);
} |
|
Вернуться к началу |
|
|
Владимир С. Гость
|
Добавлено: Ср Дек 22 2004 18:54 Заголовок сообщения: |
|
|
Интересно а что вставлять вместо /path/to/files ? Если я ставлю вот такие путь ./pics - ничего не работает. А вот сюда /path/to/folder писать путь к папке? Извините, но я никак не сооброжу.
У меня папка генериться автоматом и мне надо что б здесь /path/to/files имя папки писалось автоматом - например имя папки находится в переменной $folder , то мне нужно просто вставить $folder или /path/to/$folder. Вот как это сделать? |
|
Вернуться к началу |
|
|
Croak
Зарегистрирован: 26.11.2004 Сообщения: 8
|
Добавлено: Чт Дек 23 2004 17:52 Заголовок сообщения: |
|
|
path/to/files/ - путь к папке, в которой лежат файлы изображений
что вписать - ??? что-нибудь типа Код: | $_SERVER['DOCUMENT_ROOT']."/pics" | - зависит от того, где лежит папка...
http/path/to/folder - путь к той же папке, но по протоколу http
что вписать - что-нибудь типа Код: | "http://".$_SERVER['SERVER_NAME']."/pics" |
|
|
Вернуться к началу |
|
|
Наибольший
Зарегистрирован: 28.12.2004 Сообщения: 4
|
Добавлено: Ср Дек 29 2004 01:40 Заголовок сообщения: . |
|
|
kurt писал(а): | Код: |
/* Это корректный способ цикла по директории. */
while (false !== ($file = readdir($handle))) {
echo "$file\n";
}
/* Это НЕПРАВИЛЬНЫЙ способ цикла по директории. */
while ($file = readdir($handle)) {
echo "$file\n";
}
|
|
Почему второй способ некорректен?
В принципе понятно, что первый более "правильный", но для PHP и второй более чем реальный, или я не врубаюсь?
readdir() возвращает имя следующего элемента в каталоге в строковом типе, или FALSE при достижении конца списка. Первый способ использует жесткую проверку без приведения типов. Теоретически такая проверка быстрее, но на практике это сценарий не ускорит. При приведении типов во втором случае цикл останавливается в случае получения:
1) FALSE
2) NULL
3) '' (EMPTY STRING)
4) 0 (INT)
5) 0.00 (FLOAT)
Первые два варианта отпадают сразу, это очевидно, 3) - имя файла или каталога не может быть пустой строкой, а 4) и 5) при приведении из строкового типа в булевый примут значение TRUE. (Естественно, при приведении из числового типа в булевый они бы приняли FALSE, но это не наш случай)
2Владимир_С:
Код: |
$folder=$_SERVER['DOCUMENT_ROOT'].'/folder/';
.....
.....
$imgsFolder=$folder.'imgs/';
// echo $imgsFolder;
// for example: /var/www/mysite/www/folder/imgs/
$imgs='';
if(@$handler=opendir($imgsFolder)){
while($item=readdir($handler)){
$fullName=$imgsFolder.$item;
if(is_file($fullName) /* and проверка_типа_файла_preg_match() */){
$imgs.="<img src=/".str_replace($_SERVER['DOCUMENT_ROOT'], '', $fullName).">\n";
}
}
closedir($handler);
echo $imgs;
}else echo "Cat`t open $imgsFolder for read";
|
"http://$_SERVER['SERVER_NAME']/" в src писать совершенно не обязательно. |
|
Вернуться к началу |
|
|
|