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


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

> Без описания
Andruxa
Отправлено: 03 Июля, 2011 - 21:50:57
Post Id



Частый гость


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


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




Всем привет!
Голова кипит от кучи мыслей которые не получается "разложить по полочкам".

Суть задачи. Необходимо реализовать записть объявлений в базу данных. Соответственно категорий и подкатегорий может быть множество.
Есть ли смысл сделать, скажем, для каждого раздела свою таблицу, для каждой категории тоже свою таблицу, для подкатегории тоже свою ?
Были мысли сделать общую таблицу и каждому значению сделать свое поле в таблице, но думаю это не вариант, т.к. для разных категорий объявлений разное кол-во значений будет.
Еще есть мысли, сделать пару полей для того что бы можно было выбирать данные и поле доп. информации в котором данные будут в сериализованном виде храниться.

Как лучше сделать запись в базу объявлений, что бы как можно проще потом вывести это все из базы в зависимости от категорий и подкатегорий?
 
 Top
Саныч
Отправлено: 03 Июля, 2011 - 22:03:06
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




делаете всего две таблицы: объявления и категории. В объвах делаете все необходимые поля и id категории... В категориях соответственно id и parent_id... В итоге имеем неограниченную вложенность категорий и рассортированные объявы...


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Andruxa
Отправлено: 03 Июля, 2011 - 22:19:35
Post Id



Частый гость


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


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




