Answer the question
In order to leave comments, you need to log in
How to properly parse the data?
Let's say I have the following website:
Where:
Answer the question
In order to leave comments, you need to log in
Я не большой специалист по базам данных, но, кажется, реализация сильно зависит от количества новостей, которое вы предвидите.
Если их будет мало (до 1-5 тысяч, скажем) то можно обойтись 2 запросами:
например, сначала выбрать новости для первого блока (ORDER BY date DESC LIMIT 4)
вторым запросом выбрать все новости ORDER BY date DESC (можно добавить WHERE id NOT IN(тут idшники из первого запроса))
создадим массив $blocks и вложенные массивы $blocks["$category_id"] = array(); (по количеству нужных нам блоков-категорий)
заполнить блоки:
n = 5;
foreach ($news as $news_item) {
$category_id = $news_item['category_id'];
foreach ($blocks as $block_category_id=>$block_news)
{
if ($category_id == $block_category_id && count($block_news) < n)
{
$block_news[] = $news_item;
break;
}
}
}
Берете redis, при добавлении статьи пихаете ее ид в list нужной категории, в котором храните последних 10 или сколько там вам надо
redis.io/commands/lpush добавлять
redis.io/commands/ltrim чистить лишнее
redis.io/commands/lrange выбирать
Тоесть будет несколько списков с названиями latest:category:1, latest:category:2 итд
Потом просто выбираете по n идишников из нужных и тасуете как хотите, можете чекать дубли итп.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question