Максим К, очень даже задание. Под бутстрап быстро не перенести, т.к. верстка вашего примера в таблице, бутстрап на блочных элементах. Ссылка на Bootstrap. Читать мануал, переверстать под бутстрап
select
`id_user`
,sum(case when `status` = 1 then 50 else 0 end) - sum(case when `status` = 2 then 30 else 0 end)
from news
WHERE MONTH(`date`) = 3 AND YEAR(`date`) = 2019
group by 1
order by 2 desc, 1 asc
LIMIT 50
Nikita Kravchenko, нет. Один запрос, который тебе даст топ 50 по рейтингу новостей. Меняя условие в where ты можешь выбирать и по диапазону месяца, года и как захочешь
Nikita Kravchenko, под каждого юзера своя строка. Но реализация с таблицей рейтинга не лучшее решение, если не планируешь проект держать больше года, т.к. проблематично делать переход на новый год. Лучше смотри в строну запроса по таблице новостей и считать рейтинг запросом
Nikita Kravchenko, таблица с рейтингом создаётся по твоему усмотрению и логику апдейтов делаешь как душе угодно. Можешь ввести одно поле месячного рейтинга и обнулять его каждый месяц + год, можешь ввести 12 полей месяца
ZakkMalin, для начала определить цель проекта, задачи. Если есть желание разделить бэк и фронт выбрать платформы.(express + react или vue.js - нынче актуальные решения). Если хочется скорее в бой, взять laravel (либо другой пых-фреймворк) и писать проект используя возможности этого инструмента. Информации в интернете предостаточно, главное знать, как найти. Например CRUD Laravel, SPA React