делаю разделы. подскажите по структуре базы, способе вывода и т.п.

danneo

Честный
Регистрация
13 Ноя 2007
Сообщения
1.526
Реакции
121
Начну с того, что я не профи :)
Нужно в каталоге фирм в анкете дополнительно выводить информацию про услуги этой фирмы, как отдельный модуль... у нее известен id.
Модуль услуг будет привязываться к id фирмы.
Хочу сделать так...
на анкете выводится:
сначала раздел "Строительные услуги"
Ниже выводится подраздел "ремонтные работы"
ниже выводятся все услуги по этому подразделу, например, починка крана, замена кабелей, ремонт розеток. Все это выводится в виде списка в столбики.
Далее, ниже всего этого выводится подраздел2 из раздела "Строительные услуги", называется "косметические работы"
и ниже выводится весь список работ, например, беление потолка, поклейка обоев, укладка плинтуса и т.п.
И так, все подразделы с их списком работ.
А ниже идет снова основной раздел, подобный первому "Строительные услуги". Но он уже со своими подразделами в которых есть свои списки.
Если в каком то основном разделе нет подразделов, то выводятся сразу все списки, без подразделов.

Вопрос. Как сделать таблицы, какие отдельно, какие с полями для указания parantid? Как привязать списки услуг к разделам, подразделам?
НУ и каким образом их выводить?
Нужно ли разносить в разные таблицы главные разделы и подразделы, услуги в отдельную таблицу от подразделов или нет....?
Также, проблема возникла в том, что не знаю как сделать редактирование анкеты. Фирма должна выбирать все эти услуги галочками. Т.е. при редактировании или добавлении фримы выводятся также все услуги, только рядом с ними еще чекбоксы. Юзер расставляет в нужных галочки и сохраняет.
Думал, да не получается ничего.
Ведь есть уже готовые способы, наверно...
 
Я бы сделал две таблицы.

1. id, parent_id - для создания структуры услуг
2. id, название услуги, описание услуги и т.д.

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

Что значит в каком виде должны быть поля?

В первой таблице вы указываете какая категория принадлежит к какой подкатегории, если id категории 1 то это самый верх.

Во второй таблице вы задаете ID услуги, категорию к которой она принадлежит, и остальные поля которые вам нужны.

Алгоритм.
Берем любую услугу. Смотрим какая категория (ее ID), далее в цикле проверяем parent_id!=1 ищем к какой категории относится данная категория.

Возьмите любой движок и посмотрите как там реализовано.
 
В первой таблице вы указываете какая категория принадлежит к какой подкатегории, если id категории 1 то это самый верх.
вообще то несколько наоборот... не может категория принадлежать подкатегории! и утверждение что id категории 1 это самый верх... совсем не факт (parent_id=0 вот это самый верх!)
Действительно первая таблица должна содержать данные о доступных структурных единицах (категориях, подкатегориях, под-подкатегориях и т.д.).. выглядит приблизительно так:
id | parent_id | name | description |
где id - соответственно уникальный индекс записи
parent_id =0 если это главная категория или parent_id = id_вышестоящей категории, если это подкатегория
name - название категории
description - какое либо описание категории
Предположим цепочка "Строительные работы" -> "ремонтные работы" ->"косметика"
и цепочка "Строительные работы" -> "ремонтные работы" ->"капитальные работы"
будут в таблице отображены следующим образом:
id | parent_id | name | description |
1 | 0 | Строительные работы |.... |
2 | 1 | ремонтные работы |...... |
3 | 2 | косметика |...... |
4 | 2 | капитальные работы |....... |
 
вообще то несколько наоборот... не может категория принадлежать подкатегории! и утверждение что id категории 1 это самый верх... совсем не факт (parent_id=0 вот это самый верх!)


Да вы правы.Перетрудился вчера. А по поводу 0 или 1 это не суть важно. Главное что у корневой категории есть свой ID который и надо проверять в скрипте. Т.е. равняется ли ID категории - ID ROOT категории
 
Вы не о том. Это я знаю как сделать. И тут тоже есть нюанс. Подподкатегория не будет иметь ID главной категории. Но это не особо важно.
Вопрос бы в другом.
Как у таблицы фирмы сделать поля, чтобы можно было занести туда все списки услуг, списки категорий, подкатегорий по которым она оказывает услуги. Т.е. услуг может быть сколько угодно. Они выбираются галочками. Как эти все ID этих услуг запихнуть в поля таблицы, например, "firms"?
 
Ну подподкатегория должна иметь ID не главной категории, а вышестоящей!
Делаешь в таблице firms поле: services в него загоняешь массив id услуг из таблицы services которая имеет вид id | id_cat | names | description |
где:
где id - соответственно уникальный индекс записи
id_cat - id категории к которой относятся услуги
name - название услуги
description - какое либо описание услуги

Загонять массив услуг в базу можно функцией serialize(), вытягивать в удобоваримый вид функцией unserialize(). Дальше обрабатывать стандартными функциями РНР...
Зная ид услуги из базы можно вытянуть ид категории к которой принадлежит услуга, далее зная ид категории можно определить главная она или нет, если не главная, то узнать какая вышестоящая и т.д.
 
Ну подподкатегория должна иметь ID не главной категории, а вышестоящей!
Делаешь в таблице firms поле: services в него загоняешь массив id услуг из таблицы services которая имеет вид id | id_cat | names | description |
где:
где id - соответственно уникальный индекс записи
id_cat - id категории к которой относятся услуги
name - название услуги
description - какое либо описание услуги
Загонять массив услуг в базу можно функцией serialize(), вытягивать в удобоваримый вид функцией unserialize(). Дальше обрабатывать стандартными функциями РНР...
Зная ид услуги из базы можно вытянуть ид категории к которой принадлежит услуга, далее зная ид категории можно определить главная она или нет, если не главная, то узнать какая вышестоящая и т.д.
А есть смысл загонять весь массив услуг? Зачем копировать базу и делать переизбыток?
Не лучше загнать только id тех услуг, где стоит чекбокс?
 
Собственно я именно о том массиве и говорил... загонять в поле services только массив тех услуг, которые предоставляет фирма...
 
Назад
Сверху