<?php class paginate{ var $current; var $rows; var $start_row; var $total_data; function paginate($current_page,$totaldata,$rows_page = 10){ $this->rows = $rows_page; $this->total_data = $totaldata; if($current_page < 1 or $current_page > $this->getTotalPage()){ $this->current = 1; } else{ $this->current = $current_page; } } function getTotalPage(){ $total = ceil($this->total_data / $this->rows); return $total; } function getLimit(){ if($this->current <= 1){ $this->start_row = 0; } else{ $this->start_row = $this->rows*($this->current-1); } return ' LIMIT '.$this->start_row.','.$this->rows; } function getNext(){ if($this->current < $this->getTotalPage()){ return $this->current + 1; } } function getPrevious(){ if($this->current > 1){ return $this->current - 1; } } function getPages(){ $first = false; $last = false; if($this->getTotalPage() == 0){ return false; } elseif($this->getTotalPage() > 10){ for($i=1; $i<=$this->getTotalPage();$i++){ if($i == $this->current){ $page[] = array( 'link' => false, 'page' => $i ); } elseif($i < $this->current-3 and $i > 3 and $i < $this->current+5 ){ if(!$first){ $page[] = array( 'link' => false, 'page' => '...', ); } $first = true; } elseif($i < $this->getTotalPage()-3 and $i > $this->current+5){ if(!$last){ $page[] = array( 'link' => false, 'page' => '...', ); } $last = true; } else{ $page[] = array( 'link' => true, 'page' => $i ); } } } else{ for($i=1; $i<= $this->getTotalPage();$i++){ if($i == $this->current){ $page[] = array( 'link' => false, 'page' => $i ); } else{ $page[] = array( 'link' => true, 'page' => $i ); } } } return $page; } function navigation($url=null,$attr=array()){ $parm = ''; if(is_array($attr)){ foreach($attr as $name => $val){ $parm .= ' '.$name.'="'.$val.'"'; } } $nav = null; if($this->getPrevious()){ $nav .= '<a href="'.$url.'&page='.$this->getPrevious().'" '.$parm.'>Previous</a> | '; } if($this->getPages()){ foreach($this->getPages() as $name => $val){ if($val['page'] != 1){ $nav .= ', '; } if($val['link']){ $nav .= '<a href="'.$url.'&page='.$val['page'].'" '.$parm.'>'.$val['page'].'</a>'; } else{ $nav .= '<b>'.$val['page'].'</b>'; } } } if($this->getNext()){ $nav .= ' | <a href="'.$url.'&page='.$this->getNext().'" '.$parm.'>Next</a>'; } return $nav; } } /** example **/ if(isset($_GET['page'])){ $page = $_GET['page']; } else{ $page = 1; } $totaldata = 200; $row_per_page = 10; $paginate = new paginate($page,$totaldata,$row_per_page); echo 'Limit for Query: SELECT * FROM `table`'.$paginate->getLimit(); echo '<br/>'; echo 'Current Page: '.$paginate->current; echo '<br/>'; echo 'Pages Navigation: '.$paginate->navigation('index.php?',array('id' => 'page')); echo '<br/>'; echo 'Total Page: '.$paginate->getTotalPage(); ?>
article
Saturday, September 7, 2013
Pagenation using php class
Pagenation using php class