Pagenation Php Class

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Pagenation Php Class

    Habe hier eine nicht ganz ausgereifte, aber gut funktionierende, Pagenation Class.

    PHP-Quellcode

    1. <?php
    2. /**
    3. * Pagenation class.
    4. * PDO CONNECTION IN STATIC CLASS "DB" IS REQUIRED!
    5. * $pagenation = new Pagenation($limiter, $start);
    6. * $pagenation->doCommand($query, $array=false);
    7. * foreach($pagenation->result as $row) { // ACTION }
    8. * $pagenation->printPageBar($html_start, $html_end, $url);
    9. */
    10. class Pagenation {
    11. /**
    12. * @desc Number of results per page
    13. * @var int
    14. * @access private
    15. */
    16. private $limiter;
    17. /**
    18. * @desc Limit-Start in query (Necessary)
    19. * @var int
    20. * @access private
    21. */
    22. private $start;
    23. /**
    24. * @desc sql query that gets paged
    25. * @var string
    26. * @access private
    27. */
    28. private $query;
    29. /**
    30. * @desc clone of $query
    31. * @var string
    32. * @access private
    33. */
    34. private $query_unused;
    35. /**
    36. * @desc combiner array
    37. * @var array
    38. * @access private
    39. */
    40. private $array;
    41. /**
    42. * @desc returned assoc, result of query
    43. * @var assoc
    44. * @access public
    45. */
    46. public $result;
    47. /**
    48. * const
    49. * @desc if bad parameter this message is died!
    50. */
    51. const PAGENATION_BAD_PARAMETER = 'Nur Zahlen!';
    52. /**
    53. * @param int $limiter
    54. * @param int $page
    55. */
    56. public function __construct($limiter, $page) {
    57. $this->limiter = $limiter;
    58. $this->page = (empty($page))? 0 : htmlspecialchars($page);
    59. $this->page = (preg_match("/^[0-9]+$/", $this->page)) ? $this->page : die(self::PAGENATION_BAD_PARAMETER);
    60. $this->start = $page * $this->limiter - $this->limiter;
    61. }
    62. /**
    63. * @desc returns results of query ( paged )
    64. * @param string $query
    65. * @param array $array
    66. * @return assoc
    67. */
    68. public function doCommand($query, $array=false) {
    69. $this->array = (isset($array))? $array : false;
    70. $this->query_unused = $query;
    71. $this->query = $query . " LIMIT {$this->start}, {$this->limiter}";
    72. $stmt = DB::getInstance()->prepare($this->query);
    73. if($array == false)
    74. $stmt->execute();
    75. else
    76. $stmt->execute($array);
    77. return $this->result = $stmt->fetchAll();
    78. }
    79. /**
    80. * @desc displays page bar. Page bar can be customised here!
    81. * @param string $html_start
    82. * @param string $html_end
    83. * @param string $url
    84. */
    85. public function printPageBar($html_start, $html_end, $url) {
    86. $stmt = DB::getInstance()->prepare($this->query_unused);
    87. if(!$this->array)
    88. $stmt->execute();
    89. else
    90. $stmt->execute($this->array);
    91. $rows = $stmt->rowCount();
    92. $pages = $rows / $this->limiter; //ROWS DIVIDED BY ENTRY LIMIT
    93. echo $html_start;
    94. for($a=0 ; $a < $pages ; $a++) {
    95. $b = $a + 1;
    96. if($b == $this->page)
    97. echo '&nbsp;<b>' . $b . '</b>&nbsp;';
    98. else
    99. echo '&nbsp;<a href="' . $url . $b . '">' . $b . '</a>&nbsp;';
    100. }
    101. echo $html_end;
    102. }
    103. }
    104. ?>
    Alles anzeigen


    Wer etwas Ahnung mit PHP hat, wird keine Probleme haben sie für die eigenen Anforderungen entsprechend zu erweitern.