Сортировка списка отзывов в хронологическом порядке
-
19-08-2019 - |
Вопрос
Я пытаюсь отсортировать список обзоров фильмов в хронологическом порядке. У нас есть два варианта выбора: хронологический и алфавитный. По умолчанию страница имеет алфавитный формат, но когда люди нажимают на хронологический вариант, ничего не происходит.
Вот код, который мы имеем сейчас:
// category 3 is 'reviews', category 12 is 'dvd reviews'
if (($GLOBALS["CategoryId"] == 3 || $GLOBALS["CategoryId"] == 12) && !isset($_GET['unsort']))
{
$output = AL_HELPER::GetArticles($articleResult);
}
else
{
$output = AL_HELPER::GetArticlesABC($articleResult);
}
То, что я сделал, было триггером два ifs. Сначала ставим GetArticles, а потом GetArticlesABC - это выглядит следующим образом:
// category 3 is 'reviews', category 12 is 'dvd reviews'
if (($GLOBALS["CategoryId"] == 3 || $GLOBALS["CategoryId"] == 12) && !isset($_GET['unsort']))
{
$output = AL_HELPER::GetArticlesABC($articleResult);
}
else
{
$output = AL_HELPER::GetArticles($articleResult);
}
Он действительно сортировал обзоры в хронологическом порядке, но он убрал все алфавитные варианты. По сути это был длинный список хронологических обзоров. Очевидно, это не то, что мы хотим.
Кто-нибудь знает, как ограничить количество элементов, перечисленных на странице? Или, может быть, здесь нужен совершенно другой подход, если да, то какие-нибудь предложения?
Решение
Ограничение количества результатов на странице, если используется внутренняя база данных и SQL, так же просто, как использование оператора LIMIT для получения только заданного количества результатов. Затем вы можете реализовать следующие / предыдущие операции, передавая переменную между страницами, которая относится к набору результатов, которые вы извлекли.
Например:
SELECT <Whatever> FROM <review table> LIMIT 0,10
Получит первые 10 результатов.
SELECT <Whatever> FROM <review table> LIMIT 10,20
Извлечет следующие 10. Подставляя числа с переменными, вы можете добиться нумерации страниц:
SELECT <Whatever> FROM <review table> LIMIT resultIndex,resultIndex+10