Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вывод картинки из папки, нид сорс код 
V
    Опции темы
chaosmage
Дата 2.3.2009, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



Всем доброго времени суток!

Задача - вывести из папки /var/www/images все картинки jpg, gif сплошным потоком без форматирования
на сервере установлен пхп

Бродил по пучинам инета , нашел вот :
Код

<?
$imgdir="imgtest";  
$d=opendir($imgdir);
$photos=array();
while(($e=readdir($d))!==false){
if(!ereg("^(.*)\\.(gif|jpg)$",$e,$p)) continue;
$path="$imgdir/$e"; 
$sz=getimagesize($path);
$tm=filemtime($path);

$photos[$tm]=array(
'time'=>filemtime($path),
'name'=>$e,
'url'=>$path,
'w'=>$sz[0],
'h'=>$sz[1],
'wh'=>$sz[3]
);
}
krsort($photos);
?>

<body>
<table width="70%" border="1">
<tr>
<td>
<?foreach($photos as $n=>$photos) {?>
<img src=<?=$photos['url']?>
<?=$photos['wh']?>
alt="Дата <?=date("d.m.Y H:i:s",$photos['time'])?>">
<?}?>
</td>
</tr>
</table>


но т.к. в пхп особо не силен , не понимаю как его модифицировать под мои нужды
мне ни даты , ни размеры , ни форматирование не нужно ....

заранее спасибо!
PM MAIL   Вверх
bars80080
Дата 2.3.2009, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 2
Всего: 315



оставь в цикле только 

Код

<?foreach($photos as $n=>$photos) {?>
<img src="<?=$photos['url']?>" />
<?}?>

и убери остальные тэги
PM MAIL WWW   Вверх
chaosmage
Дата 2.3.2009, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



создал файл test.php , в нём оставил :

Код

<?
$imgdir="images/";  
$d=opendir($imgdir);
$photos=array();
while(($e=readdir($d))!==false){
if(!ereg("^(.*)\\.(gif|jpg)$",$e,$p)) continue;
$path="$imgdir/$e"; 
$sz=getimagesize($path);
$tm=filemtime($path);

$photos[$tm]=array(
'time'=>filemtime($path),
'name'=>$e,
'url'=>$path,
'w'=>$sz[0],
'h'=>$sz[1],
'wh'=>$sz[3]
);
}
krsort($photos);
?>

<?foreach($photos as $n=>$photos) {?>
<img src=<?=$photos['url']?>
<?}?>


в результате белый экран и ничего не выводится.
Можно как то оттестить правильность работы функций ? м.б. в пхп не хватает библиотек каких нить
PM MAIL   Вверх
bars80080
Дата 2.3.2009, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 2
Всего: 315



оттестить можно. во-первых, в начало скрипта вставляешь error_reporting(E_ALL);
во-вторых, используя var_dump($peremennaya); на разных этапах смотришь, что находится в переменных. видно, где-то пропадают значения
PM MAIL WWW   Вверх
chaosmage
Дата 3.3.2009, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



при 
Код

$imgdir="images/4";


вот такая ошибка:
Warning: opendir(images/4) [function.opendir]: failed to open dir: No such file or directory in /var/www/images/4/test.php on line 5

если поменять на 
Код

$imgdir="/var/www/images/4";

то на экране появляется картинка без содержания с адресом 
http://www.мойсайт.ru/var/www/images/4/image040.jpg%3Cimg 
PM MAIL   Вверх
bars80080
Дата 3.3.2009, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 2
Всего: 315



это потому что желательно выполнять всё в точности, если советуют

не <img src=<?=$photos['url']?>
а <img src="<?=$photos['url']?>" />
PM MAIL WWW   Вверх
chaosmage
Дата 3.3.2009, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



сорри, мой косяк. Буду внимателен.

ситуация изменилась:
теперь отображается столько картинок сколько их в папке, но они все равно без содержания.
при 
Код

$imgdir="/var/www/images/4";

адрес - http://www.мойсайт.ru/var/www/images/4/image040.jpg без %3Cimg  

при 
Код

$imgdir="images/4";

так же Warning: opendir(images/4) [function.opendir]: failed to open dir: No such file or directory in /var/www/images/4/test.php on line 5
PM MAIL   Вверх
bars80080
Дата 3.3.2009, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 2
Всего: 315



