сортировка постов по просмотрам за сегодня, вчера, неделю, месяц

Smile

Старатель
Регистрация
12 Ноя 2006
Сообщения
157
Реакции
11
Добрый день,

нужно сделать сортировку постов по просмотрам за сегодня, вчера, неделю, месяц... не подскажите скрипт где это уже реализовано ? структуру баз данных...

Спасибо.
 
Слизком обширный вопрос. Вы используете самописный сайт или это движек?
Вообще для сортировки обычно в SQL запрос передается просто "ORDER BY {поле} DESC" полный синтаксис есть в мануалах.
 
Добрый день,

нужно сделать сортировку постов по просмотрам за сегодня, вчера, неделю, месяц... не подскажите скрипт где это уже реализовано ? структуру баз данных...

Спасибо.

Переделал наскоро из счетчика скачиваний файлов, но думаю несложно переделать под "просмотры". Могут быть мелкие ошибки.

----------------------------запрос для создания таблицы---------------------------------------------------
DROP TABLE IF EXISTS `download_manager`;
CREATE TABLE `download_manager` (
`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`filename` CHAR(255) NOT NULL DEFAULT '',
`down_date` DATE NOT NULL DEFAULT '0000-00-00',
`downloads` INT(11) NOT NULL DEFAULT '0'
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci AUTO_INCREMENT=1;

CREATE UNIQUE INDEX download_manager_Index1 ON download_manager(`down_date`,`filename`);

----------------------------запрос при скачивании файла---------------------------------------------------
$sql = "INSERT INTO download_manager SET down_date = CURDATE(), filename='".mysql_real_escape_string($file)."'
ON DUPLICATE KEY UPDATE downloads=downloads+1";

----------------------------запросы для выборки---------------------------------------------------
выборка за сегодня:
$sql = "SELECT downloads FROM download_manager WHERE down_date = CURDATE()";

выборка за вчера
$sql = "SELECT downloads FROM download_manager WHERE down_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND CURDATE()";

выборка за неделю
$sql = "SELECT SUM(downloads) FROM download_manager WHERE down_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE()";

выборка за месяц
$sql = "SELECT SUM(downloads) FROM download_manager WHERE down_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 MONTH) AND CURDATE()";
 
Необходимо реализовать сортировку новостей по популярности, соответственно есть clicks(кол-во кликов по оценкам) и marks(сумма всех оценок)
популярность же = marks/clicks
Решения вижу 2:
1) создать еще 1 поле, в которое записывать уже рейтинг, и по нему тупо сортировать
2) получать весь массив новостей, и функцией считать рейтинг, после чего сортировать пузырьком, а потом выводить.
Может кто подскажет, какой метод наиболее оптимальный, или предложит свой?
 
Назад
Сверху