Eсли я правильно понял, делаем таблицу категорий:
PHP:
скопировать код в буфер обмена
  1. CREATE TABLE `categoria` (
  2.   `id` int(11) NOT NULL auto_increment,
  3.   `parent_id` int(11) NOT NULL
  4. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;


Делаем таблицу объявлений:
PHP:
скопировать код в буфер обмена
  1. CREATE TABLE `objava` (
  2.   `id` int(11) NOT NULL auto_increment,
  3.   `id_cat` int(11) NOT NULL
  4.  ......  и еще куча полей.....
  5. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

В том то и вопрос, что если так делать то у меня будет куча полей, т.е возьмем для примера 2 категории (Недвижимость и Автомобили)
Для "Недвижимости" поля будут иметь свою специфику (этаж, из чего стены, параметры и т.п.), соответственно поля для объявлений "Автомобили" будут тоже иметь свою специфику (марка модели, год выпуска, цвет, пробег и прочее). Если все это делать в одной таблице это будет караул Улыбка, может всетаки есть смысл разделить таблицы по катагориям объявлений?
 
 Top
White
Отправлено: 03 Июля, 2011 - 22:37:20
Post Id



Частый посетитель


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


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




как вариант конечно serialize() всех свойств, хотя мне лично не нравится, лучше связку через id сделать


-----
if(time()>1356048000) die();
 
 Top
Саныч
Отправлено: 04 Июля, 2011 - 00:19:23
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Andruxa, я вас сразу не понял... так-то да, лучше не делать в одной таблице, т.к. в итоге получится "каша"... Как вариант - предложение White, сделать поле "параметры" и хранить в нем все параметры продукта... Но я б скорей всего такое не выбрал.
Одно дело, если нужно просто хранить и показывать. В этом случае это наилучший вариант.
Другое же дело, когда нужно организовать сортировки всякие и т.д... Но хотя и здесь немного поизвращавшись можно сделать и с serialize.

Мне вот что интересно. Обычно, когда подобное делают, то уже знают специфику товаров, т.е. будут то вещи или недвижимость, или техника, или что-то еще... А у вас это что будет?.. Иил это из серии "торгуем всем и ничем"?

Вобщем я еще немножко подумаю, как лучше это реализовать, но скорей всего самое оптимальное в вашем случае будет использовать предложение White


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Andruxa
Отправлено: 04 Июля, 2011 - 07:50:36
Post Id



Частый гость


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


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




Цитата:
как вариант конечно serialize() всех свойств, хотя мне лично не нравится, лучше связку через id сделать

А чем он Вам не нравится ? Работает медленнее или какие то другие причины ?

Цитата:
Мне вот что интересно. Обычно, когда подобное делают, то уже знают специфику товаров, т.е. будут то вещи или недвижимость, или техника, или что-то еще... А у вас это что будет?.. Иил это из серии "торгуем всем и ничем"?


Сначала хотел именно сделать объявления под одну специфику, но потом передумал и хочу сделать объявления по разным темам Улыбка. Специфика будет разнообразная, что то похожее на "торгуем всем" Улыбка
 
 Top
morosit
Отправлено: 04 Июля, 2011 - 08:04:00
Post Id



Посетитель


Покинул форум
Сообщений всего: 307
Дата рег-ции: Июль 2010  
Откуда: Казахстан


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




Andruxa как вариант
Все объявления хранятся в одной таблице, у каждого объявления максимум, допустим 5 параметров, под именами парам1, парам2, и т.д. Т.е. без специфики в названий полей.
 
 Top
Andruxa
Отправлено: 04 Июля, 2011 - 08:36:14
Post Id



Частый гость


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


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




Цитата:
Все объявления хранятся в одной таблице, у каждого объявления максимум, допустим 5 параметров, под именами парам1, парам2, и т.д. Т.е. без специфики в названий полей.


Думаю может получится Улыбка нужно будет попробовать, спасибо за идею!
 
 Top
Саныч
Отправлено: 04 Июля, 2011 - 08:53:21
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Andruxa, я вчера перед сном еще немного подумал над вашей задачей. Вобщем я б сделал так:
1. Первая таблица categories
Поля: id, parent, parameters и далее все необходимые типа название и чето там еще...
2. Вторая таблица products
Поля: id, category, еще всякие типа названий, дат...
3. Третья таблица parameters
Поля: id и опять таки еще типа названия и т.д.
4. Вы (или кто-то другой) как админ, при добавлении новой категории выбираете необходимые параметры (параметры хранятся в таблице parameters). Выбор реализовывается на checkbox-ах... Выбранные значения заносятся в serialize() виде в ячейку parameters таблицы categories
5. Админ может добавлять новые параметры в таблицу parameters (к тому же их будет не так уж и много, к примеру "цвет" будет использоваться и в авто, и в мебели, и в вещах). При добавлении нового параметра добавляется новое поле в таблицу products с префиксом, к примеру, parametr_ и id параметра в таблиц parameters
6. Ну и при добавлении нового товара, сначала выбираем необходимые поля для данной группы товаров и заполняем только их...

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

Ну вот как-то так Улыбка

(Отредактировано автором: 04 Июля, 2011 - 08:58:53)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Andruxa
Отправлено: 04 Июля, 2011 - 21:41:56
Post Id



Частый гость


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


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




Саныч Спасибо за идею, тоже можно попытаться реализовать.
Перечитал раз 20 предложенное Вами, но все равно не совсем въехал.
Интересует этот пункт:
Цитата:
4. Вы (или кто-то другой) как админ, при добавлении новой категории выбираете необходимые параметры (параметры хранятся в таблице parameters). Выбор реализовывается на checkbox-ах... Выбранные значения заносятся в serialize() виде в ячейку parameters таблицы categories

Т.е в таблицу параметры, я внес обобщенно все параметры которых будут касаться моих объявления, так?
А не получится, что при добавлении категории объявления и в момент выбора паметров, у меня появится ОЧЕНЬ много checkbox' сов, которые я устану вибирать. Или я что то не допонял в этом моменте ?
 
 Top
Саныч
Отправлено: 04 Июля, 2011 - 22:40:03
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Andruxa пишет:
появится ОЧЕНЬ много checkbox' сов, которые я устану вибирать
вот про это я немного написал в пункте 5 (в скобках)... Предположим у нас есть мебель и авто... Такие параметры как цвет, высота, ширина, длина будут у обоих групп товаров... И таких вариантов много, т.е. это только кажется, что параметров будет много... Да и вобще понятие "много"? В моем понятии это 200 - 300, а в вашем?
К тому же этот выбор придется сделать всего один раз при добавлении категорий, ну и возможно еще пару раз при редактировании... Вобщем, можно и пострадать немного Улыбка


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
DlTA
Отправлено: 04 Июля, 2011 - 22:59:01
Post Id



Постоянный участник


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


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




как вариант
таблиц:
"Типы объектов" - автомобили, одежда, ....
"тип свойства" - цвет, число стен, максимальная скорость, размер, ....
"сводная таблица, тип объекта/свойство" - id типа объекта | id типа свойств
"значения свойств" - зеленый, 1985, хлопок, ....
"объекты" - id объекта| id типа объекта | ..........
"сводная таблица, объект/тип свойства/значение" id объекта | id типа свойства | id свойства

надеюсь схема взаимоотношений понятна,
+ таблицы категорий, и свойства для объектов о принадлежности к категории

а вообще для начала стоит определиться с перечнем обязательных свойств объектов и категоирий, я как то считал у меня вышло 11 (видимость товара, цена, описание, краткое описание, ....)
(Добавление)
кстати серелизация светит тормозами когда станет вопрос поиска

да и при обычном отображении товара, для отображения придется делать уйму запросов, а mySQL+php не любят когда много запросов, лучше 1 но большой))
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB