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.
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\">« 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 »</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
}
$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\">« 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 »</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
}
Dodano przez: sebulek Ranga: 0 Punktów: 0
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
:: Losowe artykuły
:: Wymiana linków
Modowe inspiracje |
Android Gry i Aplikacje |
ZaplanujTransport.pl: Przeprowadzki, transport, aukcje |
Logo dla firmy |
Change Tires - Car Weather Forecast Reminder |
Laminas: MVC Framework for PHP |
IT Books Reviews and Programming: JS, JAVA, PHP, ANDROID, CSS |
Katalog roślin |
Programming articles: JAVA, PHP, C++, Python, JavaScript |
Kancelaria Adwokacka Łukasz Huszno