отдели путь на сервере к файлу от url:
Код

$imgdir="/var/www/images/4";  
$imgurl="images/4";  
$d=opendir($imgdir);
$photos=array();
while(($e=readdir($d))!==false){
if(!ereg("^(.*)\\.(gif|jpg)$",$e,$p)) continue;
$path="$imgdir/$e"; 
$sz=getimagesize($path);
$tm=filemtime($path);

$photos[$tm]=array(
'time'=>filemtime($path),
'name'=>$e,
'url'=>"$imgurl/$e",
'w'=>$sz[0],
'h'=>$sz[1],
'wh'=>$sz[3]
);
}
krsort($photos);
?>

<?foreach($photos as $n=>$photos) {?>
<img src="<?=$photos['url']?>" />
<?}?>

PM MAIL WWW   Вверх
chaosmage
Дата 3.3.2009, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



ага, понял.

вставил код, адрес стал  http://www.мойсайт.ru/images/4/images/4/image040.jpg
т.е. 2 раза повторяется блок /images/4.

в 14 строчке поменял 
Код

'url'=>"$imgurl/$e",


на 
Код

'url'=>"$e",


всё наконец то работает !!!  smile 


bars80080, респект , уважуха. Без вас бы никогда не заработало ! Спасибо!

Добавлено через 4 минуты и 57 секунд
P.S. А нельзя не указывать папку /images/4 , а сделать так чтобы вывод картинок был из той папки где лежит php файл ?
PM MAIL   Вверх
bars80080
Дата 4.3.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 2
Всего: 315



Цитата

у меня лежали картинки в папке /4/, я скопировал файл index.php со скриптом :

Код

<?
error_reporting(E_ALL);
$imgdir="/var/www/images/5";  
$imgurl="images/5";  
$d=opendir($imgdir);
$photos=array();
while(($e=readdir($d))!==false){
if(!ereg("^(.*)\\.(gif|jpg)$",$e,$p)) continue;
$path="$imgdir/$e"; 
$sz=getimagesize($path);
$tm=filemtime($path);
$photos[$tm]=array(
'time'=>filemtime($path),
'name'=>$e,
'url'=>"$e",
'w'=>$sz[0],
'h'=>$sz[1],
'wh'=>$sz[3]
);
}
krsort($photos);
?>
<?foreach($photos as $n=>$photos) {?>
<img src="<?=$photos['url']?>"/>
<? var_dump($photos['url']); ?>
<?}
?>

в другую папку /5/ и изменил пути.
При заходе на эту страницу отображается только 1 картинка - image040.jpg и всё, хотя в папке /5/ их около сотни.
При заходе на страницу в папке /4/ - все ок. Отображаются все картинки

что это может быть?


прежде всего, когда у нас появляются почти идентичный куски кода, пусть и в разных файлах/директориях, следует задуматься над оптимизацией, так чтобы этот код существовал в единственном экземпляре

по сабжу

а разве скрипт не лежал изначально в над каталогом image? 
если же он там внутри (/5/), то пути $imgdir="/var/www/images/5";  $imgurl="images/5"; по определению некорректные. разве для /4/ это прокатило?

PM MAIL WWW   Вверх
chaosmage
Дата 4.3.2009, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



для /4/ работает ...

задумка была следующая:
- есть директория images, в ней папки от /1/ до /X/  
- в папках картинки image001.jpg ... imageXXX.jpg.
- я создаю внешнюю страницу, на которой указываю ссылки на эти галереи по мере их добавления.
т.е. в итоге я добавляю новую папку с картинками, копирую в нее index.php , захожу на внешнюю страницу и добавляю ссылку http://сайт/images/X/ 

с оптимизацией ...  я вяло представляю как это можно сделать 
PM MAIL   Вверх
bars80080
Дата 4.3.2009, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 2
Всего: 315



Цитата(chaosmage @  4.3.2009,  13:46 Найти цитируемый пост)
вяло представляю как это можно сделать  

ну, допустим внешняя страница с ссылками http://сайт/index.php
в нём мы производим учёт каталогов: opendir, readdir т.е. тоже самое, но для пути image/
далее строим ссылки (как в примере картинки, только надо пихать не в img-src, а в a-href). в итоге автоматом учитываются все новые каталоги

