Запрос к БД

Статус
В этой теме нельзя размещать новые ответы.

yeaahhh

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

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

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

Что-то очень уж много получается запросов к БД..
 
  • Заблокирован
  • #2
одним запросом забираете его друзей, получаете строку в которой через запятую указаны ид друзей. есть функция explode она вам засунет все эти ид в массив.

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

более оптимальный вариант создать отдельно таблицу в которой будут храниться ид друзей что то типа такой структуры id - id_user - id_frend где в id_user будет лежать ид пользователя а в id_frend ид его друзей. забирать можно так
select * FROM frend WHERE id_user = '$ID' как по мне оптимальный вариант Оптимальный вариант
 
Juri, согласен с Вами.. Но основная запара у меня с тем, что не понимаю, как лучше вытащить аватар пользователя.. нужно делать запросы в цикле, где id=вытащенная цифра с помощью explode? очень много нагрузки же.. Не подскажете, как быть?)
 
  • Заблокирован
  • #4
Juri, согласен с Вами.. Но основная запара у меня с тем, что не понимаю, как лучше вытащить аватар пользователя.. нужно делать запросы в цикле, где id=вытащенная цифра с помощью explode? очень много нагрузки же.. Не подскажете, как быть?)
запросы в цикле ни в коем случае не делай и explode не юзай, так дольше намного

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

в таблице users в столбце fav - groupid группы друзей в таблице friends. таблица friends например имеет такую структуру: id, groupid, userid. может быть много записей с одним groupid, имеющих разный userid
 
Если аватарка загружается юзером, то почему бы ее не назвать именем пользователя, либо ID.. от запроса избавишься
 
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. если по другому - поправить в кавычках его имя
       ................ какие то действия с полученным идентификатором друга.............
   } 
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху