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

 更新时间:2009年12月11日 17:43:46   作者:  
当前页左边的页码为最新的产品,按更新时间呈升序排列;右边的页码为早期的产品, 按更新时间呈降序排列。
如果左边的记录条数小于$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;
}
};
?>

相关文章

  • 使用PHP实现RESTful API的常见问题与解决方案

    使用PHP实现RESTful API的常见问题与解决方案

    RESTful API是一种基于HTTP协议的架构风格,广泛应用于现代Web服务和移动应用开发中,但在开发过程中开发者可能会遇到一些常见问题,下面小编为大家提供一下相应问题的解决方案吧
    2025-03-03
  • PHP中for循环语句的几种变型

    PHP中for循环语句的几种变型

    PHP中for循环语句的几种变型...
    2007-03-03
  • 详解PHP多个进程配合redis的有序集合实现大文件去重

    详解PHP多个进程配合redis的有序集合实现大文件去重

    这篇文章主要介绍了PHP多个进程配合redis的有序集合实现大文件去重,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习 吧
    2019-03-03
  • 使用php运行python文件的示例代码

    使用php运行python文件的示例代码

    这篇文章给大家介绍了如何使用php运行python文件,可以使用PHP的exec函数来运行Python文件,exec函数调用系统命令,并返回执行结果,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2023-12-12
  • 基于php编程规范(详解)

    基于php编程规范(详解)

    下面小编就为大家带来一篇基于php编程规范(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • php中替换字符串中的空格为逗号'',''的方法

    php中替换字符串中的空格为逗号'',''的方法

    这篇文章主要介绍php中替换字符串中的空格为逗号,的方法。感觉还不错,大家可以参考下
    2014-06-06
  • PHP脚本设置无限执行时间的四种方法

    PHP脚本设置无限执行时间的四种方法

    为 PHP 脚本设置无限执行时间是一个在特定场景下可能需要的操作,比如执行长时间运行的后台任务、数据迁移、大批量数据处理等,本文给大家介绍了为PHP脚本设置无限执行时间的四种方法,需要的朋友可以参考下
    2024-09-09
  • php操作(删除,提取,增加)zip文件方法详解

    php操作(删除,提取,增加)zip文件方法详解

    本文给大家分享的是php操作zip文件的方法示例,包括了从zip压缩文件中提取文件、从一个zip压缩文件中删除文件、添加一个文件到zip压缩文件中,推荐给大家,有需要的小伙伴参考下。
    2015-03-03
  • php实现读取手机客户端浏览器的类

    php实现读取手机客户端浏览器的类

    这篇文章主要介绍了php实现读取手机客户端浏览器的类,可实现取手机号码,浏览器报头信息,取得手机类型,取得手机IP等功能,需要的朋友可以参考下
    2015-01-01
  • PHP7扩展开发之基于函数方式使用lib库的方法详解

    PHP7扩展开发之基于函数方式使用lib库的方法详解

    这篇文章主要介绍了PHP7扩展开发之基于函数方式使用lib库的方法,结合实例形式分析了PHP7中lib库扩展的封装与调用相关操作技巧,需要的朋友可以参考下
    2018-01-01

最新评论