Есть сайт с добавлением постов и есть лента этих самых постов. Любой юзер может подписаться на обновления других юзеров, и подписаться на определенные теги. В ленте новостей соответственно должны выводиться посты юзеров, на которых подписан пользователь, и посты с тегами, на которых подписан пользователь. Причём эти посты должны сортироваться по дате добавления и выводиться по 20 штук. Когда пользователь дойдёт до самого низа страницы, должны будут подгрузиться ещё 20 постов.
Как же это можно реализовать?
KorniloFF, Да это и так понятно. Просто связи тегов с постами в одной таблице, подписки на юзеров во второй, подписки на теги в третьей, а сами посты в четвёртой. Как это все скомпоновать?
Егор Овчинников, тут уже другой вопрос: как скомпоновать ответ сервера.
Нужно именно с серверной стороны всё подготовить, а уж отдать клиенту в ленту - плёвое дело.
Егор Овчинников, мне кажется, если вы знакомы с принципами баз данных, с принципами ajax, то в целом это и так должно быть понятно.
1). Спроектируейте базы данных.
2). Отправляйте в запросе id юзера и номер страницы (номер нижнего выведенного поста)
3). Сервер подбирает из БД по статьи согласно подписки юзера, сортирует их и отдаёт.
Общая схема понятна и так, остальное — многочисленные и обширные детали.
Николай Чуприк, дак он и так выдергивает все нужные посты с бд, сортирует их и отдаёт. Но при использовании аякс придётся делать лимиты на выдаваемые посты, а так как таблиц у меня 4(связи тегов с постами,подписки на юзеров, подписки на теги, и собственно сами посты) то отправить один лимит всем базам не получится
Егор Овчинников, Лимит нужен в самую последнюю очередь, когда вы выбираете статьи из базы. Разумеется, выбирать пользователя, тэги нужно без всяких лимитов. Ну или вообще режьте массив отдаваемых сервером статей прямо перед отправкой. Вы так говорите, будто сервер сам всё делает, помимо вашей воли.
Николай Чуприк, так я же не могу просто обратиться к таблице с постами и поставить лимит. Мне нужно:
1. выдернуть id юзеров, на которых подписан пользователь, затем нужно для каждого юзера найти все посты который написал юзер с этим id.
2. выдернуть все теги, на которых подписан пользователь. Затем для каждого тега найти все посты, связанные с ним.
Исходя из этого я совсем не понимаю как сделать лимит.
Разумеется, выбирать пользователя, тэги нужно без всяких лимитов.
Все-же лимиты можно, а на больших таблицах даже НУЖНО проставить. Старше такойто даты, 20 штук.
Тогда максимум в выборке будет 80 постов, а не 100500.
Ну и теоретически это еще в бд можно объеденить через union, например, отсортировать и вернуть только 20 нужных.
так я же не могу просто обратиться к таблице с постами и поставить лимит. Мне нужно:
1. выдернуть id юзеров, на которых подписан пользователь, затем нужно для каждого юзера найти все (почему все?) посты который написал юзер с этим id.
2. выдернуть все теги, на которых подписан пользователь. Затем для каждого тега найти все (почему все?) посты, связанные с ним.
SELECT title, text, date FROM table1
UNION
SELECT title, text, date FROM table2
UNION
SELECT title, text, date FROM table3
UNION
SELECT title, text, date FROM table4
Не? Это я открул ту самую гуглоссылку с примерами и сделал вместо двух строчек четыре.
Каждому из этих запросов можно свои where написать, лимиты, джоины и все такое.