Dzielenie na strony (nawigator)

Z PHPEdia.pl
Skocz do: nawigacji, wyszukiwania

Jak podzielić rekordy na X stron (nawigator)?

Często, gdy już potrafimy wyświetlać rekordy z bazy danych, mamy problem z podzieleniem ich na określoną ilość stron, przy czym na każdej ze stron ma być wyświetlanych X rekordów.

Zobacz również: Stronicowanie


Załóżmy, że nasz nawigator będzie współpracować z bazą MySQL. Oznaczmy zatem jako $X liczbę rekordów na jednej stronie, a zmiennej $strona przypiszmy to, na której stronie użytkownik aktualnie się znajduje (zmienna $strona otrzymywana jest z adresu). Nasz nawigator oprócz strony na której znajduje się obecnie użytkownik, będzie także wyświetlać pięć stron w przód.

Kod

<?php
 
$db = mysql_connect('host', 'uzytkownik', 'haslo');
mysql_select_db('baza', $db);
mysql_query("SELECT COUNT(*) AS ilosc FROM [tabela] WHERE [warunek]");
if( !is_int($ilosc/10) )
{
    $ile_stron = ceil($ilosc/10);
} elseif( is_int($ilosc/10) ) {
    $ile_stron = ($ilosc/10);
}
 
if( $ile_stron >= $_GET['id'] )
{
    print("(". $ile_stron .") [<a href = 'index.php?id=1'>Pierwsza</a>]... \n");
}
 
if( $ile_stron >= ($_GET['id']+1) )
{
    print("[<a href = 'index.php?id='". ($_GET['id']+1) ."'>". ($_GET['id']+1) ."] \n");
}
 
if( $ile_stron >= ($_GET['id']+2) )
{
    print("[<a href = 'index.php?id='". ($_GET['id']+2) ."'>". ($_GET['id']+2) ."] \n");
}
 
if( $ile_stron >= ($_GET['id']+3) )
{
    print("[<a href = 'index.php?id='". ($_GET['id']+2) ."'>". ($_GET['id']+3) ."] \n");
}
 
print("[<a href = 'index.php?id='". ($_GET['id']+4) ."'>". ($_GET['id']+4) ."] \n");
 
print("[<a href = 'index.php?id='". ($_GET['id']+5) ."'>". ($_GET['id']+5) ."] \n");
 
if( $ile_stron != '1' )
{
    print(" ...[<a href = 'index.php?id='". $ile_stron ."'>Ostatnia</a>]\n");
}
 
?>


Zasada działania skryptu:

1. W liniach 1 i 2 skrypt łączy się z bazę danych, a w linii 3 następuje wywołanie zapytania, które liczy ilość rekordów w tabeli

2. W liniach 4-10 następuje ustalenie ilości stron

3. W liniach 11-39 skrypt wyświetla w nawigatorze ilość oraz numery stron.