далее, ссылки надо строить не прямые на каталог, а на скрипт с get-параметрами (скажем соседний 
http://сайт/index2.php?cat=<?=$photos['имя_каталога']?>)

затем в index2.php используем скрипт, который мы тут мурыжим (выше), но в путь и урл подставляем пришедшее значение:

Код

...

if(!empty($_GET['cat'])) {
    $dir = $_GET['cat'];
    // если каталоги только в виде чисел, то можно даже $dir = intval($_GET['cat']);
}
if(empty($dir)) { echo 'нет таких каталогов'; exit; }
$imgdir="/var/www/images/".$dir;  
$imgurl="images/".$dir; 

... 


в итоге при добавлении нового каталога и новых картинок вообще больше ничего делать не придётся




касательно проблемы с пятым каталогом трудно сказать. надо смотреть в чём отличие с четвёртым. что-то где-то упустил
PM MAIL WWW   Вверх
chaosmage
Дата 6.3.2009, 15:38 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



Учел ваши советы, получился такой код.

Код

<?
error_reporting(E_ALL);
if(!empty($_GET['cat'])) {
    $dir = $_GET['cat'];
    // если каталоги только в виде чисел, то можно даже $dir = intval($_GET['cat']);
}
if(empty($dir)) { echo 'нет таких каталогов'; exit; }
$imgdir="/var/www/images/".$dir;  
$imgurl="images/".$dir;
$d=opendir($imgdir);
$photos=array();
while(($e=readdir($d))!==false){
if(!ereg("^(.*)\\.(gif|jpg)$",$e,$p)) continue;
$path="$imgdir/$e"; 
$sz=getimagesize($path);
$tm=filemtime($path);
$photos[$tm]=array(
'time'=>filemtime($path),
'name'=>$e,
'url'=>"$e",
'w'=>$sz[0],
'h'=>$sz[1],
'wh'=>$sz[3]
);
}
krsort($photos);
?>
<?foreach($photos as $n=>$photos) {?>
<img src="<?=$dir."/".$photos['url']?>"/>
<?}


?>


в браузере ввожу вот так:
http://сайт/images/index.php?cat=4

в папке images 10 директорий "1"..."10" , выводит все картинки только "4"-ая. Я в шоке ...
остальные 9 выводят только image040.jpg

П.С. а что делает функция krsort ?

PM MAIL   Вверх
bars80080
Дата 6.3.2009, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 2
Всего: 315



http://www.php.ru/manual/function.krsort.html
сортировка массива по ключам в обратном порядке

я так понимаю, тебе не нужная всякая лишняя информация

попробуй этот код:

Код

<?php
error_reporting(E_ALL);
if(!empty($_GET['cat'])) {
    $dir = $_GET['cat'];
}
if(empty($dir)) { echo 'íåò òàêèõ êàòàëîãîâ'; exit; }
$imgdir = '/var/www/images/'.$dir;  
$imgurl = 'images/'.$dir;
$d = opendir($imgdir);
$photos = array(); $i = 0;
while($e = readdir($d)) {
    if($f == '.' or $f == '..') continue;
    $path = $imgdir.'/'.$e;
    $pathInfo = pathinfo($path);
    if(!in_array($pathInfo['extension'], array('jpg','gif','png')) continue;
    $photos[$i] = $imgurl.'/'.$e;
    $i++;
}
sort($photos);
for($i = 0; isset($photos[$i]); $i++) {
    echo '<img src="'.$photos[$i].'" />'."\r\n";
}

?>

PM MAIL WWW   Вверх
chaosmage
Дата 6.3.2009, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



Цитата(bars80080 @  6.3.2009,  16:01 Найти цитируемый пост)
if(!in_array($pathInfo['extension'], array('jpg','gif','png')) continue;


он умирает на 15 строчке.
без нее пытается в массив закинуть все все все
и ругается на 16-ую 
Код

$photos[$i] = $imgurl.'/'.$e;


ковыряюсь, чет не вылечить

ошибка : "Notice: Undefined offset: Х in /var/www/images/index.php on line ХХ"



Это сообщение отредактировал(а) chaosmage - 6.3.2009, 17:39
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Графика | Следующая тема »


 




[ Время генерации скрипта: 0.1155 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.