X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> cms simpla и поиск по товару
Licoric
Licoric
Topic Starter сообщение 30.10.2013, 13:03; Ответить: Licoric
Сообщение #1


Есть код:
[PHP]if(!empty($filter['keyword']))
{
$keywords = explode(' ', $filter['keyword']);
foreach($keywords as $keyword)
$keyword_filter .= $this->db->placehold('AND (p.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" OR p.meta_keywords LIKE "%'.mysql_real_escape_string(trim($keyword)).'%") ');
}

if(!empty($filter['features']) && !empty($filter['features']))
foreach($filter['features'] as $feature=>$value)
$features_filter .= $this->db->placehold('AND p.id in (SELECT product_id FROM __options WHERE feature_id=? AND value=? ) ', $feature, "".$value);

$query = "SELECT
p.id,
p.url,
p.brand_id,
p.name,
p.annotation,
p.body,
p.position,
p.created as created,
p.visible,
p.featured,
p.meta_title,
p.meta_keywords,
p.meta_description,
b.name as brand,
b.url as brand_url
FROM __products p
$category_id_filter
LEFT JOIN __brands b ON p.brand_id = b.id
WHERE
1
$product_id_filter
$brand_id_filter
$features_filter
$keyword_filter
$is_featured_filter
$discounted_filter
$in_stock_filter
$visible_filter
$group_by
ORDER BY $order
$sql_limit";

$query = $this->db->placehold($query);
$this->db->query($query);

return $this->db->results();[/PHP]
Дано: магазин на симпле. У каждого товара есть тип и цвет (фиксировано 2 поля). Если в поле цвет вводить один цвет, то все пашет. Если при добавлении товара указать 2-3 цвета через запятую (и без), например "красный синий желтый", то товар добавляется в базу. Но при поиске - не выводится. Если я ввожу в гет запросе "красный", то не выводится. Если целиком напишу "красный синий желтый", то появится мой товар. Где мне тут "лайк" воткнуть?
[attachment=39890:value.png]
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 30.10.2013, 14:24; Ответить: alexdrob
Сообщение #2


(Licoric @ 30.10.2013, 16:03) *
Если при добавлении товара указать 2-3 цвета через запятую (и без), например "красный синий желтый", то

то это нарушает нормализацию бд.
не зря же целые книги есть, где описывается проектирование бд, и связи.
если у товара может быть более 1го чего то, то это выносится в отдельную таблицу и связывается связью один ко многим.
если же и у того чего то (в данном случае цвета) может быть несколько товаров (то есть есть несколько товаров одного цвета), то заводиться отдельная таблицка, где есть цвета, и цвета с товарами связываются через промежуточную таблицу, то есть связью многие ко многим.
и вот тогда можно выбрать хоть все цвета для одного товара, хоть все товары для одного цвета.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Licoric
Licoric
Topic Starter сообщение 30.10.2013, 14:36; Ответить: Licoric
Сообщение #3


(alexdrob @ 30.10.2013, 17:24) *
то это нарушает нормализацию бд.
не зря же целые книги есть, где описывается проектирование бд, и связи.
если у товара может быть более 1го чего то, то это выносится в отдельную таблицу и связывается связью один ко многим.
если же и у того чего то (в данном случае цвета) может быть несколько товаров (то есть есть несколько товаров одного цвета), то заводиться отдельная таблицка, где есть цвета, и цвета с товарами связываются через промежуточную таблицу, то есть связью многие ко многим.
и вот тогда можно выбрать хоть все цвета для одного товара, хоть все товары для одного цвета.

то есть в данном случае это никак? Просто тут имеется ввиду не один какой либо цвет а поиск в базе в принципе. Если вместо цветом будут строки? Не одно слово, а несколько. Искать надо вхождение необходимого просто.
Я бы, может, и задумался над этим, но мой случай: вот тебе фтп, вот админка. Дерзай. Что бы ВЧЕРА было готово...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 30.10.2013, 14:43; Ответить: alexdrob
Сообщение #4


Имеется ввиду что нужно в 1 поле 1 цвет хранить.
То есть если у вас есть свойство, в данном случае строка из таблицы s_options, то в ней должно быть 1-но значение 1-го свойства.
я так понимаю 151 - это цвет.
значит для товара с ID = 59, должно быть три записи на три цвета
59 | 151 | красный
59 | 151 | синий
59 | 151 | желтый

и первичный ключ должен быть у таблицы по всем 3 полям.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Перенос сайта на CMS Wordpress
8 freeax 4958 10.3.2024, 14:58
автор: freeax
Открытая тема (нет новых ответов) Обновить сайт на CMS DLE
1 Sawich 1662 2.9.2023, 10:10
автор: WoWeb
Открытая тема (нет новых ответов) [Продам] базы сайтов на CMS Wordpress/Joomla/Drupal/Magento/...
14 phosphoruss 13763 16.8.2023, 15:27
автор: SmmPanelUS
Горячая тема (нет новых ответов) Сайт "под ключ" (дизайн, верстка, CMS)
32 Brans 16531 19.5.2023, 22:01
автор: Brans
Открытая тема (нет новых ответов) АПИ Таобао, 1688 для интеграции на сайты различных CMS
0 NittaSau 860 28.4.2023, 18:07
автор: NittaSau


 



RSS Текстовая версия Сейчас: 20.4.2024, 0:04
Дизайн