Запрос к БД

Тема в разделе "PHP", создана пользователем yeaahhh, 21 июл 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Ребят. Делаю систему друзей на сайте.. Подскажите, как лучше сделать?

    Концепция такова:
    У каждого пользователя в БД, в графе fav записаны цифры через запятую (пример: 1,5,9,11). Цифра соответствует id пользователя, его друга.
    Т.е. это его друзья..

    Вопрос: каким способом можно вывести всех этих друзей, чтобы отображались их аватарки и т.п.?

    Что-то очень уж много получается запросов к БД..
     
  2. Juri

    Juri

    Заблокирован
    Регистр.:
    5 окт 2007
    Сообщения:
    1.065
    Симпатии:
    197
    одним запросом забираете его друзей, получаете строку в которой через запятую указаны ид друзей. есть функция explode она вам засунет все эти ид в массив.

    но будет интересно когда у меня станет 500 - 1000 друзей, хотя если сайт маленький то вам это не грозит

    более оптимальный вариант создать отдельно таблицу в которой будут храниться ид друзей что то типа такой структуры id - id_user - id_frend где в id_user будет лежать ид пользователя а в id_frend ид его друзей. забирать можно так
    select * FROM frend WHERE id_user = '$ID' как по мне оптимальный вариант Оптимальный вариант
     
    yeaahhh нравится это.
  3. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Juri, согласен с Вами.. Но основная запара у меня с тем, что не понимаю, как лучше вытащить аватар пользователя.. нужно делать запросы в цикле, где id=вытащенная цифра с помощью explode? очень много нагрузки же.. Не подскажете, как быть?)
     
  4. blizz123

    blizz123 Читатель

    Заблокирован
    Регистр.:
    25 апр 2010
    Сообщения:
    99
    Симпатии:
    17
    запросы в цикле ни в коем случае не делай и explode не юзай, так дольше намного

    сделай лучше реально 2 таблицы, одна - users, другая - friends (которая содержит группы друзей)

    в таблице users в столбце fav - groupid группы друзей в таблице friends. таблица friends например имеет такую структуру: id, groupid, userid. может быть много записей с одним groupid, имеющих разный userid
     
  5. WorldsSpawn

    WorldsSpawn Создатель

    Регистр.:
    30 мар 2009
    Сообщения:
    15
    Симпатии:
    12
    Если аватарка загружается юзером, то почему бы ее не назвать именем пользователя, либо ID.. от запроса избавишься
     
  6. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    PHP:
    // $id содержит идентификатор нужного пользователя
    $result mysql_query ("select * from users where id='$id'");// выбираем юзера, чтобы получить его френдов 
    if ($r mysql_fetch_array ($result))
    {
       
    $result mysql_query ("select * from users where fav in ($r[fav])"); // в поле fav иды френдов должны идти через запятую! как и описано в задаче выше
       
    while ($r mysql_fetch_array ($result))
       {
          
    $id $r["id"]; // Поле с идентификатором в базе называется id. если по другому - поправить в кавычках его имя
           
    ................ какие то действия с полученным идентификатором друга.............
       } 
    }
     
Статус темы:
Закрыта.