![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Kefir |
|
||||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: нет Всего: 87 |
Столкнулся с проблемой. Пока что не знаю как решать. В таблице БД у меня хранится дерево страниц сайта в виде:
Т.е. в parent_id хранится номер старшей (родительской) страницы. Если parent_id = 0, то это корневая станичка. Со временем понадобилось добавление языков. Проблемы начались с фичей "скопировать структуру из другого языка" - т.е. при добавлении языка в БД автоматически добавляется вся структура выбранного пользователем языка (дублируется с тем лишь отличием, что id языка меняется со старого на только что созданный). Сначала я было ринулся делать всё это дело так:
И всё бы ничего (всё прекрасно добавлялось), только вот проблема появилась - парент_ид нельзя так в наглую копировать - структура сразу ломается. его надо заново генерировать. Я очень надеюсь, что эту мою бредятину хоть кто-нибудь поймёт и посоветует как решить эту проблему. |
||||
|
|||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 2 Всего: 71 |
прости, но понял что нужно
Что должно получится на выходе? -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| Kefir |
|
||||||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: нет Всего: 87 |
Ок. Сейчас постараюсь поподробнее написать.
Это древовидная структура стайта. language равен 0 - это значит, что эти странички на, допустим, русском языке. Если зарисовать структуру по другому, то будет так:
Идём дальше. Редактор сайта должен иметь возможность добавлять языки. Причём при добавлении языка ему задаётся вопрос - "продублировать структуру из другого языка?" и если да, то из какого. Допустим он добавил английский язык (id = 1) и сказал продублировать структуру из русского языка. Тогда к первой таблице в начале поста должны прибавится следующие записи:
Т.е. надо сдублировать записи с language=0 и проставить в них language=1 + переделывать parent_id, т.к. в противном случае записи с английским языком будут ссылаться на родительскую запись из русского языка. Очень надеюсь, что стало попонятнее. Это сообщение отредактировал(а) Kefir - 15.2.2006, 10:45 |
||||||
|
|||||||
| Gold Dragon |
|
||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 2 Всего: 71 |
Kefir,
понятно стало до жути а теперь по структуре... А не проще тупо добавить ещё один столбец, т.е.общий ID
и тогда всё отлично получается
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||
|
|||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: нет Всего: 87 |
Gold Dragon, дело в том, что структура разных языков может быть различна и если юзер захочет привязать новую страничку к этому пролю - то получится ещё дополнительная работа (или я просто не понял твою идею).
Вообще, решение я сделал такое, может можно его оптимизировать, но главное - работает:
Вот. Ничего более простого в голову не пришло. Это сообщение отредактировал(а) Kefir - 16.2.2006, 16:15 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |