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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Andrey
Отправлено: 17 Января, 2008 - 22:38:24
Post Id


Новичок


Покинул форум
Сообщений всего: 58
Дата рег-ции: Май 2007  


Помог: -1 раз(а)




Интернет магазин. К каждому товару есть несколько картинок в формате XXXX.1.jpg, XXXX.2.jpg .... XXXX.n.jpg. То есть картинок максимум n штук, минимум - может ни одной небыть. В каталоге товара показывается картинка XXXX.1.jpg, а в карточке товара показываются все картинки ( от XXXX.1.jpg до XXXX.n.jpg). Если картинки XXXX.1.jpg на сервере нет, то вместо этой картинки картинка с надписью нет изображения (no.jpg).
Вопрос такой: как описать логику, чтобы скрипт если не находит картинку XXXX.1.jpg, подставлял в каталог картинку XXXX.2.jpg, если не находил, её, то XXXX.3.jpg и т.д. перебирал до n. И только если скрипт ненайдёт ни одной картинки с имененами от XXXX.1.jpg до XXXX.n.jpg, то подставлял кактинку no.jpg.
В карточке товара структура таблицы, где первый столбец - картинки, а второй описания и т.п. Как описать логику, чтобы скрипт подсчитавал, сколько есть картинок (например XXXX.1.jpg, XXXX.2.jpg = 2 картинки; XXXX.3.jpg = 1 картинка; XXXX.2.jpg, XXXX.7.jpg, XXXX.10.jpg = 3 картинки). Это надо для формирования количества строк таблицы.
 
 Top
Dastar
Отправлено: 17 Января, 2008 - 22:49:58
Post Id



Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Янв. 2008  
Откуда: Израиль


Помог: -6 раз(а)




Я не понял, у тебя в одной ячейке несколько названий картинок, или каждая строка - отдельная картинка?
Для группы картинок к одному товару ХХХХ - одно имя, или изменяется от картинки к картинке?


-----
Не знаешь - молчи.
 
 Top
Andrey
Отправлено: 17 Января, 2008 - 23:04:53
Post Id


Новичок


Покинул форум
Сообщений всего: 58
Дата рег-ции: Май 2007  


Помог: -1 раз(а)




Dastar пишет:
Я не понял, у тебя в одной ячейке несколько названий картинок, или каждая строка - отдельная картинка?


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

Dastar пишет:

Для группы картинок к одному товару ХХХХ - одно имя, или изменяется от картинки к картинке?


Товар XXXX. К нему картинки XXXX.1.jpg .... XXXX.n.jpg
Товар YYYY. К нему картинки, например, YYYY.3.jpg и YYYY.5.jpg
Товар ZZZZ. К нему картинки, например, ZZZZ.2.jpg, ZZZZ.5.jpg и ZZZZ.6.jpg
 
 Top
Dastar
Отправлено: 17 Января, 2008 - 23:16:42
Post Id



Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Янв. 2008  
Откуда: Израиль


Помог: -6 раз(а)




