Просмотр событий у друзей.

Статью писал для своего сайта, но по некоторым причинам решил все свои статьи перезалить сюда (что бы не утерять)!

Думаю все видели во многих социальных сетях такую штуку как "События у друзей".
Я хотел бы показать простейшую реализацию данной задачи...

Для этого нам нужно создать три таблицы:
--
-- Список событий
--

CREATE TABLE IF NOT EXISTS `events` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL COMMENT 'Пользователь, чье событие.',
  `text` text NOT NULL COMMENT 'Описание события.',
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  FULLTEXT KEY `text` (`text`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;

--
-- Список друзей
--

CREATE TABLE IF NOT EXISTS `friends` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_one` int(11) NOT NULL COMMENT 'ID пользователя чей друг.',
  `user_two` int(11) NOT NULL COMMENT 'ID пользователя кто друг.',
  PRIMARY KEY (`id`),
  KEY `user_one` (`user_one`,`user_two`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;


--
-- Список пользователей сайта
--

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(15) NOT NULL COMMENT 'Имя пользователя',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;

С таблицами вроде все! Теперь перейдем программному коду:
<?php
/* * Подключаемся к базе данных. */
mysql_connect('localhost', 'user', 'pass');
mysql_select_db('events');
/* * Указываем кодировку utf8 по умолчанию. */
mysql_query('SET NAMES utf8');

Теперь можем приступить к запросу с необычной выборкой:
<?php
$query = mysql_query("SELECT e.`text`, u.`name`  
                     FROM `events` e, `users` u, `friends` f 
                     WHERE f.`user_one` = {$id} 
                     AND e.`user_id` = f.`user_two` 
                     AND u.`id` = f.`user_two` 
                     ORDER BY e.`id` ASC;");

И выводим результат выполнения запроса:
<?php
while ($row = mysql_fetch_assoc($query)) {
	echo 'Пользователь <b>'.$row['name'].'</b>, '.$row['text'].'<br />';
}

Вот что у меня получилось:

Пользователь Вася, Добавил комментарий
Пользователь Вася, Добавил фотографию
Пользователь Вася, Удалил комментарий
Пользователь Петя, Удалил фотографию

URL: https://visavi.net/articles/364