[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как узнать подписчик ты или автор?
N0ob
Всем привет. Я вытаскиваю видео из БД вот таким макаром:
$query = Database::query("SELECT `picture`, `name`, `id` FROM `fg5k_videos` WHERE `author`='user:".$_SESSION['id']."' or `subscribers` LIKE '%user:".$_SESSION['id']."%' LIMIT 3");

То есть вытаскиваю видео из БД где я автор или если я подписан на это видео. Вот собственно вопрос. Мне нужно отпределить, подписчик я или я автор? У меня были такие мысли:
$query = Databse::query("SELECT `picture`, `name`, `id`, `author` FROM `fg5k_videos` WHERE `author`='user:".$_SESSION['id']."' or `subscribers` LIKE '%user:".$_SESSION['id']."%' LIMIT 3");
$row = mysql_fetch_assoc();
if($row['author'] == "user:".$_SESSION['id'])
{
echo "автор я";
}
else
{
echo "Я подписчик группы:" . str_replace("group:", "", $row['author']);
}

Но мне кажется что это никуда не годится. Или годится? можно ваш совет?
P.S Извините за такой холивар, но для меня это вопрос стоящий)
kaww
тут никуда не годится организация БД. почему autor это не инт?, like по шаблону %text - не использует индексы, Для подписчиков: нужно завести отдельную таблицу в которой их хранить (это будет быстрее чем like) если и этого не хватает, тогда, например, дублирование записей для каждого пользователя.

Что касается вопроса, то

select if(author='user:{$_SESSION['id']}',1,0) as is_author, `picture`, `name`, `id`, `author`
FROM `fg5k_videos`
WHERE `author`='user:".$_SESSION['id']."' or `subscribers` LIKE '%user:".$_SESSION['id']."%' LIMIT 3
N0ob
kaww организация БД такова. У меня для видео есть 2 спец поля. Автор и его подписчики. В поле Автор заноситься либо user:1 либо group:1, где 1 это id юзера либо группы автора этой записи. Так же и с полем подписчиков. Это я сделал что бы когда юзер захочет добавить видео другого юзера себе в видеозаписи, я этого юзера просто добавлю в подписчики и все.
P.S То есть ты рекомендуешь использовать отдельную БД для подписчиков?
N0ob
Цитата
P.S То есть ты рекомендуешь использовать отдельную БД для подписчиков?

Ну так как?
kaww
Цитата (N0ob @ 16.05.2013 - 17:05)
Ну так как?

?это ведь ясно из предыдущего поста. Еще имхо не нужно делать user:1 а разделить на два поля: тип сущности и ид, так же и для подписчиков, т.е. таблица подписчиков будет такой:
Цитата
|  video_id  |    entity_id  |    entity_type    |

, где entity_type - 1 - user, 2-group, etc
N0ob
То есть можно так:
id   id_user   type
1 1 user
2 7 group
//.......

И т.д.
N0ob
kaww, слушай, в чем ошибка?
SELECT `fg5k_videos`.`picture`, `fg5k_videos`.`name`, `fg5k_videos`.`id` FROM `fg5k_videos` LEFT JOIN `fg5k_video_subscribers` WHERE `fg5k_videos`.`author`='user:1' or (`fg5k_video_subscribers`.`id_sub`='1' AND `fg5k_video_subscribers`.`type`='user') LIMIT 3

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `fg5k_videos`.`author`='user:1' or (`fg5k_video_subscribers`.`id_sub`='1' ' at line 1

Что не так? вроде с синтаксисом все норм ;)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.