Решил переделать доску объявлений в каталог жёлтых страниц и возникла примерно такая же проблема как и с одной новостью в несколько тем...
Так же и мне необходимо добавлять объявление в одну или более категорий...
То есть на странице добавления у меня список категорий с подкатегориями в селекте с атрибутом мультипл но в базу пишется только одна категория с максимальным ид из всех выбранных и не интересно получается ... надо добавлять в каждую подкатегорию как отдельное объявление и когда в одной категории добавляешь одну и ту же фирму в разные подкатегории то когда вызываешь страницу самой категории то эта фирма повторяется много раз потому как на странице показаны все объявления которые содержатся в подкатегориях принадлежащих данной категории , то есть во сколько подкатегорий её добавил ... А хочется просто чтобы в случае вызова категорий это было один раз и в самом блоке было указано к каким подкатегориям она принадлежит , ну и соответственно при выборе подкатегорий в которых она занесена она тоже отображалась , и чтобы это всё работало если она внесена в подкатегории других категорий ...
Всем заранее СПАСИБО !!!
Спустя 6 часов, 3 минуты, 33 секунды (4.05.2009 - 03:01) Guest написал(а):
Тогда попробую объяснить...
есть такие таблицы в базе ... одна для объявлений
| id_ads | id_catg | title | ads_desc |
вторая для категорий с подкатегориями
| id_catg | catg | catg_desk | parent_id |
в столбце parent_id записывается принадлежность подкатегорий к категориям , все названия категорий и подкатегорий записываются в catg
у главных категорий в parent_id пишет 0 , а у подкатегорий в этом столбце пишет id категории к которой подкатегории принадлежат....
Вот , а мне надо чтобы одно объявление можно было привязать к нескольким подкатегориям хотябы до 10 , вобщем каждое к разному кол-ву подкатегорий и некоторые подкатегории могут принадлежать разным основным категориям.
меню категорий образовывается в селекте с атрибутом мультипл чтобы можно было выбрать какие надо подкатегории
есть такие таблицы в базе ... одна для объявлений
| id_ads | id_catg | title | ads_desc |
вторая для категорий с подкатегориями
| id_catg | catg | catg_desk | parent_id |
в столбце parent_id записывается принадлежность подкатегорий к категориям , все названия категорий и подкатегорий записываются в catg
у главных категорий в parent_id пишет 0 , а у подкатегорий в этом столбце пишет id категории к которой подкатегории принадлежат....
Вот , а мне надо чтобы одно объявление можно было привязать к нескольким подкатегориям хотябы до 10 , вобщем каждое к разному кол-ву подкатегорий и некоторые подкатегории могут принадлежать разным основным категориям.
меню категорий образовывается в селекте с атрибутом мультипл чтобы можно было выбрать какие надо подкатегории
PHP |
."<select name=\"catgforprocess\" multiple=\"multiple\" size=\"10\">"; |
Потом в при нажатии на кнопку добавить передаётся всё это дело функции сабмит там сначала идёт проверка заполнения полей потом запись в базу
PHP |
echo $sql = "insert into ".$myprefix."_ads_ads values" |
потом идёт функция которая просто говорит что всё удачно добавлено ...
Вот и весь вопрос ... надо чтобы выбранные из селекта пункты привязались к объявлению ... не допонимаю каким образом это реализовать ???
Спустя 12 минут, 55 секунд (4.05.2009 - 03:14) Joker написал(а):
Ну например, сейчас значение подкатегорий одно и оно цифровое, можно как вариант сделать его строковым и через | записывать каким категориям оно будет присвоено. Или создать доп. табличку. Но в любом случае придеться менять вывод.
Спустя 7 минут (4.05.2009 - 03:21) Гость_Роман написал(а):
Я просто в PHP ещё только начинающий потому не получается разобраться с этой проблемой... (
И соответственно потом надо чтобы когда выбираешь показать список объявлений по алфавиту в объявлении выводилось к каким категориям и подкатегориям принадлежит объявление и соответственно когда выбираешь любую из категорий или подкатегорий к которым оно принадлежит , это объявление показывалось в списке объявлений той категории, а также в объявлении было указано к каким ещё категориям оно принадлежит....
Надеюсь теперь понятен мой вопрос ...
И соответственно потом надо чтобы когда выбираешь показать список объявлений по алфавиту в объявлении выводилось к каким категориям и подкатегориям принадлежит объявление и соответственно когда выбираешь любую из категорий или подкатегорий к которым оно принадлежит , это объявление показывалось в списке объявлений той категории, а также в объявлении было указано к каким ещё категориям оно принадлежит....
Надеюсь теперь понятен мой вопрос ...
Спустя 10 минут, 51 секунда (4.05.2009 - 03:32) Joker написал(а):
Цитата (Гость_Роман @ 4.05.2009 - 00:29) |
.. да и ещё раз повторюсь не очень я в PHP ещё разбираюсь ((( |
Доблести прошу web-школа там за твои денюжки тебя научат это делать и помогут все разобрать и довести до ума именно эту задачку.
Спустя 6 часов, 25 минут, 47 секунд (4.05.2009 - 09:58) HardWoman написал(а):
Цитата |
Тогда попробую объяснить... есть такие таблицы в базе ... одна для объявлений | id_ads | id_catg | title | ads_desc | вторая для категорий с подкатегориями | id_catg | catg | catg_desk | parent_id | в столбце parent_id записывается принадлежность подкатегорий к категориям , все названия категорий и подкатегорий записываются в catg у главных категорий в parent_id пишет 0 , а у подкатегорий в этом столбце пишет id категории к которой подкатегории принадлежат.... |
Ваши таблицы несколько нерационально построены. Например первая.
Есть ID категории, ID самого объявления, Titie - текст.
Если у вас объявление будет принадлежать нескольким категориям, текст каждого объявления, которое принадлежит разным категориям будет повторятся. Это неправильно. Почитайте об архитектурах баз данных. в частности о нормализации таблиц и приведению их
Далее по второй таблице.Тоже неправильно, с точки зрения архитектур
Есть четыре таблицы.
1 ая.
ID объявления
текст объявления.
2 ая (называется ассоциативная связь - она же таблица)
ID категории
ID объявления
3 я
ID категории/подкатегории
название категории/подкатегории
4 я (называется ассоциативная связь - она же таблица)
Родительская таблица - категории - подкатегории - то есть какая категория является родительской для какой подкатегории.
ID категория родитель
ID категория ребенок.
Это будет наиболее приемлемым вариантом, если предполагеется большое количество вложенных категорий/подкатегорий. Читать иерархические структуры.
Если всего два уровня и подкатегории не повторяются для разных категорий - то вместо 3 и 4 таблицы можно записать так
ID категории
название категории
ID категории
ID подкатегории
Название подкатегории
В общем как то так
Спустя 1 час, 23 минуты, 11 секунд (4.05.2009 - 11:21) Alchemist написал(а):
Маленькое добавление: если дерево категорий является "простым", т.е. у каждой подкатегории есть только один "папа", то четвертая таблица не нужна, и ID родителя можно добавить прямо в третью.
Спустя 4 часа, 48 минут, 58 секунд (4.05.2009 - 16:10) Гость_Роман написал(а):
))) Вот красавцы отредактировали тему )))
Смысл таков ....
Действительно , то что лучше четыре таблицы это факт .... и походу неизбежный , а работает ...вернее должно ) так ...
Смысл таков ....
Действительно , то что лучше четыре таблицы это факт .... и походу неизбежный , а работает ...вернее должно ) так ...
Цитата |
Тогда попробую объяснить... есть такие таблицы в базе ... одна для объявлений | id_ads | id_catg | title | ads_desc | вторая для категорий с подкатегориями | id_catg | catg | catg_desk | parent_id | в столбце parent_id записывается принадлежность подкатегорий к категориям , все названия категорий и подкатегорий записываются в catg у главных категорий в parent_id пишет 0 , а у подкатегорий в этом столбце пишет id категории к которой подкатегории принадлежат.... |
С первой таблицей я думаю всё правильно , первая колонка ид самого объявления , вторая это к какой категории принадлежит объявление , третья это заголовок , четвёртая это описание объявления ... ещё есть колонки ,но думаю нет смысла их описывать потому как они содержат всякие данные принадлежащие к объявлению всякие там е майлы и контакты , даты добавления и прочую муть... А вот во вторую таблицу в первую колонку пишется ид категорий и подкатегорий , но ... сначала для удобства я создаю главные и их ид начинается с 1 и так далее у главных категорий парент_ид всегда 0 и в главные категории добавлять объявления нельзя , уровня всего два и каждой главной категории хоть сколько подкатегорий добавляй ид_катг всегда +1 "автоинкримент" и вот все подкатегории которые принадлежат к главной с ид=1 будут иметь парент_ид =1 , главной с ид =2 будут иметь все парент_ид =2 и так далее я думаю смысл понятен , колонка катг -это заголовок категории , а катг_деск это описание категории и даже если потом придётся добавить главную категорию и её ид будет =210 , то все принадлежащие ей подкатегории будут иметь парент_ид =210 , а сортировка всёравно по названию т.е. от а до я , и вот теперь надо , я так понимаю ещё одна таблица которая будет содержать ассоциации к каким подкатегориям принадлежит объявление , но тогда в первой таблице колонка ид_катг получается не нужна ... вернее она должна содежать другие ид по которым и будет ассоциация с третьей таблицей и вид третьей таблицы ... я правильно понимаю? Должен быть примерно такой ....
| id_такой-то | id_ads | id_catg |
-------1------------3----------55
-------1------------3----------66
-------1------------3----------77
-------2------------8----------80
-------2------------8----------85
и в первой таблице вместо id_catg надо переименовать колонку в id_такой-то...
А в третью таблицу ид_адс будет записываться и ассоциироваться с категориями как в примере я указал ... Это так примерно должно быть ??? )))
Или я не так делаю ?
... И ещё я чё-то не могу понять почему из меню селекта больше одной категории не выдёргивает , то есть выделяю несколько а в базу пишет только тот пункт у которого максимальный из выделенных ид или какие то функции надо добавить ... Для меня это ещё пока сложно ... )))
Спустя 1 час, 25 минут, 37 секунд (4.05.2009 - 17:36) Kuliev написал(а):
Гость_Роман
Цитата |
И ещё я чё-то не могу понять почему из меню селекта больше одной категории не выдёргивает , то есть выделяю несколько а в базу пишет только тот пункт у которого максимальный из выделенных ид или какие то функции надо добавить ... Для меня это ещё пока сложно ... ))) |
Ну наверное в селекте name= select[] сделай получишь массив выбранных значений
Спустя 1 минута, 46 секунд (4.05.2009 - 17:37) HardWoman написал(а):
Alchemist
Где я ошибаюсь? заинтриговал.
Или ты имел ввиду эту таблицу? В первом варианте?
ID парент
ID категорий/ подкатегорий
Название категорий
Тогда согласна. Ты безусловно прав. Тормознула
Где я ошибаюсь? заинтриговал.
Или ты имел ввиду эту таблицу? В первом варианте?
ID парент
ID категорий/ подкатегорий
Название категорий
Тогда согласна. Ты безусловно прав. Тормознула
Спустя 53 минуты, 4 секунды (4.05.2009 - 18:30) Alchemist написал(а):
именно так.
Спустя 21 час, 31 минута, 14 секунд (5.05.2009 - 16:02) Guest написал(а):
Цитата |
Ну наверное в селекте name= select[] сделай получишь массив выбранных значений |
Вот ... теперь началось самое интересное...
подскажите пожалуйста теперь как мне правильно сформировать запись в базу , то есть в разные таблицы ... и как теперь сделать чтобы при записи в ассоциативную таблицу писало ид выбранных категорий и ид объявления к которому привязаны категории ... у меня сей час запись в базу происходит так
PHP |
echo $sql = "insert into ".$myprefix."_ads_ads values" |
А выводит название категории в самом объявлении с помощью такой функции
PHP |
function getcategoryname($id_catgtemp){ |
в объявлении название категории выдёргивает так
PHP |
getcategoryname($xid_catg) |
Я создал таблицу в базе из двух колонок вот такого характера внёс в неё записи пока в ручную
| id_ads | id_catg |
------3----------55
------3----------66
------3----------77
------8----------80
------8----------85
И у меня не получается выдернуть этой функцией
function getcategoryname ... хотябы в самом объявлении ...для начала... чтобы показало что категорий несколько
Я её долбал долбал и всё что у меня получается либо ид_адс просто показывает либо ид_катг но только из одной строки .... Я понимаю что ещё какие -то функции придётся писать чтобы выводило названия категорий и чтобы при фильтрации по категориям любая из категорий к которой объявление принадлежит отображала в своём списке это объявление ...
Чтобы в самом объявлении отображало названия объявлений всё этой же функцией function getcategoryname можно добавить в таблицу столбец для имени категории и при добавлении объявления просто вносить имя категории и в таблицу категорий и ассоциаций , но я честно говоря нифига не соображу как это довести до ума..... (