Daten aus DatenBank auf mehrere Seiten verteilen, wie geht das?
Beispiel: 30 Einträge in der Datenbank verteilt auf 15 Seiten.
Hier ein ganz einfaches Beispiel:
die foo.php
<?php
- Datenbank verbindung einfügen
- // Variablen bestimmen
- $leiste = isset ( $_GET [ ' leiste ' ] ) ? $_GET [ ' leiste ' ] : ' ' ;
- $seite = isset ( $_GET [ ' seite ' ] ) ? $_GET [ ' seite ' ] : ' 0 ' ;
- // Seiten anzahl
- $pagseite = " 2 " ; // Einträge per Seite
- // Einträge zählen mit COUNT ( * )
- $stmt = $sqli -> prepare ( " SELECT COUNT ( * ) FROM a_table " ) ;
- $stmt -> execute ( ) ;
- $number = $stmt -> get_result ( ) -> fetch_row ( ) ;
- $number = $number [ 0 ] ;
- $seiten = ceil ( $number / $pagseite ) ;
- $start = $seite * $pagseite ;
- $stmt = $sqli -> prepare ( " SELECT spalte1 , spalte2 FROM a_table ORDER BY id DESC LIMIT $start , $pagseite " ) ;
- $stmt -> execute ( ) ;
- $result = $stmt -> get_result ( ) ;
- while ( $row = $result -> fetch_assoc ( ) )
- // Einträge zählen mit rowCount()
- $stmt = $pdo -> prepare ( " SELECT id FROM a_table " ) ;
- $stmt -> execute ( ) ;
- $number = $stmt -> rowCount ( ) ;
- $seiten = ceil ( $number / $pagseite ) ;
- $start = $seite * $pagseite ;
- $stmt = $pdo -> prepare ( " SELECT spalte1 , spalte2 FROM a_table ORDER BY id DESC LIMIT $start , $pagseite " ) ;
- $stmt -> execute ( ) ;
- while ( $row = $stmt -> fetch ( ) )
- {
- echo $row [ ' spalte1 ' ] . ' <br> ' ;
- echo $row [ ' spalte2 ' ] . ' <br> ' ;
- }
- // Seitenausgabe
- $nog = $seite + 1 ;
- for ( $i = 0 ; $i < $seiten ; $i + + )
- {
- $nog2 = $i + 1 ;
- if ( $i = = $seite )
- {
- $leiste . = ' <td> [ ' . $nog2 . ' ] </td> ' ;
- }
- else
- {
- $leiste . = ' <td> <a href = " foo.php ? seite = ' . $i . ' "> ' . $nog2 . ' </a> </td> ' ;
- }
- }
- echo ' <table> <tr> ' ;
- echo $leiste ;
- echo ' </tr> </table> ' ;
Eignet sich für etwa 2 bis 15 Seitenaufteilungen, bei mehr als 15 Seitenaufteilungen könnte es Optische Probleme geben.
Verkürzte Darstellung: ohne Formatierung, sieht etwa so aus:

