Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Если папка с изображением пуста, то выводим " нет фото"

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
zapatronen
Отправлено: 24 Августа, 2017 - 15:20:59
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Приветствую!

Картики выводятся, но не могу понять почему если картинок не найдено, то есть получаю NULL, то заданная ссылка на картинку, которая символизирует отсутствие фото не выводится

PHP:
скопировать код в буфер обмена
  1. function catfoto($dir){
  2.              $filename="image/$dir";
  3.              $foto= scandir("image/$dir/");
  4.              if($foto!=NULL){
  5.                 foreach ( $foto as $img){
  6.                    if($img== "." or $img == "..")
  7.                             continue;
  8.                               $imgdir="/$filename/$img";                        
  9.              }
  10.              }else{
  11.                     $imgdir="<img src='/image/NOFOTO.png'>"
  12. }
  13. echo '<IMG  src="'.$imgdir.'">';
  14. }

(Отредактировано автором: 24 Августа, 2017 - 15:21:28)

 
 Top
Строитель Модератор
Отправлено: 24 Августа, 2017 - 15:35:36
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




zapatronen, на первый взгляд -- у вас в этой строке ошибка:
PHP:
скопировать код в буфер обмена
  1. $imgdir = "<img src='/image/NOFOTO.png'>" // Нет точки с запятой
И ещё сравнение в этой строке с NULL: а в документации говорится, что scandir() возвращает типы array или false.
(Добавление)
Судя по наличию синтаксических ошибок, можно сделать вывод, что вы пишете код в простом блокноте. Если это так, то установите любую интегрированную среду разработки (IDE), и подобные ошибки вы будете выявлять самостоятельно, в процессе написания кода.
 
 Top
zapatronen
Отправлено: 24 Августа, 2017 - 15:47:18
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Строитель пишет:
zapatronen, на первый взгляд -- у вас в этой строке ошибка:
PHP:
скопировать код в буфер обмена
  1. $imgdir = "<img src='/image/NOFOTO.png'>" // Нет точки с запятой
И ещё сравнение в этой строке с NULL:
а в документации говорится, что scandir() возвращает типы array или false.
(Добавление)
Судя по наличию синтаксических ошибок, можно сделать вывод, что вы пишете код в простом блокноте. Если это так, то установите любую интегрированную среду разработки (IDE), и подобные ошибки вы будете выявлять самостоятельно, в процессе написания кода.


точку с запятой в процессе оформления поста случайно стер, а NULL меня ли на false, все равно одно и то же, там где у товара нет картини приходит пустое место, где картинки есть все нормально выводится

var_dump показывает для папок без картинок:

array(2){[0]=>string"." [1]=>string(2) ".."}

А с фото:
array(2){[0]=>string"." [1]=>string(2) ".." [2] => string(10) "to-220.jpg"}


У меня предчувствие, что эти точки определяются как не пустой каталог а как какие то файлы ?
 
 Top
Строитель Модератор
Отправлено: 24 Августа, 2017 - 15:52:07
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




zapatronen, я думаю, что у вас не много не правильно организована логика скрипта в теле функции. Давайте уточним, что вам необходимо? Прочитать какую-то директорию, и вывести список картинок в виде текста (в виде названий файлов)?
 
 Top
zapatronen
Отправлено: 24 Августа, 2017 - 15:54:01
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Строитель пишет:
zapatronen, я думаю, что у вас не много не правильно организована логика скрипта в теле функции. Давайте уточним, что вам необходимо? Прочитать какую-то директорию, и вывести список картинок в виде текста (в виде названий файлов)?


прочитать директорию,
если там есть изображение, то выводить одно любое

если директория пуста то выводить картинку, которая говорит "что фото товара нету"

(Отредактировано автором: 24 Августа, 2017 - 15:54:44)

 
 Top
Строитель Модератор
Отправлено: 24 Августа, 2017 - 16:15:55
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




zapatronen пишет:
Строитель пишет:
zapatronen, я думаю, что у вас не много не правильно организована логика скрипта в теле функции. Давайте уточним, что вам необходимо? Прочитать какую-то директорию, и вывести список картинок в виде текста (в виде названий файлов)?


прочитать директорию,
если там есть изображение, то выводить одно любое

если директория пуста то выводить картинку, которая говорит "что фото товара нету"
Посмотрите на результат этого примера (расширения искомых файлов, при необходимости, подправьте на свои)
Спойлер (Отобразить)

(Добавление)
zapatronen, вообще было бы правильнее в пользовательской функции возвращать или массив с названиями файлов (в случае успешного поиска), или false (в случае отсутствия совпадений). И тогда функция примет такой вид:
Спойлер (Отобразить)
 
 Top
zapatronen
Отправлено: 24 Августа, 2017 - 19:41:24
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Строитель пишет:
zapatronen пишет:
Строитель пишет:
zapatronen, я думаю, что у вас не много не правильно организована логика скрипта в теле функции. Давайте уточним, что вам необходимо? Прочитать какую-то директорию, и вывести список картинок в виде текста (в виде названий файлов)?


прочитать директорию,
если там есть изображение, то выводить одно любое

если директория пуста то выводить картинку, которая говорит "что фото товара нету"
Посмотрите на результат этого примера (расширения искомых файлов, при необходимости, подправьте на свои)
Спойлер (Отобразить)

(Добавление)
zapatronen, вообще было бы правильнее в пользовательской функции возвращать или массив с названиями файлов (в случае успешного поиска), или false (в случае отсутствия совпадений). И тогда функция примет такой вид:
Спойлер (Отобразить)




Спасибо воспользовался некоторыми подсказками в коде и сделал так все получилось:

PHP:
скопировать код в буфер обмена
  1.              $filename="image/$dir";
  2.              $foto= scandir("$filename");
  3.              $foto = preg_grep("/\.(?:png|gif|jpe?g)$/i", $foto);
  4.              print_r($foto);
  5.              if(!empty($foto)){
  6.                 foreach ( $foto as $img){
  7.                     $imgdir="/$filename/$img";                        
  8.              }
  9.              }elseif(empty($foto)){
  10.                     $imgdir="/image/now_uss_eshop_cover_200x200.png";
  11. }
  12. echo '<IMG  src="'.$imgdir.'">';
  13. }
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB