Просмотр событий у друзей. (Rating: +6)
Статью писал для своего сайта, но по некоторым причинам решил все свои статьи перезалить сюда (что бы не утерять)!
Думаю все видели во многих социальных сетях такую штуку как "События у друзей".
Я хотел бы показать простейшую реализацию данной задачи...
Для этого нам нужно создать три таблицы:
С таблицами вроде все! Теперь перейдем программному коду:
Теперь можем приступить к запросу с необычной выборкой:
И выводим результат выполнения запроса:
Вот что у меня получилось:
Пользователь Вася, Добавил комментарий
Пользователь Вася, Добавил фотографию
Пользователь Вася, Удалил комментарий
Пользователь Петя, Удалил фотографию
Added: Nu3oN
16.11.2011 / 20:17Думаю все видели во многих социальных сетях такую штуку как "События у друзей".
Я хотел бы показать простейшую реализацию данной задачи...
Для этого нам нужно создать три таблицы:
-- -- Список событий -- 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 />'; }
Вот что у меня получилось:
Пользователь Вася, Добавил комментарий
Пользователь Вася, Добавил фотографию
Пользователь Вася, Удалил комментарий
Пользователь Петя, Удалил фотографию
Rating:
+6
Views: 1441Comments (4) »