За последние 24 часа нас посетил 18021 программист и 1654 робота. Сейчас ищут 1168 программистов ...

Правильное получение информации об авторе

Тема в разделе "Прочие вопросы по PHP", создана пользователем vladqa, 23 авг 2011.

  1. vladqa

    vladqa Активный пользователь

    С нами с:
    13 янв 2011
    Сообщения:
    27
    Симпатии:
    0
    Здравствуйте
    Столкнулся с вопросом из разряда "как грамотнее"
    Допустим, что есть посты (форум, гостевая книга, комментарии)
    Соответсвтенно в БД для каждого поста хранится айдишник автора.
    До этого момента вытягивал из бд все что нужно примерно вот так:
    SELECT * FROM posts LEFT JOIN user ON post_author = user_id

    Соответственно получал для каждого поста и инфу о пользователе, которая нужна для вывода.

    Но дело в том, что с таким подходом получается так, что:
    1. Для постов с одним автором информация дублируется лишние разы, что, как мне кажется, не очень хорошо
    2. Если выводим посты циклом с fetch_assoc, то возникает необходимость передавать инфу о пользователе в какой-либо класс, который ее обработает для вывода (например, отдаст ссылку с иконкой пользователя или его соц. сети, итп итп). Соответсвенно в класс передается массив с полями-ключами пользователя. Но в этом же массиве есть еще информация о посте. Кажется, получается слишком жирно и избыточно.

    Может быть будет грамотнее как-либо отделять данные постов от данных пользователей и сопоставлять их друг-другу уже в скрипте на выводе?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    можно загрузить все посты, выбрать айдишники авторов, сделать array_unique и выбрать авторов `id` IN(эти айдишники)
     
  3. vladqa

    vladqa Активный пользователь

    С нами с:
    13 янв 2011
    Сообщения:
    27
    Симпатии:
    0
    igordata
    Вот!
    Вот это то, о чем я и хотел спросить.
    Но оправданно ли такое уложнение? И чем чревато? Потому как получится двумерный массив вида:
    Код (Text):
    1.  
    2. [0] => array (
    3.     [user_id] = 1,
    4.     ....
    5.     )
    6. [1] => array (
    7.     [user_id] = 2,
    8.     ....
    9.     )
    10. ....
    Соответственно еще надо будет для каждого поста крутить этот массив в цикле и искать автора по айдишнику