hotti: Pagination, der Trick mit dem Offset

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

  1. use Data::Page;say 'schon letzte Seite' if $page->last_page == $page->current_page;
    
    1. 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

      1. 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
        
    2. 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.