رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
pagination
#1
سلام.
کلاسی برای صفحه بندیی:
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; ?>
پاسخ
تشکر شده توسط: php




کاربران در حال بازدید این موضوع: 1 مهمان