2000 plikow html ?!
Tak jak napisał @nospor
takie rzeczy robione sa w jednym pliku a skrypt który to obsługuje zajmuje parenaście linijek w miare prostego kodu.
po pierwsze to pokaż to co napisałeś i Ci nie działa.
Paginacja polega na tym, że (wszystko w jednym dokumencie) wszystko pobierane jest z bazy a sam momen przejscia pomiędzy stronami to po prostu zwyła zmiana zapytania o przedział wyswietlanych rekordów. Paginacje robi się w ten sposób, że najpierw pobierasz ilosc wszystkich rekordów z bazy danych i dzielisz to z zaokrągleniem przez ilość produktów ktore maja pojawić się na stronie = wynik ten daje Ci ilosc wszystkich stron. Klikniecie w strone np numer 2, przekazuje do skryptu infomracje z jakiego przeziału mają teraz zostać wybrane rekordy. Dla strony pierwszej będzie to przedział np od 0 do 10, dla strony 2 bedzie to od 10 do 20 itd.
Najlepiej to zobrazowac na skrypcie:
<?php
//musimy wyciągnąć z bazy informacje o ilości postów ogólnie do wyliczenia ilości stron
//celowo nie kożystamy z SQL_CALC_FOUND_ROWS, bo zależy nam na zabezpieczeniu się przed wś****skimi
//użytkownikami, którzy zmodyfikują url i będą chcieli wejść na stronę jaka nie istnieje
$query = "SELECT COUNT(*) as all_posts FROM news";
$onpage = 5; //ilość newsów na stronę
$navnum = 7; //ilość wyświetlanych numerów stron, ze względów estetycznych niech będzie to liczba nieparzysta
$allpages = ceil($all_posts/$onpage); //wszysttkie strony to zaokrąglony w górę iloraz wszystkich postów i ilości postów na stronę
//sprawdzamy poprawnośc przekazanej zmiennej $_GET['page'] zwróć uwage na $_GET['page'] > $allpages
if(!isset($_GET['page']) or
$_GET['page'] > $allpages or
!is_numeric($_GET['page']) or
$_GET['page'] <= 0
){ $page = 1;
}else{
$page = $_GET['page'];
}
$limit = ($page - 1) * $onpage; //określamy od jakiego newsa będziemy pobierać informacje z bazy danych
$query = "SELECT * FROM news ORDER BY id DESC LIMIT $limit, $onpage";
echo "<h1>".$row['title']."</h1>"; echo "<p>".$row['content']."</p>"; }
//zabezpieczenie na wypadek gdyby ilość stron okazała sie większa niż ilośc wyświetlanych numerów stron
if($navnum > $allpages){
$navnum = $allpages;
}
//ten fragment może być trudny do zrozumienia
//wyliczane są tu niezbędne dane do prawidłowego zbudowania pętli
//zmienne są bardzo opisowę więc nie będę ich tłumaczyć
$forstart = $page - floor($navnum/2
); $forend = $forstart + $navnum;
if($forstart <= 0){ $forstart = 1; }
$overend = $allpages - $forend;
if($overend < 0){ $forstart = $forstart + $overend + 1; }
//ta linijka jest ponawiana ze względu na to, że $forstart mogła ulec zmianie
$forend = $forstart + $navnum;
//w tych zmiennych przechowujemy numery poprzedniej i następnej strony
$prev = $page - 1;
$next = $page + 1;
//nie wpisujemy "sztywno" nazwy skryptu, pobieramy ja od serwera
$script_name = $_SERVER['SCRIPT_NAME'];
//ten fragment z kolei odpowiada za wyślwietenie naszej nawigacji
echo "<div id=\"nav\"><ul>"; if($page > 1
) echo "<li><a href=\"".$script_name."?page=".$prev."\">Poprzednia</a></li>"; if ($forstart > 1
) echo "<li><a href=\"".$script_name."?page=1\">[1]</a></li>"; if ($forstart > 2
) echo "<li>...</li>"; for($forstart; $forstart < $forend; $forstart++){
if($forstart == $page){
echo "<li class=\"current\">"; }else{
}
echo "<a href=\"".$script_name."?page=".$forstart."\">[".$forstart."]</a></li>"; }
if($forstart < $allpages) echo "<li>...</li>"; if($forstart - 1
< $allpages) echo "<li><a href=\"".$script_name."?page=".$allpages."\">[".$allpages."]</a></li>"; if($page < $allpages) echo "<li><a href=\"".$script_name."?page=".$next."\">Następna</a></li>"; echo "</ul></div><div class=\"clear\">"; ?>
*link -
http://www.forum.legalne.info.pl/phpmysqlp...oat-t40261.html*
Masz wszystko pieknie wyjasnione. działa na 100% bo sam korzystałem ; ) nie zapomnij o połączeniu z bazą danych