[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Имена файлов из папки на сервере
Joliat
Доброго времени суток.
Опять интересный вопрос (возможно только для меняuser posted image).
Использую галерею на странице, а изображения находятся на сервере в папке. Каким образом можно по вытаскивать их имена, чтоб можно было вставить в массив образующий подобную структуру:
<img src="img/1.jpg" />
<img
src="img/2.jpg" />
<img
src="img/3.jpg" />
<img
src="img/4.jpg" />
<img
src="img/5.jpg" />


буду рад любым решениям или наведения меня на умную мысль!



Спустя 1 минута, 50 секунд (18.12.2011 - 22:21) Игорь_Vasinsky написал(а):
http://php.net/manual/ru/function.opendir.php

и - достаточно хранить имена с путями а тег img с атрибутами использовать в шаблоне как обёртку.

Спустя 5 минут, 41 секунда (18.12.2011 - 22:27) killer8080 написал(а):
foreach (glob("*.jpg") as $filename) {
echo '<img src="img/'.$filename.' />';
}

Спустя 4 минуты, 32 секунды (18.12.2011 - 22:31) Winston написал(а):
Примерно так
$files = scandir('./img/');
unset($files[0], $files[1]);
$files = array_map(create_function('$item', 'return "<img src=\'./img/".$item."\' />";'), $files);
echo '<pre>'.htmlspecialchars(print_r($files, 1)).'</pre>';




Спустя 52 секунды Winston написал(а):
killer8080
Если что, то glob можно в переменную всунуть, чтобы не дергать на каждой итерации.

Спустя 4 минуты, 50 секунд (18.12.2011 - 22:36) Игорь_Vasinsky написал(а):

Спустя 4 минуты, 12 секунд (18.12.2011 - 22:40) killer8080 написал(а):
Цитата (Winston @ 18.12.2011 - 21:31)
killer8080
Если что, то glob можно в переменную всунуть, чтобы не дергать на каждой итерации.

А кто её будет дергать? foreach получит массив, и пробежится по всем элементам.

Спустя 3 минуты, 41 секунда (18.12.2011 - 22:44) Winston написал(а):
Цитата (killer8080 @ 18.12.2011 - 21:40)
А кто её будет дергать? foreach получит массив, и пробежится по всем элементам

Хм... И на каждой итерации не будет опять массива дергать ?
То же самое говорят и о foreach(file('file.txt'), что лучше её запихнуть в переменную за пределами массива, чтобы каждый раз не дергалась.
А с glob() ситуация иная ? blink.gif

Спустя 3 минуты, 46 секунд (18.12.2011 - 22:48) killer8080 написал(а):
Цитата (Winston @ 18.12.2011 - 21:44)
То же самое говорят и о foreach(file('file.txt'), что лучше её запихнуть в переменную за пределами массива, чтобы каждый раз не дергалась.

Кто говорит? На php.net?

Спустя 47 секунд (18.12.2011 - 22:49) Winston написал(а):
Цитата (killer8080 @ 18.12.2011 - 21:48)
Кто говорит? На php.net?

На этом форуме беседовали об этом.

Спустя 44 секунды (18.12.2011 - 22:49) Joliat написал(а):
Пишу вот так:

            $opendir = opendir('foto');
while (false !== ($read = readdir($opendir))) {
if ($read != '.' && $read != '..') {
$name = split('.', $read);
echo $name[0];
echo "<img src= \"/foto/$read \" />";
}
}

closedir($opendir);

говорю сразу, не я придумал, а нашел в нете и подставил свои пути.
но echo говорит мне:
"; } } closedir($opendir); } ?>
что такое не пойму

Спустя 2 минуты, 47 секунд (18.12.2011 - 22:52) Winston написал(а):
Joliat
Посмотри на мой пример, или killer8080.

Спустя 2 минуты, 43 секунды (18.12.2011 - 22:55) Joliat написал(а):
делаю:
$files = scandir('./foto/');
unset($files[0], $files[1]);
$files = array_map(create_function('$item', 'return "<img src=\'./foto/".$item."\' />";'), $files);
echo '<pre>'.htmlspecialchars(print_r($files, 1)).'</pre>';

выводит:
";'), $files); echo '

'.htmlspecialchars(print_r($files, 1)).'

'; ?>


Может это быть связано, что сайт находится на .рф?

Спустя 55 секунд (18.12.2011 - 22:56) Winston написал(а):
А ты дескриптор <?php вначале поставил ?

Спустя 1 минута, 6 секунд (18.12.2011 - 22:57) Joliat написал(а):
foreach (glob("*.jpg") as $filename) {
echo '<img src="img/'.$filename.' />';
}

выдает:
'; } $files = scandir('./foto/'); unset($files[0], $files[1]); $files = array_map(create_function('$item', 'return "";'), $files); echo '

Спустя 1 минута, 38 секунд (18.12.2011 - 22:59) Joliat написал(а):
Цитата
А ты дескриптор <?php вначале поставил ?

ну конечно! Не держите меня за лося! я может много-го не знаю но не тупой валенок!
Сейчас код полностью выглядит так:
<?php
foreach (glob("*.jpg") as $filename) {
echo '<img src="img/'.$filename.' />';
}

$files = scandir('./foto/');
unset($files[0], $files[1]);
$files = array_map(create_function('$item', 'return "<img src=\'./foto/".$item."\' />";'), $files);
echo '<pre>'.htmlspecialchars(print_r($files, 1)).'</pre>';
?>

на экране все тоже!

Спустя 1 минута, 16 секунд (18.12.2011 - 23:00) Winston написал(а):
А файл точно с расширением PHP ?

Спустя 58 секунд (18.12.2011 - 23:01) Игорь_Vasinsky написал(а):
Свернутый текст
боже мой blink.gif вы не друзья? тут один не давно конструктор сайтов писал - онлайн сервис, не зная как создать файл.

Спустя 15 секунд (18.12.2011 - 23:01) killer8080 написал(а):
Winston
я тут провел эксперемнтик
$arr = range(1, 1000000);
$s = microtime(1);
foreach($arr as $v) echo ' ';
echo (microtime(1) - $s).' : '.memory_get_usage().' bytes';

выдаёт
0.186459064484 : 77268696 bytes

//$arr = range(1, 1000000);
$s = microtime(1);
foreach(range(1, 1000000) as $v) echo ' ';
echo (microtime(1) - $s).' : '.memory_get_usage().' bytes';

выдаёт
0.545925855637 : 1138528 bytes

второй вариант в 2 раза медленней, но разница в расходе памяти в 10-тки раз user posted image

Спустя 1 минута, 46 секунд (18.12.2011 - 23:03) Winston написал(а):
Цитата (killer8080 @ 18.12.2011 - 22:01)
но разница в расходе памяти в 10-тки раз

WTF ? blink.gif

Спустя 1 минута, 26 секунд (18.12.2011 - 23:04) killer8080 написал(а):
Цитата (Winston @ 18.12.2011 - 22:03)
WTF ?

сам в шоке rolleyes.gif



Спустя 2 минуты, 26 секунд killer8080 написал(а):
Winston
кажется догнал, во втором варианте по завершении цикла память сразу высвобождается, а в первом остаётся переменная. Но насчет скорости, ты пожалуй был прав. smile.gif

Спустя 5 минут, 4 секунды (18.12.2011 - 23:09) Joliat написал(а):
Цитата
боже мой blink.gif вы не друзья? тут один не давно конструктор сайтов писал - онлайн сервис, не зная как создать файл.

))) нет, я маньяк - одиночка!))

А файл точно с расширением PHP ?
Уже да!))) Файл не с нуля создавал, а взял с куском кода и не обратил внимание на разрешение!
Огромное спасибо за подсказку.
Сейчас буду проверять

Спустя 2 минуты, 23 секунды (18.12.2011 - 23:12) Игорь_Vasinsky написал(а):
ну значит юзать первую схему на после использования переменной - обнулять её.

Спустя 3 минуты, 4 секунды (18.12.2011 - 23:15) Joliat написал(а):
           $opendir = opendir('foto');
while (false !== ($read = readdir($opendir))) {
if ($read != '.' && $read != '..') {
$name = split('.', $read);
echo $name[0];
echo "<img src= \"/foto/$read \" />";
}
}

closedir($opendir);

Заработало! Всем огромное спасибо!

Спустя 4 минуты, 44 секунды (18.12.2011 - 23:20) Игорь_Vasinsky написал(а):
по теме

а можеть писать в БД загружаемые картинки вместо сканирования

по логике быстрее если отдельная табла с парой столюцов?


_____________
О-о-о-о-о-очень начинающий...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.