php实现的仿阿里巴巴实现同类产品翻页

  如果左边的记录条数小于$space(页码区段)的值,页码$start从1开始向右增值。如果左则的记录条数多于$left(左右各显示页数)的值,$start将从左边记录数减去$left值开始记数。

  

复制代码 代码如下:

  <?php

  /** 实现同类产品翻页 **/

  class pager

  {

  protected $space;

  protected $left;

  protected $DB;

  protected $pageName;

  public function setSpace($num) {

  $this->space = $num;

  $this->left = ceil(($num-1)/2);

  }

  public function setDB(&$db) {

  $this->DB = $db;

  }

  public function setPageName($pageName) {

  $this->pageName = $pageName;

  }

  public function getPages($catid, $exptime) {

  $fields = array("`id`,`title`");

  $left = array(">" => array("exptime"=>$exptime), "memberid" => gs(_MEM_PREFIX_ . "memberid"), "catid"=>$catid);

  $right = array("<" => array("exptime"=>$exptime), "memberid" => gs(_MEM_PREFIX_ . "memberid"), "catid"=>$catid);

  $leftCount = $this->DB->getCount($left);

  if($leftCount <= $this->left) {

  $star = 1;

  $leftLimit = "LIMIT" . $leftCount;

  $rightLimit = "LIMIT " . ($this->space-$leftCount);

  }

  else {

  $start = $leftCount - $this->left;

  $leftLimit = "LIMIT " . $this->left;

  $rightLimit = $leftLimit;

  }

  $list1 = $this->DB->findAll($left, array("exptime"=>"ASC"), $leftLimit, $fields);

  $list2 = $this->DB->findAll($right, array("exptime"=>"DESC"), $rightLimit, $fields);

  /** 上一页链接 **/

  $c = count($list1);

  if($c > 1) {

  $url = $this->pageName."-".$list1[$c]['id'].".html";

  $pages = "<a href=\"{$url}\">上一页</a><ol>";

  }elseif($c == 1) {

  $url = $this->pageName."-".$list1[0]['id'].".html";

  $pages = "<a href=\"{$url}\">上一页</a><ol>";

  }else {

  $pages = "";

  }

  /** 当前页的左边内容 **/

  foreach($list1 as $item) {

  $url = $this->pageName."-".$item['id'].".html";

  $pages .= "<li><a href=\"{$url}\">{$start}</a></li>";

  $start++;

  }

  $pages .= "<li><b>{$leftCount}</b></li>";

  $start++;

  /** 当前页面右边的内容 **/

  foreach($list1 as $item) {

  $url = $this->pageName."-".$item['id'].".html";

  $pages .= "<li><a href=\"{$url}\">{$start}</a></li>";

  $start++;

  }

  /** 下一页的链接 **/

  $c = count($list2);

  if($c > 0) {

  $url = $this->pageName."-".$list2[0]['id'].".html";

  $pages .= "<a href=\"{$url}\">下一页</a><ol>";

  }else {

  $pages .= "";

  }

  return $pages;

  }

  };

  ?>