![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
bFree |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 9.11.2008 Репутация: нет Всего: нет |
Здравствуйте
Столкнулся с вопросом из разряда "как грамотнее" Допустим, что есть посты (форум, гостевая книга, комментарии) Соответсвтенно в БД для каждого поста хранится айдишник автора. До этого момента вытягивал из бд все что нужно примерно вот так: SELECT * FROM posts LEFT JOIN user ON post_author = user_id Соответственно получал для каждого поста и инфу о пользователе, которая нужна для вывода. Но дело в том, что с таким подходом получается так, что: 1. Для постов с одним автором информация дублируется лишние разы, что, как мне кажется, не очень хорошо 2. Если выводим посты циклом с fetch_assoc, то возникает необходимость передавать инфу о пользователе в какой-либо класс, который ее обработает для вывода (например, отдаст ссылку с иконкой пользователя или его соц. сети, итп итп). Соответсвенно в класс передается массив с полями-ключами пользователя. Но в этом же массиве есть еще информация о посте. Кажется, получается слишком жирно и избыточно. Может быть будет грамотнее как-либо отделять данные постов от данных пользователей и сопоставлять их друг-другу уже в скрипте на выводе (но тогда получится лишний запрос и лишний цикл для обработки)? |
|||
|
||||
cmygeHm |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 3.12.2008 Репутация: -1 Всего: -2 |
покажи пожалуйста print_r твоего результирующего массива, чтобы было более понятно как выглядят данные.
А вообще - это дело вкуса... Идеального кода не бывает. И опыт приходит со временем. Это сообщение отредактировал(а) cmygeHm - 24.8.2011, 14:58 |
|||
|
||||
bFree |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 9.11.2008 Репутация: нет Всего: нет |
Из БД текущим способом получаю такой массив:
Соответсвенно его кручу в foreach и вывожу Также в цикле передаю каждый элемент в метод другого класа для формирования ссылки на пользователя |
|||
|
||||
cmygeHm |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 3.12.2008 Репутация: -1 Всего: -2 |
например так:
А вообще лучше запрос к БД как-нить перебрать. Вопрос твой специфичен, опять же повторюсь: "А вообще - это дело вкуса... Идеального кода не бывает. И опыт приходит со временем." Можешь в кроне себе поставить задачу на год, чтобы через год сообщила, что этот кусок кода стоит пересмотреть ![]() ![]() Это сообщение отредактировал(а) cmygeHm - 24.8.2011, 17:33 |
|||
|
||||
Smorodin |
|
|||
![]() Добрейший ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 10.4.2006 Где: Пермь Репутация: нет Всего: 1 |
Когда выводил комментарии (штук 200), делал так: складывал ИД юзеров в массивчик, при обходе сообщений проверял наличие ИД юзера в массиве, если нет такого - добавлял. Потом 1 доп. запросом только к таблицам пользователей доставал инфу пользователей, чтобы повторяющиеся данные не хранить. Работало шустро, и код получился красивый.
-------------------- Сделать можно все, только вопрос - когда? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |