| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Как правильно: получить информацию об авторе поста |
| Автор: bFree 24.8.2011, 13:00 |
| Здравствуйте Столкнулся с вопросом из разряда "как грамотнее" Допустим, что есть посты (форум, гостевая книга, комментарии) Соответсвтенно в БД для каждого поста хранится айдишник автора. До этого момента вытягивал из бд все что нужно примерно вот так: SELECT * FROM posts LEFT JOIN user ON post_author = user_id Соответственно получал для каждого поста и инфу о пользователе, которая нужна для вывода. Но дело в том, что с таким подходом получается так, что: 1. Для постов с одним автором информация дублируется лишние разы, что, как мне кажется, не очень хорошо 2. Если выводим посты циклом с fetch_assoc, то возникает необходимость передавать инфу о пользователе в какой-либо класс, который ее обработает для вывода (например, отдаст ссылку с иконкой пользователя или его соц. сети, итп итп). Соответсвенно в класс передается массив с полями-ключами пользователя. Но в этом же массиве есть еще информация о посте. Кажется, получается слишком жирно и избыточно. Может быть будет грамотнее как-либо отделять данные постов от данных пользователей и сопоставлять их друг-другу уже в скрипте на выводе (но тогда получится лишний запрос и лишний цикл для обработки)? |
| Автор: cmygeHm 24.8.2011, 14:42 |
| покажи пожалуйста print_r твоего результирующего массива, чтобы было более понятно как выглядят данные. А вообще - это дело вкуса... Идеального кода не бывает. И опыт приходит со временем. |
| Автор: bFree 24.8.2011, 15:03 | ||
Из БД текущим способом получаю такой массив:
Соответсвенно его кручу в foreach и вывожу Также в цикле передаю каждый элемент в метод другого класа для формирования ссылки на пользователя |
| Автор: cmygeHm 24.8.2011, 17:32 | ||
например так:
А вообще лучше запрос к БД как-нить перебрать. Вопрос твой специфичен, опять же повторюсь: "А вообще - это дело вкуса... Идеального кода не бывает. И опыт приходит со временем." Можешь в кроне себе поставить задачу на год, чтобы через год сообщила, что этот кусок кода стоит пересмотреть |
| Автор: Smorodin 2.9.2011, 13:25 |
| Когда выводил комментарии (штук 200), делал так: складывал ИД юзеров в массивчик, при обходе сообщений проверял наличие ИД юзера в массиве, если нет такого - добавлял. Потом 1 доп. запросом только к таблицам пользователей доставал инфу пользователей, чтобы повторяющиеся данные не хранить. Работало шустро, и код получился красивый. |