Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как реализовать модуль друзей
 
 автор: skydemon   (08.07.2012 в 22:25)   письмо автору
 
 

Подскажите (хотябы схематично) как примерно можно реализовать модуль друзей через Мускул а то у меня тупые идеи........

  Ответить  
 
 автор: Zezst   (09.07.2012 в 03:50)   письмо автору
 
   для: skydemon   (08.07.2012 в 22:25)
 

Немного подробнее плз, что вы называете модулем друзей?

  Ответить  
 
 автор: elenaki   (09.07.2012 в 12:26)   письмо автору
 
   для: skydemon   (08.07.2012 в 22:25)
 

логика: один пользователь хочет дружить с другим, посылает ему запрос на дружбу. в
таблицу users_freinds заносится запись user_id | freind_id. где user_id - id пользователя,
пославшего запрос, а freind_id - id пользователя, которому послан запрос. если адресат
предложение дружбы отклоняет, запись удаляется. если принимает, то в таблицу
заносится еще одна запись, где user_id - это уже id того пользователя, которому был
послан запрос на дружбу. в таблице users_freinds будут только целые числа, поиск
будет осуществляться быстро. из друзей всегда можно удалить кого-угодно без всякого
запроса. в этом случае удаляются сразу две записи, где присутсвуют id пользователя и
нежелательного "друга". это логично. любить может только одна сторона, в дружбе же
участвуют обе. нельзя сказать - "я с ним дружу, а он со мной нет".

CREATE TABLE `users_freinds` (
  `user_id` int(10) NOT NULL,
  `freind_id` int(10) NOT NULL
) ENGINE=MyISAM;

  Ответить  
 
 автор: Zezst   (09.07.2012 в 13:56)   письмо автору
 
   для: elenaki   (09.07.2012 в 12:26)
 

Что то мне кажется поиск будет быстрым при условии что таблица `users_freinds` будет не очень большой.
Может как вариант сделать для каждого юзверя отдельную таблицу c единственным полем `frend_id`.
Тогда поиск друзей юзверя сведется к чтению одной таблицы и всего один запрос к базе

$user = // получаем id пользователя
$frends[] = $user . mysql_query(`_frends`)
// код только для того что бы показать логику


user послал запрос на дружбу - сделали в его таблице (user_frends) запись в поле `frend_id`
user2 подтвердил - сделали запись в таблице (user2_frends) запись в поле `frend_id`

Хм. Задачка интересная. Чуть позже еще напишу вариант(ы) выборки. :)

  Ответить  
 
 автор: elenaki   (09.07.2012 в 15:25)   письмо автору
 
   для: Zezst   (09.07.2012 в 13:56)
 

по одной таблице даже с миллионом записей поиск будет гораздо быстрей, а вы таблицами на каждого юзера просто замусорите базу. и причем тут один запрос? я где-то делала больше?

  Ответить  
 
 автор: skydemon   (09.07.2012 в 18:25)   письмо автору
 
   для: elenaki   (09.07.2012 в 15:25)
 

я вообще планировал тупо создать в таблице users еще 10 полей friend1 friend 2 и тд.....
хотя таблицу которую показали вы мне очень понравилась даже пришла идея как можно это реализовать:

1 позьзователь отправляет запрос на добавление ( заносим в таблицу user_friend в поле приема цифру 0 (тоесть ещё не принят но отправлен) когда пользователь 2 принимает запрос то записываем в поле приема индификатор 1 что значит добавлен в друзья
тогда в таблице получается 3 поля:

user_id | friend_id | identifiers ну и дальше группа например)

  Ответить  
 
 автор: Zezst   (11.07.2012 в 01:12)   письмо автору
 
   для: elenaki   (09.07.2012 в 15:25)
 

Ну да. Прошу прощения. Видимо во мне говорит бывший спектрумист, писал раньше на ассемблере, и часто приходилось выбирать, либо скорость, либо занимаемый объем.
Но все же для компьютера считать файл, задача более быстрая чем считать и сделать в нем вычисление. Это с одной стороны.
А с другой – обработчик php сработает все равно медленнее, чем выборка по базе. Так что да.
Тут я не прав. :)
Ну а еще варианты:
Списки друзей можно хранить в файлах. Имя файла = login (типа не мусорить в базе).
Если друзей подразумевается не много - хранить в отдельном поле базы массив друзей (тут тоже, типа ускорение, за счет того что не надо делать выборку. Все в одном месте и даже таблица не потребуется)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования