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 » PHP » Программирование на PHP » Помогите с логикой

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

1. Andrey - 17 Января, 2008 - 22:38:24 - перейти к сообщению
Интернет магазин. К каждому товару есть несколько картинок в формате 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 картинки). Это надо для формирования количества строк таблицы.
2. Dastar - 17 Января, 2008 - 22:49:58 - перейти к сообщению
Я не понял, у тебя в одной ячейке несколько названий картинок, или каждая строка - отдельная картинка?
Для группы картинок к одному товару ХХХХ - одно имя, или изменяется от картинки к картинке?
3. Andrey - 17 Января, 2008 - 23:04:53 - перейти к сообщению
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
4. Dastar - 17 Января, 2008 - 23:16:42 - перейти к сообщению
Я бы сделал немного по другому:
есть таблица, в которой информация на все товары. И одна из ячеек - это ячейка с именами картинок. Каждая картинка разделяется каким-нибуть знаком (к примеру #).
Потом получаю эту ячейку и с помощью функции explode() получаю все картинки.
И тогда их просто вставляю в скрипт.
5. Andrey - 18 Января, 2008 - 00:48:39 - перейти к сообщению
Dastar пишет:
Я бы сделал немного по другому:
есть таблица, в которой информация на все товары. И одна из ячеек - это ячейка с именами картинок. Каждая картинка разделяется каким-нибуть знаком (к примеру #).
Потом получаю эту ячейку и с помощью функции explode() получаю все картинки.
И тогда их просто вставляю в скрипт.


Не совсем представляю как это сделать...
6. OverNik - 18 Января, 2008 - 08:04:21 - перейти к сообщению
Я так понял 3 картинки это большая среднея и маленькая (розмеры) и хранятса они в базе вот таким вот чудом 1.jpg|2.jpg|3.jpg или |||.
Допустим переменая нашёй картинки будет $image[],
Вот тебе и логика

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


Помоему всё просто и робочое! Улыбка
7. EuGen - 18 Января, 2008 - 09:52:59 - перейти к сообщению
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.  
8. valenok - 18 Января, 2008 - 16:18:57 - перейти к сообщению
Цитата:
... у, чтобы скрипт если не находит картинку XXXX.1.jpg, под ...

поиск и делайте.
file_exists
9. Andrey - 18 Января, 2008 - 16:41:06 - перейти к сообщению
valenok пишет:
поиск и делайте. file_exists


Как организовать поиск, если я не знаю сколько картинок? Для одного товара их может быть 20, а для другого - ни одной... file_exist можно запистить в цикле, но я не знаю до какого значения в цикле ставить счётчик.
10. valenok - 18 Января, 2008 - 16:43:22 - перейти к сообщению
Вот и запишите file_exist в цикле.
Может пока будете писать - появятся идеи что делать с file_exist.
(Добавление)
p.s. Сколько конструкций циклов в php ?
Советую познакомиться со всеми
11. Andrey - 18 Января, 2008 - 23:53:41 - перейти к сообщению
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
то здесь всё нормально
12. valenok - 19 Января, 2008 - 13:53:45 - перейти к сообщению
Вы не в том направлении думаете.
file_exist !
13. EuGen - 19 Января, 2008 - 13:54:43 - перейти к сообщению
А что, вариант с минимальными переделками структуры БД слишком трудный?
14. valenok - 19 Января, 2008 - 14:06:04 - перейти к сообщению
EuGen пишет:
А что, вариант с минимальными переделками структуры БД слишком трудный?

А зачем записывать чтото в БД ?
15. EuGen - 19 Января, 2008 - 14:09:16 - перейти к сообщению
Чтобы иметь более общую структуру и не быть привязанными к файлам XXX.1.jpg или как там. Если использовать простейшую таблицу БД с записями о картинках (их именах), то можно хранить хоть chupachups.jpg, хоть tarantella.jpg для одного и того же товара.

 

Powered by ExBB FM 1.0 RC1