![]() |
| Home | Это обо мне | Аватары | Фэнтези | Афоризмы | Спонсорам | Подписаться на RSS | ||||
Category
Archives |
« Next Item: Бейсбол с пингвинами Previous Item: Userpic Creator » Данные за последние N дней (запрос MySQL)
Памятка. Недавно вот баловался с плагинов для WordPress: Most Recent Post. Вообще, там все реализовано правильно – наиболее недавние заметки, т.е. сортировка по дате. Но это же не интересно. На главной странице блога тоже самое. Как по мне, более интересным может быть: Most Popular Post. Как определить какой пост наиболее популярен? Вопрос достаточно сложный. Можно установить плагин подсчета количества просмотров (даже уников) заметки и сортировать по этому значению, а можно использовать количество отзывов, но тогда придется воспользоваться сторонним источником данных. Наиболее простым, может быть использование количества комментариев. В любом случае, дабы поддерживать новизну, лучше ограничить выборку заметок за последние N дней. К примеру, последние 30 или даже 60 дней, в зависимости от того как часто вы публикуете заметки. Как все это сделать? Начну с конца. WHERE TO_DAYS(NOW()) — TO_DAYS(post_date) <= 30 Это часть запроса к базе данных MySQL, которая от текущей даты NOW() отнимает дату создания заметки post_date, при этом переведя дату в количество дней функцией TO_DAYS(), ну и условие что полученное значение меньше или равно 30 дням. Таким образом мы ограничиваем выборку заметок за последние 30 дней. Сортировка по количеству комментариев: ORDER BY comment_count DESC При этом, учитывайте, что я основывался на структуре базы данный WordPress 2.x.x, но общая идея думаю понятна. Честно говоря, эту идею я позаимствовал из фишек к шаблонам движка inTerra, но ограничение выборки за определенный период нашел где-то в Интернете. Так что думаю вариантов много. Для тех же кому интересно накропать свой Most Popular Post, вот общий вид этого решения: <php
$request = "SELECT *
FROM $wpdb->posts
WHERE
post_status = 'publish' AND
post_type = 'post' AND
post_password = '' AND
TO_DAYS(NOW()) - TO_DAYS(post_date) <= 30
ORDER BY comment_count DESC
LIMIT 10";
$posts = $wpdb->get_results($request);
if (have_posts()) :
while (have_posts()) : the_post();
?>
…
<php endwhile; endif; ?>
Думаю, все просто и понятно. Выборка идет с дополнительными ограничениями: заметка опубликована, тип документа – заметка и заметка без пароля. Плюс не более 10 записей в результате запроса. Дальше можно пользоваться стандартными функциями по отображения заметки и т.п. Спасибо за внимание.
Leave a replyOne Response for "Данные за последние N дней (запрос MySQL)"
|
Popular links |
||
| Copyright © since 2006 Курилка.co.ua, powered by WordPress |
|
publish: Воскресенье Ноя 27, 2011 at 2:47 пп
Лучше так
SELECT * FROM post WHERE post_date > NOW() — INTERVAL 30 DAY;