Pagination, der Trick mit dem Offset
hotti
- datenbank
0 CPAN- perl
0 Sven Rautenberg0 hotti
0 hotti
hi,
beim Wandern heute ist mir ein kleiner Trick eingefallen, wie ein Paginator mit nur einer Abfrage einmal die gewünschte Seite ausliefert und zum Anderen auch die Information hergibt, ob die Seite einen Nachfolger hat. Trick:
Der Offset, der sich aus der gewünschten 'Anzahl der Records pro Seite' ergibt, wird um eins erhöht. Das Ergenis jedoch, wird im Falle einer Nachfolgeseite um den letzten Record gekürzt. Getestet, funktioniert einwandfei ;)
Schöne Grüße,
Hotti
use Data::Page;
…
say 'schon letzte Seite' if $page->last_page == $page->current_page;
Moin!
use Data::Page;
…
say 'schon letzte Seite' if $page->last_page == $page->current_page;
<http://www.arraystudio.com/as-workshop/mysql-get-total-number-of-rows-when-using-limit.html>
MySQL Query:
~~~sql
SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;
SELECT FOUND_ROWS();
Und schon kann man nicht nur die Frage nach der "nächsten Seite" beantworten, sondern auch die Frage nach der Gesamtzahl der Seiten.
- Sven Rautenberg
Moin,
SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;
SELECT FOUND_ROWS();
Moment, das sind zwei Selects ;)
> Und schon kann man nicht nur die Frage nach der "nächsten Seite" beantworten, sondern auch die Frage nach der Gesamtzahl der Seiten.
Für Letzteres habe ich auch keine Lösung mit \_einem\_ Statement.
Hotti
use Data::Page;
…
say 'schon letzte Seite' if $page->last_page == $page->current_page;
Sehr schön. Wieviele DB-Abfragen stecken dahinter?
Hotti
--
Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.