Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 04.12.2015, 12:08
Интересующийся
Отправить личное сообщение для Sylar V Посмотреть профиль Найти все сообщения от Sylar V
 
Регистрация: 31.03.2015
Сообщений: 27

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

Sylar V,

Во-первых, есть glob(), во-вторых зачем картинки отдавать скриптом, да еще вместо несуществующего изображения показывать то, что будет GD готовить? Можно вообще-то картинку и по-умолчанию иметь, это раз, а еще по уму, так если нет у товара изображений, так и никаких "наведений мышкой" у таких товаров не должно быть.
Что вам мешает имеющиеся изображения, их имена, поместить в тег в атрибут data-img как массив и уже на клиенте брать из него случайное имя, отдавая загрузку браузеру, а не нагружая php и GD без надобности?
Ответить с цитированием
  #13 (permalink)  
Старый 04.12.2015, 14:03
Интересующийся
Отправить личное сообщение для Sylar V Посмотреть профиль Найти все сообщения от Sylar V
 
Регистрация: 31.03.2015
Сообщений: 27

laimas,

У товаров есть картинки: <img src="/images/no_photo.jpg" width="220" height="172">
<div class="pic">
   <img src="/images/no_photo.jpg" width="220" height="172">
   <div class="mask"></div>
   <div class="zoom"></div>
</div>


Див с меняющимся background при наведении:
<div class="mask"></div>.

Использовал PHP и JS, так как собственно не знал, как решить данную задачу. Поэтому прошу помощи, желательно подробной.
Ответить с цитированием
  #14 (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.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Меню на SVG. Смена цвета при наведении мыши putrsa Элементы интерфейса 3 22.03.2014 11:22
смена картинок при нажатии sdff Общие вопросы Javascript 15 08.02.2014 17:08
Смена картинки при наведении курсора Heidel jQuery 1 06.11.2012 22:03
Смена картинки при перезагрузке + наведении Мария Элементы интерфейса 2 22.08.2009 14:57
Помогите создать скрипт замены картинок при наведении курсора. SantaS Я не знаю javascript 3 05.06.2009 12:59