Loading:

Ferie zimowe - 3 za 2

Stronicowanie zapytań z SQL

Funkcja zamieszczona w tym artykule w ładny i przejrzysty sposób stronicuje wyniki z zapytania. Funkcję można dostosować do swoich wymagań, czyli ile ma wyświetlać stron, czy też ile ma być wyników na jednej stronie.

 

Funkcja działa na zasadzie, że najpierw trzeba zapytaniem do bazy sprawdzić ile jest wszystkich wyników, a dopiero potem poprzez zwróconą wartość przez funkcję wykonać ponownie zapytanie, aby wyświetlić mniejszą ilość wyników.



Napisz Artykuł

Listing

function paginacja($max_item, $item_page, $page_num, $skrypt, $page) {
        $all_page = ceil($max_item/$item_page);

        if($page > $all_page) { $page = $all_page; }
        else if($page < 1) { $page = 1; }

        if($all_page > 1) {
                if($page > 1) { $start = $page-1; $pop = "<a href=\"".$skrypt."=$start\">&#171; Poprzednia</a>"; }
                else { $pop = ""; }

                if($page <= $page_num) { $koniec = $page_num*2+1; }
                else { $koniec = $page+$page_num; }

                $star = $page-$page_num-1;

                if($koniec > $all_page) { $koniec = $all_page; }
                if($star < 0) { $star = 0; }

                if($star > 0) { $pier = "|<a href=\"".$skrypt."=1\"> 1 </a>| ..."; }
                else { $pier = ""; }

                if($koniec < $all_page) { $ost = "... |<a href=\"".$skrypt."=$all_page\"> $all_page </a>|"; }
                else { $ost = ""; }

                for($i=$star; $i<$koniec; $i++) {
                        $pom = $i+1;

                        if($pom != $page) { $pasek .= "|<a href=\"".$skrypt."=$pom\"> "; }
                        else { $pasek .= "| <b>"; }

                        if($pom != $page) { $pasek .= "$pom </a>"; }
                        else { $pasek .= "$pom</b> "; }

                        if($i == $koniec-1) { $pasek .= "|"; }
                }

                if($page < $all_page) { $dalej = $page+1; $nas="<a href=\"".$skrypt."=$dalej\">Następna &#187;</a>";}
                else { $nas = ""; }

                echo "<span style=\"font-size: 14px;\">$pop $pier $pasek $ost $nas</span>";
        }
       
        return ($page-1)*$item_page;
}


//Przykładowe użycie
$sql = mysql_query("SELECT COUNT(*) FROM `table_name`");
$ilosc_wynikow = mysql_num_rows($sql);
$ile_na_stronie = 100;
$ile_stron = 5;
$link_stronicowania = 'index.php?strona';

$limit_start = paginacja($ilosc_wynikow, $ile_na_stronie, $ile_stron, $link_stronicowania, $_GET['strona']);

$sql = mysql_query("SELECT * FROM `table_name` LIMIT $limit_start,$ile_na_stronie");
while($row = mysql_fetch_array($sql)) {
        //kod
}


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=4&t=12677

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: sebulek Ranga: Poziom 6 Punktów: 172
Komentarze użytkowników
Coś mi to nie działa w ogóle nie pokazuje ilości stron :(
autor: rioma1990 | 12801 | 2012-03-23 19:52:37


    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors