После авторизации Вы получите доступ к файлам, скрытым материалам сайта, исходным кодам
возможность комментировать и т.д.

Вы можете авторизоваться на сайте всего одним кликом:

2016-07-08
SQL → Установка лимитов
Счетчик просмотров, Вывести определенное количество записей

Часто бывает так, что в большой таблице вас интересуют всего несколько за­писей...

Установка лимитов SQL

Допустим, вы захотели отслеживать на сайте популярность материалов. Для этого добавьте в таблицу material столбец timesviewed и задайте в нем для каждого нового материала значение, равное нулю, а при каждом просмотре увеличьте это значение на единицу. Таким образом вы получите информацию о том, сколько раз пользователи прочитали тот или иной материал, находящийся в вашей базе данных. Вот как вы глядит код, добавляющий единицу к значению из столбца timesviewed, которое принадлежит материалу с заданным идентификатором:

try
{
   $sql = 'UPDATE material SET timesviewed = timesviewed + 1 WHERE id = : i d ' ;
   $s = $pdo->prepare($sql);
   $s->bindValue(':i d ' , $id);
   $s->execute();
}
catch (PDOException $e)
{
   $error = 'Ошибка при обновлении информации о количестве просмотров материала.';
   include 'error.php';
   exit();
}

Этот счетчик пригодится для вывода десяти самых популярных материалов на стартовой странице вашего сайта. Отсортировав материалы по популярности в порядке убы вания значений из столбца timesviewed (ORDER BY timesviewed DESC), вы возьмете только первые десять записей в списке. Предположим, что в базе данных находятся около тысячи материалов — извлекать их все только ради десяти результатов довольно расточительно с точки зрения времени на обработку запроса и рацио нального использования системных ресурсов сервера, таких как загрузка памяти и центрального процессора.

Ограничение результатов запроса

Воспользуйтесь оператором LIMIT, чтобы указать точное количество возвра щаемых результатов. В нашем примере нужно только десять первых:

SELECT material.id, materialtext, name, email
   FROM material INNER JOIN author
   ON authorid = author.id
   ORDER BY timesviewed DESC
   LIMIT 10

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

Иногда длинные списки, полученные в результате поиска, удобнее просматри вать, если одновременно отображается только определенное количество записей. Вспомните, как вы в последний раз пытались найти нужный сайт, пролистывая страницы с ссылками, выданными поисковой системой. Для подобных действий ис пользуется оператор LIMIT: просто укажите место, с которого станут отсчитываться записи, и максимальное количество отображаемых результатов. Представленный ниже запрос выводит список самых популярных материалов в базе данных, начиная с 21-й и заканчивая 25-й:

SELECT material.id, materialtext, name, email
   FROM material INNER JOIN author
   ON authorid = author.id
   ORDER BY timesviewed DESC
   LIMIT 20, 5

Обратите внимание, что нумерация записей в списки начинается с нуля, по этому 21-я запись в списке идет под номером 20.

520
0
Пожалуйста, авторизируйтесь, чтобы скачать архив с файлами урока