Я бы сделал немного по другому:
есть таблица, в которой информация на все товары. И одна из ячеек - это ячейка с именами картинок. Каждая картинка разделяется каким-нибуть знаком (к примеру #).
Потом получаю эту ячейку и с помощью функции explode() получаю все картинки.
И тогда их просто вставляю в скрипт.


-----
Не знаешь - молчи.
 
 Top
Andrey
Отправлено: 18 Января, 2008 - 00:48:39
Post Id


Новичок


Покинул форум
Сообщений всего: 58
Дата рег-ции: Май 2007  


Помог: -1 раз(а)




Dastar пишет:
Я бы сделал немного по другому:
есть таблица, в которой информация на все товары. И одна из ячеек - это ячейка с именами картинок. Каждая картинка разделяется каким-нибуть знаком (к примеру #).
Потом получаю эту ячейку и с помощью функции explode() получаю все картинки.
И тогда их просто вставляю в скрипт.


Не совсем представляю как это сделать...
 
 Top
OverNik
Отправлено: 18 Января, 2008 - 08:04:21
Post Id



Частый гость


Покинул форум
Сообщений всего: 182
Дата рег-ции: Янв. 2008  


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




Я так понял 3 картинки это большая среднея и маленькая (розмеры) и хранятса они в базе вот таким вот чудом 1.jpg|2.jpg|3.jpg или |||.
Допустим переменая нашёй картинки будет $image[],
Вот тебе и логика

CODE (text):
скопировать код в буфер обмена
  1. if($image[0]!="") //если картинки нету то:
  2. {
  3. $image[0]="noimage.jpg";  //переправляем переменую в noimage.jpg (картинки нету)
  4. }


Помоему всё просто и робочое! Улыбка

(Отредактировано автором: 18 Января, 2008 - 08:04:58)

 
 Top
EuGen Администратор
Отправлено: 18 Января, 2008 - 09:52:59
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Dastar пишет:
Я бы сделал немного по другому:
есть таблица, в которой информация на все товары. И одна из ячеек - это ячейка с именами картинок. Каждая картинка разделяется каким-нибуть знаком (к примеру #).

Не делайте так никогда. Это идет вразрез с принципами реляционных БД.
Для автора:
Советую Вам изменить структуру БД. И сделать отдельно таблицу, где будут храниться картинки в привязке к товарам. То есть, если есть таблица товаров:
goods(good_id, name,description, ...{и другие Ваши поля})
то разумно сделать таблицу:
goods_images(record_id,good_id, image_name)
Предположим, у Вас есть товар "A" и у него есть картинки A.1.jpg и A.2.jpg; у Вас так же есть товар "B" с картинками B.2.jpg, B.3.jpg, B.5.jpg и товар "C" без картинок.
Тогда это будет:
goods:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. |1|A|"описание A"|
  3. |2|B|"описание B"|
  4. |3|C|"описание C"|
  5.  

А таблица goods_images:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. |1|1|"A.1.jpg"|
  3. |2|1|"A.2.jpg"|
  4. |3|2|"B.2.jpg"|
  5. |4|2|"B.3.jpg"|
  6. |5|2|"B.5.jpg"|
  7.  

Соответственно, Вам нужно лишь сделать выборку по Вашей БД для получения ответа:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. $default_name="no.jpg";
  3. $good_id=(int)($_GET['good_id']);
  4. $result=mysql_query("SELECT image_name FROM goods_images WHERE good_id=$good_id LIMIT 1");
  5. $row=mysql_fetch_array($result);
  6. $image_name=$row['image_name']?$row['image_name']:$default_name;
  7.  

(Отредактировано автором: 18 Января, 2008 - 10:20:05)



-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
valenok Модератор
Отправлено: 18 Января, 2008 - 16:18:57
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




Цитата:
... у, чтобы скрипт если не находит картинку XXXX.1.jpg, под ...

поиск и делайте.
file_exists


-----
Truly yours, Sasha.
 
My status
 Top
Andrey
Отправлено: 18 Января, 2008 - 16:41:06
Post Id


Новичок


Покинул форум
Сообщений всего: 58
Дата рег-ции: Май 2007  


Помог: -1 раз(а)




valenok пишет:
поиск и делайте. file_exists


Как организовать поиск, если я не знаю сколько картинок? Для одного товара их может быть 20, а для другого - ни одной... file_exist можно запистить в цикле, но я не знаю до какого значения в цикле ставить счётчик.
 
 Top
valenok Модератор
Отправлено: 18 Января, 2008 - 16:43:22
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




Вот и запишите file_exist в цикле.
Может пока будете писать - появятся идеи что делать с file_exist.
(Добавление)
p.s. Сколько конструкций циклов в php ?
Советую познакомиться со всеми


-----
Truly yours, Sasha.
 
My status
 Top
Andrey
Отправлено: 18 Января, 2008 - 23:53:41
Post Id


Новичок


Покинул форум
Сообщений всего: 58
Дата рег-ции: Май 2007  


Помог: -1 раз(а)




OverNik пишет:
Я так понял 3 картинки это большая среднея и маленькая (розмеры) и хранятса они в базе вот таким вот чудом 1.jpg|2.jpg|3.jpg или |||.


Нет, ты не так понял. Все три картинки - они одного размера. Вот ссылки с моего магазина:
1. Каталог товара
http://www[dot]magazinigrushek[dot]ru/index.php?page=7
Здесь как видно для артикулов 5380 и 5416 поскольку нет картинки с именем 5380.1.jpg (арт. 5380) и 5416.1.jpg, то выдает no.jpg
Но если зайти в карточку товара, то опять 1-я картинка no.jpg, а вторая есть.
Соответственно, если на серваке не найдётся 1 и 2 картинки, а будет только третья, то в карточке товара будут две картинки no.jpg. Я же хочу, чтобы, допустим, если нет 1 и 2 картинок, то в каталоге товара была не no.jpg (как сейчас), а 3-я картинка и в карточке товара тоже, чтобы отображались только те картинки, которые есть (если есть хотя бы одна). Если картинок нет, то в карточке товара первого столбца для картинок вообще бы небыло.

Если есть все, допустим 3 картинки, например, http://www[dot]magazinigrushek[dot]ru/sh[dot][dot][dot]hp?product_id=40
то здесь всё нормально
 
 Top
valenok Модератор
Отправлено: 19 Января, 2008 - 13:53:45
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




Вы не в том направлении думаете.
file_exist !


-----
Truly yours, Sasha.
 
My status
 Top
EuGen Администратор
Отправлено: 19 Января, 2008 - 13:54:43
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




А что, вариант с минимальными переделками структуры БД слишком трудный?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
valenok Модератор
Отправлено: 19 Января, 2008 - 14:06:04
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




EuGen пишет:
А что, вариант с минимальными переделками структуры БД слишком трудный?

А зачем записывать чтото в БД ?


-----
Truly yours, Sasha.
 
My status
 Top
EuGen Администратор
Отправлено: 19 Января, 2008 - 14:09:16
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Чтобы иметь более общую структуру и не быть привязанными к файлам XXX.1.jpg или как там. Если использовать простейшую таблицу БД с записями о картинках (их именах), то можно хранить хоть chupachups.jpg, хоть tarantella.jpg для одного и того же товара.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB