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
Форумы портала PHP.SU :: Версия для печати :: Если папка с изображением пуста, то выводим " нет фото"
Форумы портала PHP.SU » » Вопросы новичков » Если папка с изображением пуста, то выводим " нет фото"

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

1. zapatronen - 24 Августа, 2017 - 15:20:59 - перейти к сообщению
Приветствую!

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


У меня предчувствие, что эти точки определяются как не пустой каталог а как какие то файлы ?
4. Строитель - 24 Августа, 2017 - 15:52:07 - перейти к сообщению
zapatronen, я думаю, что у вас не много не правильно организована логика скрипта в теле функции. Давайте уточним, что вам необходимо? Прочитать какую-то директорию, и вывести список картинок в виде текста (в виде названий файлов)?
5. zapatronen - 24 Августа, 2017 - 15:54:01 - перейти к сообщению
Строитель пишет:
zapatronen, я думаю, что у вас не много не правильно организована логика скрипта в теле функции. Давайте уточним, что вам необходимо? Прочитать какую-то директорию, и вывести список картинок в виде текста (в виде названий файлов)?


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

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


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

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

(Добавление)
zapatronen, вообще было бы правильнее в пользовательской функции возвращать или массив с названиями файлов (в случае успешного поиска), или false (в случае отсутствия совпадений). И тогда функция примет такой вид:
Спойлер (Отобразить)
7. zapatronen - 24 Августа, 2017 - 19:41:24 - перейти к сообщению
Строитель пишет:
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. }

 

Powered by ExBB FM 1.0 RC1