Просмотр событий у друзей. (Рейтинг: +6)

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

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

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

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 />';
}

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

Пользователь Вася, Добавил комментарий
Пользователь Вася, Добавил фотографию
Пользователь Вася, Удалил комментарий
Пользователь Петя, Удалил фотографию
Добавил:
Рейтинг: +6
Просмотры: 1445
Комментарии (4) »