14-03-1394، 12:53 ق.ظ
سلام.
کلاسی برای صفحه بندیی:
کلاسی برای صفحه بندیی:
class Pagination { /** * * @param type $totalRows // تعداد رکوردها * @param type $rowsPerPage // تعداد رکوردهایی که در هر صفحه باید نشان داده شوند * @param type $pageNum // شماره صفحه ای که باید نشان داده شود * @return $arr[] // آرایه صفحه بندی */ public static function calculatePages($totalRows, $rowsPerPage, $pageNum) { $arr = array(); // calculate last page $lastPage = ceil($totalRows / $rowsPerPage); // make sure we are within limits $pageNum = (int) $pageNum; if ($pageNum < 1) { $pageNum = 1; } elseif ($pageNum > $lastPage) { $pageNum = $lastPage; } $upto = ($pageNum - 1) * $rowsPerPage; $arr['limit'] = 'LIMIT '.$upto.',' .$rowsPerPage; $arr['current'] = $pageNum; if ($pageNum == 1) $arr['previous'] = $pageNum; else $arr['previous'] = $pageNum - 1; if ($pageNum == $lastPage) $arr['next'] = $lastPage; else $arr['next'] = $pageNum + 1; $arr['last'] = $lastPage; $arr['info'] = 'Page ('.$pageNum.' of '.$lastPage.')'; $arr['pages'] = self::getSurroundingPages($pageNum, $lastPage, $arr['next']); return $arr; } public static function getSurroundingPages($pageNum, $lastPage, $next) { $arr = array(); $show = 5; // how many boxes // at first if ($pageNum == 1) { // case of 1 page only if ($next == $pageNum) return array(1); for ($i = 0; $i < $show; $i++) { if ($i == $lastPage) break; array_push($arr, $i + 1); } return $arr; } // at last if ($pageNum == $lastPage) { $start = $lastPage - $show; if ($start < 1) $start = 0; for ($i = $start; $i < $lastPage; $i++) { array_push($arr, $i + 1); } return $arr; } // at middle $start = $pageNum - $show; if ($start < 1) $start = 0; for ($i = $start; $i < $pageNum; $i++) { array_push($arr, $i + 1); } for ($i = ($pageNum + 1); $i < ($pageNum + $show); $i++) { if ($i == ($lastPage + 1)) break; array_push($arr, $i); } return $arr; } }طریقه استفادشم اینه:
<?php $pageCount= count($pagination['pages']); ?> <?php if($pageCount>1): ?> <div class="col-xs-11 col-sm-11"> <ul class="pagination"> <li><a href="<?php echo $this->createUrl('index',array('pageNum'=>1)); ?>">اول</a></li> <li><a href="<?php echo $this->createUrl('index',array('pageNum'=>$pagination['previous'])); ?>">قبلی</a></li> <?php for($i=1;$i<=$pageCount;$i++): ?> <li class="<?php echo ($i==$pagination['current'] ? 'active' : ''); ?>"> <a href="<?php echo ($i==$pagination['current'] ? '#' : $this->createUrl('index',array('pageNum'=>$i))); ?>"><?php echo $i; ?></a> </li> <?php endfor; ?> <li><a href="<?php echo $this->createUrl('index',array('pageNum'=>$pagination['next'])); ?>">بعدی</a></li> <li><a href="<?php echo $this->createUrl('index',array('pageNum'=>$pagination['last'])); ?>">آخر</a></li> </ul> </div> <?php endif; ?>