Daten aus DatenBank auf mehrere Seiten verteilen.
Hier ein anderes Beispiel:
die foo.php
<?php
- Datenbank verbindung einfügen
- if ( isset ( $_GET [ ' seite ' ] ) )
- {
- $seite = preg_replace ( " / [ ^ 0 - 9 ] / " , " " , $_GET [ ' seite ' ] ) ;
- }
- if ( ! isset ( $seite ) | | $seite = = ' ' )
- {
- $seite = 1;
- }
- // Seiten anzahl
- $pagseite = " 2 " ; // Einträge per Seite
- // Einträge zählen mit COUNT ( * )
- $stmt = $sqli -> prepare ( " SELECT COUNT ( * ) FROM a_table " ) ;
- $stmt -> execute ( ) ;
- $number = $stmt -> get_result ( ) -> fetch_row ( ) ;
- $number = $number [ 0 ] ;
- $seiten = ceil ( $number / $pagseite ) ;
- $start = $seite * $pagseite - $pagseite ;
- $stmt = $sqli -> prepare ( " SELECT spalte1 , spalte2 FROM a_table ORDER BY id DESC LIMIT $start , $pagseite " ) ;
- $stmt -> execute ( ) ;
- $result = $stmt -> get_result ( ) ;
- while ( $row = $result -> fetch_assoc ( ) )
- // Einträge zählen mit rowCount()
- $stmt = $pdo -> prepare ( " SELECT id FROM a_table " ) ;
- $stmt -> execute ( ) ;
- $number = $stmt -> rowCount ( ) ;
- $seiten = ceil ( $number / $pagseite ) ;
- $start = $seite * $pagseite - $pagseite ;
- $stmt = $pdo -> prepare ( " SELECT spalte1 , spalte2 FROM a_table ORDER BY id DESC LIMIT $start , $pagseite " ) ;
- $stmt -> execute ( ) ;
- while ( $row = $stmt -> fetch ( ) )
- {
- echo $row [ ' spalte1 ' ] . ' <br> ' ;
- echo $row [ ' spalte2 ' ] . ' <br> ' ;
- }
- // Seitenausgabe
- function blaettern ( $seite , $maxseite , $url = " foo.php " , $get_site = " ? seite " , $anzahl = 4 )
- {
- if ( $anzahl % 2 ! = 0 ) $anzahl + + ;
- $a = $seite - ( $anzahl / 2 ) ;
- $b = 0 ;
- $blaetter = array ( ) ;
- while ( $b < = $anzahl )
- {
- if ( $a > 0 AND $a < = $maxseite )
- {
- $blaetter [ ] = $a ;
- $b + + ;
- }
- else if
- (
- $a > $maxseite AND ( $a - $anzahl - 2 ) > = 0 )
- {
- $blaetter = array ( ) ;
- $a - = ( $anzahl + 2 ) ;
- $b = 0;
- }
- else if
- (
- $a > $maxseite AND ( $a - $anzahl - 2 ) < 0 )
- {
- break ;
- }
- $a + + ;
- }
- $return = " " ;
- if ( ! in_array ( 1 , $blaetter ) AND count ( $blaetter ) > 1 )
- {
- if ( ! in_array ( 2 , $blaetter ) ) $return . = '<td> <a title = " Erste Seite " href = " ' . $url . $get_site . ' = 1 " > 1 </a> </td> <td> ... </td> ' ;
- else
- $return . = '<td> <a href = " ' . $url . $get_site . ' = 1"> 1 </a> </td> ' ;
- }
- foreach ( $blaetter AS $blatt )
- {
- if ( $blatt = = $seite ) $return . = '<td> [ ' . $blatt . ' ] </td> ' ;
- else
- $return . = '<td> <a title = " Seite ' . $blatt . ' " href = " ' . $url . $get_site . ' = ' . $blatt . ' "> ' . $blatt . ' </a> </td> ' ;
- }
- if ( ! in_array ( $maxseite , $blaetter ) AND count ( $blaetter ) > 1 )
- {
- if ( ! in_array ( ( $maxseite - 1 ) , $blaetter ) ) $return . = '<td> ... </td> <td> <a title = " Letzte Seite " href = " ' . $url . $get_site . ' = ' . $maxseite . ' "> ' . $maxseite . ' </a> </td> ' ;
- else
- $return . = '<td> <a title = " Letzte Seite " href = " ' . $url . $get_site . ' = ' . $maxseite . ' "> ' . $maxseite . ' </a> </td> ' ;
- }
- if( empty ( $return ) )
- return " " ;
- else
- return $return ;
- }
- echo ' <table> <tr> ' ;
- if ( $seite ! = 1 )
- {
- echo ' <td> <a title = " eine Seite zurück " href = " ? seite = ' . ( $seite - 1 ) . ' "> < </a> </td> ' ;
- }
- echo blaettern ( $seite , $seiten ) ;
- if ( $seite ! = $seiten )
- {
- echo ' <td> <a title = " eine Seite weiter " href = " ? seite = ' . ( $seite + 1 ) . ' "> > </a> </td> ' ;
- }
- echo '</tr> </table> ' ;
Eignet sich für hunderte von Seitenaufteilungen.
Verkürzte Darstellung: ohne Formatierung, sieht etwa so aus:
