current= 1; }else{ $this->current= $_GET['pagenum']; } //Here we count the number of results $db = new DBLayer($db); $rows = $db->execute($query, $params)->rowCount(); $this->amountOfRows = $rows; //the array hat will contain all users if($rows > 0){ //This is the number of results displayed per page $page_rows = $nrDisplayed; //This tells us the page number of our last page $this->last = ceil($rows/$page_rows); //this makes sure the page number isn't below one, or more than our maximum pages if ($this->current< 1) { $this->current= 1; }else if ($this->current> $this->last) { $this->current= $this->last; } //This sets the range to display in our query $max = 'limit ' .($this->current- 1) * $page_rows .',' .$page_rows; //This is your query again, the same one... the only difference is we add $max into it $data = $db->execute($query . " " . $max, $params); $this->element_array = Array(); //This is where we put the results in a resultArray to be sent to smarty while($row = $data->fetch(PDO::FETCH_ASSOC)){ $element = new $resultClass(); $element->set($row); $this->element_array[] = $element; } } } /** * return the number of the 'last' object attribute * @return the number of the last page */ public function getLast(){ return $this->last; } /** * return the number of the 'current' object attribute * @return the number of the current page */ public function getCurrent(){ return $this->current; } /** * return the elements array of the object * @return the elements of a specific page (these are instantiations of the class passed as parameter ($resultClass) to the constructor) */ public function getElements(){ return $this->element_array; } /** * return total amount of rows for the original query * @return the total amount of rows for the original query */ public function getAmountOfRows(){ return $this->amountOfRows; } /** * return the page links. * (for browsing the pages, placed under a table for example) the $nrOfLinks parameter specifies the amount of links you want to return. * it will show the links closest to the current page on both sides (in case one side can't show more, it will show more on the other side) * @return an array of integerswhich refer to the clickable pagenumbers for browsing other pages. */ public function getLinks($nrOfLinks){ $pageLinks = Array(); //if amount of showable links is greater than the amount of pages: show all! if ($this->last <= $nrOfLinks){ for($var = 1; $var <= $this->last; $var++){ $pageLinks[] = $var; } }else{ $offset = ($nrOfLinks-1)/2 ; $startpoint = $this->current - $offset; $endpoint = $this->current + $offset; if($startpoint < 1){ $startpoint = 1; $endpoint = $startpoint + $nrOfLinks - 1; }else if($endpoint > $this->last){ $endpoint = $this->last; $startpoint = $endpoint - ($nrOfLinks -1); } for($var = $startpoint; $var <= $endpoint; $var++){ $pageLinks[] = $var; } } return $pageLinks; } }