|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.11.2010, 10:49 | #11 |
Пользователь
Регистрация: 27.08.2010
Сообщений: 16
|
Спасибо, Andkorol, всё доступно объяснили. А что насчет кода для вставки категогорий, который я через сообщение выше привел? Пойдет ли? Или можно было проще сделать?
|
16.11.2010, 11:05 | #12 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Ну - я не люблю повторов кода,потому формирование строки запроса я бы сделал через цикл(там где у вас отдельно проверяется каждый элемент массива $category).
примерно так: PHP код:
Преимущество - независимость от количества категорий для одной статьи(когда-нибудь их вполне может оказаться больше 5-ти). "Гибкость и масштабируемость" - помните..? PS: чуть поправил код - теперь запрос формируется и выполняется,только если есть что добавлять в БД - что логично. :-) Последний раз редактировалось Andkorol; 16.11.2010 в 11:15. Причина: Change query |
16.11.2010, 17:13 | #13 |
Пользователь
Регистрация: 27.08.2010
Сообщений: 16
|
Спасибо за пример, Andkorol! Вставил его в свое приложение, только добавил перед ним строку $id_article = mysql_insert_id();
Ну, эта часть задачи решена. Теперь думал над тем как: 1) выводить категории к конкретной статье для редактирования, 2) перезаписывать список категорий конкретного топонима. Придумал только вот что (см. ниже). Прошу оценить – нормальное ли решение или его можно как-то упростить? И еще – 3) нужно ли создавать поле id(auto_increment) в таблице articles_categories (куда будут записываться id статей и категорий)? Вот что придумал - оцените. Вывод статьи и ее категорий для редактирования: PHP код:
PHP код:
Последний раз редактировалось Nikolai_; 16.11.2010 в 17:55. |
16.11.2010, 23:28 | #14 | ||
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Цитата:
Я имею ввиду то, как вы вообще себе представляете ваш процесс присваивания/редактирования/удаления категорий.... Вот вы сами подумайте - у вас более 100 различных категорий статей. Ваше решение состоит в том,чтобы просто вывести в текстовом поле строкой ID категорий к конкретной статье,типа вот так: 2,3,5,87,56,47 и прямо в этом поле добавить/заменить/удалить нужные ID ... Я может чего-то и не понимаю до конца,но - вы что,на память помните,какой ID к какой категории относится??? И,если вы делаете проект на заказ - Заказчик тоже должен наизусть это знать,или с листика читать? Когда я говорил об удобстве редактирования категорий к статьям - я имел ввиду удобный интерфейс для этого. А именно,на странице редактирования статей: 1.Выбираем запросом из БД все категории,относящиеся к данной статье. 2.Выбираем из БД массив-список всех имеющихся разновидностей категорий. 3.Соответственно количеству присвоенных категорий - делаем столько же списков(select-ов),в каждом из которых должна быть отмечена атрибутом SELECTED уже выбранная очередная категория для этой статьи.Также делаем для каждой имеющейся категории поле типа HIDDEN, в которое прописываем текущий ID категории - потом понадобится для сравнения. Select-ы должны иметь также в списке значение для удаления - чтобы можно было просто удалить ненужные категории(также можно удаление реализовать при помощи checkbox-ов). 4.Дополнительно,при помощи JavaScript делаем возможность добавлять дополнительные списки(select-ы) - чтобы добавлять новые категории. 5.Изменяем/добавляем новые категории для статьи(или помечаем "удалить"). 6.Сабмит формы. Обработчик формы должен: 1.Получить данные из select-ов. 2.Сверить эти данные с соответствующими значениями HIDDEN-полей. 3.Если данные в каких-либо полях изменились - заменить в БД значения только для этих полей: Цитата:
Вот примерно так должно быть - наглядно,удобно,опять же независимо от кол-ва категорий,и никаких лишних действий. |
||
17.11.2010, 10:04 | #15 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
Поздравляю!
Вы написали очень хороший здоровый программный код, вместо, того что бы просто использовать тип поля ENUM. Очередная починка электроники при помощи топора. |
17.11.2010, 10:18 | #16 | ||
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Цитата:
На ваше предложение насчёт ENUM достаточно веско(хоть и вопросом) ответили здесь. PS : обратите внимание на первый пост: Цитата:
Браво - это просто супер решение!!! Вдогонку вам вопрос - что делать пользователю,если количество категорий изменится(увеличится/уменьшится)? Лезть в Базу и править структуру таблицы,добавляя значения в ENUM??? Последний раз редактировалось Andkorol; 17.11.2010 в 10:33. Причина: PS |
||
17.11.2010, 13:27 | #17 | |||
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
Цитата:
Цитата:
Цитата:
В чем преимущество использования ENUM: - Значительно меньше кода, - Надо делать 1 простой запрос (!), - Никаких проблем с select-ми на форме; - Использование статической таблицы вместо динамической (!). По поводу предыдущего варианта: Вдогонку вам вопрос - что делать пользователю,если количество статей дойдёт до нескольких тысяч? Ждать несколько секунд пока сформируется страница? |
|||
17.11.2010, 13:41 | #18 | |||
Форумчанин
Регистрация: 20.05.2009
Сообщений: 506
|
Код:
Цитата:
Цитата:
Цитата:
P.S. Все программисты с которыми я когда либо общался решают проблему связей "много к много" способом который описал Androkol |
|||
17.11.2010, 14:03 | #19 | |||||
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
Цитата:
А вот Вы, ssdm, занаете что такое пиковая нагрузка? Цитата:
Цитата:
Цитата:
Таблица, в которой все поля фиксированного размера является статической. Таблица, в которой хотя бы одно из полей не фиксированного размера (код без ENUM) является динамической. Разница в скорости выборки колеблется от 3 до 10 раз в пользу статических таблиц. Цитата:
|
|||||
17.11.2010, 14:49 | #20 | ||
Форумчанин
Регистрация: 20.05.2009
Сообщений: 506
|
Цитата:
Цитата:
Вот приведите мне пример запроса который найдет статьи принадлежащий категории ну например 4 , 6 , 1 ? Последний раз редактировалось ssdm; 17.11.2010 в 15:05. |
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
переход статей | timon777777 | PHP | 9 | 27.06.2010 23:16 |