Вы должны использовать LIMIT
в своем запросе, чтобы указать базе данных, сколько строк вы хотите и с чего начать.
Передайте параметр, который сообщает сценарию, что вам нужен еще один фрагмент результатов, а не только первый пакет.
Таким образом, для ссылки вы можете передать параметр page
:
example.com/results.php?page=2
Где page=
сообщит сценарию, какую страницу вы хотите вернуть.
Тогда вы захотите LIMIT
количество строк, возвращаемых каждый раз, чтобы у вас была согласованная подкачка.
$results_cnt = 100; //--rows you want per page of results
Теперь в вашем скрипте вы проверите, установлена ли переменная page
. Если нет, по умолчанию начальная строка возвращается с первой. Но так как вы хотите возвращать разные страницы / наборы результатов, вам нужно немного математики, чтобы начать с правильной строки.
if(isset($_GET["page"]) //--see if the variable is even there
{
$page_num = (int)$_GET["page"]; //--forcing it to always be an integer
$start_row = $results_cnt * ($page_num - 1);
/* --
what happens:
($results_cnt currently at 100)
on page one (page=1), start at row 0
math: 100 * (1 - 1) = 0
on page two (page=2), start at row 100
math: 100 * (2 - 1) = 100
on page three (page=3), start at row 200
math: 100 * (3 - 1) = 200
etc.
*/
}
else
$start_row = 0;
Теперь, установив правильную начальную строку, настройте SQL-запрос на использование переменных следующим образом:
$r = mysql_query("SELECT *, votes_up - votes_down AS effective_vote
FROM `$table[0]`
WHERE site != ''
ORDER BY effective_vote DESC
LIMIT $start_row, $results_cnt");
Каждый раз, когда вы нажимаете на страницу, он проверяет, есть ли $_GET["page"]
. Если нет, то дисплей из первого ряда. Если это так, проведите математику и определите, сколько строк нужно передать, и покажите следующую страницу.