Показать сообщение отдельно
  #17 (permalink)  
Старый 04.12.2015, 14:21
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Sylar V
У товаров есть картинки:
А это тогда что за издевательство?

if ( function_exists('imagecreate') ) {
header ("Content-type: image/png");
$im = @imagecreate (100, 100)
or die ("Cannot initialize new GD image stream");
$background_color = imagecolorallocate ($im, 255, 255, 255);
$text_color = imagecolorallocate ($im, 0,0,0);
imagestring ($im, 2, 5, 5, "IMAGE ERROR", $text_color);


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

А далее, чтобы не нагружать сервер, распределяют изображения товара или по их категориям, или по категории с вложенными каталогами изображений каждого товара. Именами таких папок могут служить ID категорий и товаров. То есть при выводе товаров на страницу запутаться с путями практически не возможно. У вас же судя по пути все изображения свалены в кучу.

А если же по уму, то при выводе товаров функцией glob() получаем массив всех имен текущего товара (если имена прописаны в базе, то и ворошить каталоги не нужно), и помещаются в атрибут элемента, который на клиенте и будет активировать их отображение. ID товара известен, по крайней мере без него никак на клиенте, остается в этот массив, или дополнительный атрибут поместить ID категории, если изображения разложены на сервере по уму.

<element data-img="<?=json_encode($ims)"?>> - где $ims, массив имен изображений товара. На клиенте, JQ вернет это массив методом $.data('img'), запускайте генератор случайного от 0 до длина массива -1, формируйте тег <img> на странице (его тоже можно поверх всех показать и без слоев, можно и в слое, как фон совсем не нужно), браузер отобразит.

Примечание, на будущее - random.php?rand=0.7158929682336748, нужно только в том случае, если, например, получаем изображение обращением к индексному файлу, в котором операция его выдачи скриптом находится в самом начале, и ключ запроса ее условие. Если же это отдельный файл, более ничем не занимающийся, то достаточно было бы и /images/mask/random.php?0.7158929682336748

PS. "Cannot initialize new GD image stream" - вы хоть сами понимаете, что это означает? Зачем клиенту это мракобесие? Ну уж если выводить, то членоразделное, они же не программисты, им это GD как диковинное животное, которого они не видели, да еще и на английском, словно у нас поголовно каждый пользователь эсквайр.

Последний раз редактировалось laimas, 04.12.2015 в 14:42.
Ответить с цитированием