Na potrzeby swojej pracy i po calym dniu meczenia sie nad zmiennymi (ktos na tym forum poiwedzial, ze sie nie da, a tu niespodzianka- dalo sie i ladnie dziala)
Najwazniejsze- funkcja bardzo prosta, latwa do konfiguracji i implementacji dla kazdej strony.
<?php
//deklaracja paginacji autor: trucksweb [at] interia.pl
function paginacja_start() {
//okreslenie funkcji globalnych
//jesli przekazano parametr punktu poczatkowego
$start=$_GET['s'];
//jesli nie wgraj ustawienia domyslne
}else {
$start=1;
$pokaz=10;
}
}//koniec paginacja_start
//wyswietlenie paginacji i obsluga odnosnikow autor: trucksweb [at] interia.pl
function paginacja($liczba_stron,$start,$pokaz,$biezaca_strona) {
/**********************************************************************/
//ustawienia wyswietlania linkow
$poprzednia_link = TAK; // TAK-jesli ma pokazywac, ze jest to pierwsza strona, NIE-nie pokazuj
$nastepna_link = NIE; // TAK-jesli ma pokazywac, ze jest to ostatnia strona, NIE-nie pokazuj
/*********************************************************************/
//zliczenie wszystkich stron
$query = "SELECT COUNT(*) FROM faktury ORDER BY id DESC";
$liczba_rekordow = $row[0];
//wyznaczenie ilosci stron
if($liczba_rekordow > $pokaz) {
//jesli jest wiecej niz jedna
$liczba_stron = ceil ($liczba_rekordow/$pokaz); }else {
$liczba_stron =1;
}
//wyznaczenie punktu poczatkowego
$start = $_GET['s'];
}else {
$start = 0;
}
//tworzenie lacz do pozostalych stron, jesli takie sa
if($liczba_stron > 1) {
//okreslenie biezacej strony
$biezaca_strona = ($start/$pokaz) + 1;
//jesli nie jest to pierwsza strona, tworzenie lacza do Poparzedniej
if($biezaca_strona !=1) {
echo ' <a href="faktury.php?s='.($start - $pokaz).'&ls='.$liczba_stron.'">Poprzednia </a> '; }else {
//jezeli jest to pierwsza strona, pokaz/ukryj informacje
if($poprzednia_link == 'TAK') {
}else {
}
}
//tworzenie lacz do pozostalych stron
for($i=1; $i <= $liczba_stron; $i++) {
if($i !=$biezaca_strona) {
echo ' <a href="faktury.php?s='.(($pokaz * ($i - 1))).'&ls='.$liczba_stron.'"> '. $i . ' </a> '; }else{
}
}
//jezeli nie jest to ostatnia strona, tworzenie lacza do Nastepnej
if($biezaca_strona != $liczba_stron) {
echo ' <a href="faktury.php?s='.($start + $pokaz).'&ls='.$liczba_stron.'">Następna</a> '; }else {
//jezeli jest to ostatnia strona pokaz/ukryj informacje
if($nastepna_link == 'TAK') {
}else {
}
}
}
}//koniec paginacji
?>
implementacja dla strony:
<?php
//okreslenie wynikow paginacji
paginacja_start($pokaz=10);
//standardowe zapytanie, na koncu dajemy LIMIT ze zmiennymi !
$zapytanie = "SELECT cos FROM tabela ORDER by cos DESC LIMIT $start, $pokaz";
//wyswietlenie paginacji:
paginacja($liczba_stron,$start,$pokaz,$biezaca_strona);
?>
mozemy w ustawieniach TAK/NIE zadeklarowac czy na skrajnych stronach maja sie pokazywac teksty: poprzednia/nastepna.
dla jednego zapytania mozemy wywolywaj wiele paginacji:
<?php
paginacja($liczba_stron,$start,$pokaz,$biezaca_strona);
//jakis kod strony
paginacja($liczba_stron,$start,$pokaz,$biezaca_strona);
?>
Moze komus sie przyda (IMG:
http://forum.php.pl/style_emoticons/default/czarodziej.gif)
Funkcja bedzie rozwijana bo musze ja uzywac w swoim systemie.
Wszelkie sugestie mile widziane (funkcja idealna nie jest, ale to sie kidys zmieni)...
Ten post edytował trucksweb 15.12.2007, 19:10:04