| 
<?php
 /**
 * @author Dodit Suprianto
 * Email: [email protected]
 * Website: http://doditsuprianto.com, http://goiklan.co.nr
 * Website: http://www.meozit.com, http://easyads.co.nr
 *
 * CSSPagination is a pagination class which combines with Cascading Style Sheet for good looking style;
 * CSSPagination has main function to split all records before they will be loaded into one website,
 * to be several records in one page (you can determine how many records in one page).
 * So, if you want to jump at the other page, you can choose once of them.
 * CSSPagination is easy to use and good looking. I try to throw the complexity code.
 * The most important is, that you can change the CSS code to make it suitable with your own page style.
 */
 
 class CSSPagination
 {
 private $totalrows;
 private $rowsperpage;
 private $website;
 private $page;
 private $sql;
 
 public function __construct($sql, $rowsperpage, $website)
 {
 $this->sql = $sql;
 $this->website = $website;
 $this->rowsperpage = $rowsperpage;
 }
 
 public function setPage($page)
 {
 if (!$page) { $this->page=1; } else  { $this->page = $page; }
 }
 
 public function getLimit()
 {
 return ($this->page - 1) * $this->rowsperpage;
 }
 
 private function getTotalRows()
 {
 $result = @mysql_query($this->sql) or die ("query failed!");
 $this->totalrows = mysql_num_rows($result);
 }
 
 private function getLastPage()
 {
 return ceil($this->totalrows / $this->rowsperpage);
 }
 
 public function showPage()
 {
 $this->getTotalRows();
 
 $pagination = "";
 $lpm1 = $this->getLastPage() - 1;
 $page = $this->page;
 $prev = $this->page - 1;
 $next = $this->page + 1;
 
 $pagination .= "<div class=\"pagination\"";
 if($margin || $padding)
 {
 $pagination .= " style=\"";
 if($margin)
 $pagination .= "margin: $margin;";
 if($padding)
 $pagination .= "padding: $padding;";
 $pagination .= "\"";
 }
 $pagination .= ">";
 
 
 
 if ($this->getLastPage() > 1)
 {
 if ($page > 1)
 $pagination .= "<a href=$this->website&page=$prev>« prev</a>";
 else
 $pagination .= "<span class=\"disabled\">« prev</span>";
 
 
 if ($this->getLastPage() < 9)
 {
 for ($counter = 1; $counter <= $this->getLastPage(); $counter++)
 {
 if ($counter == $page)
 $pagination .= "<span class=\"current\">".$counter."</span>";
 else
 $pagination .= "<a href=$this->website&page=$counter>".$counter."</a>";
 }
 }
 
 elseif($this->getLastPage() >= 9)
 {
 if($page < 4)
 {
 for ($counter = 1; $counter < 6; $counter++)
 {
 if ($counter == $page)
 $pagination .= "<span class=\"current\">".$counter."</span>";
 else
 $pagination .= "<a href=$this->website&page=$counter/>".$counter."</a>";
 }
 $pagination .= "...";
 $pagination .= "<a href=$this->website&page=$lpm1>".$lpm1."</a>";
 $pagination .= "<a href=$this->website&page=".$this->getLastPage().">".$this->getLastPage()."</a>";
 }
 elseif($this->getLastPage() - 3 > $page && $page > 1)
 {
 $pagination .= "<a href=$this->website&page=1>1</a>";
 $pagination .= "<a href=$this->website&page=2>2</a>";
 $pagination .= "...";
 for ($counter = $page - 1; $counter <= $page + 1; $counter++)
 {
 if ($counter == $page)
 $pagination .= "<span class=\"current\">".$counter."</span>";
 else
 $pagination .= "<a href=$this->website&page=$counter>".$counter."</a>";
 }
 $pagination .= "...";
 $pagination .= "<a href=$this->website&page=$lpm1>$lpm1</a>";
 $pagination .= "<a href=$this->website&page=".$this->getLastPage().">".$this->getLastPage()."</a>";
 }
 else
 {
 $pagination .= "<a href=$this->website&page=1>1</a>";
 $pagination .= "<a href=$this->website&page=2>2</a>";
 $pagination .= "...";
 for ($counter = $this->getLastPage() - 4; $counter <= $this->getLastPage(); $counter++)
 {
 if ($counter == $page)
 $pagination .= "<span class=\"current\">".$counter."</span>";
 else
 $pagination .= "<a href=$this->website&page=$counter>".$counter."</a>";
 }
 }
 }
 
 if ($page < $counter - 1)
 $pagination .= "<a href=$this->website&page=$next>next »</a>";
 else
 $pagination .= "<span class=\"disabled\">next »</span>";
 $pagination .= "</div>\n";
 }
 
 return $pagination;
 }
 }
 ?>
 |