`
varsoft
  • 浏览: 2505340 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

PHP中模板分页的处理

阅读更多


PHP普通开发中php代码和html代码夹杂的情况中处理分页是比较简单的,也可以构建成函数的形式。最近开发中使用 Pear::DB + Smarty 的结构,于是考虑如果对模板进行分页,因为不能直接操作页面,所以就考虑生成分页字符串的形式。

因为是三层结构,类库-->PHP调用-->模板的形式,所有的数据处理是在类库里的,那么分页控制就在PHP调用中进行的,模板就复杂解析调用的结果。先直接看我们PHP调用中的分页代码:


<?php
/**
* 文件:Type.php
* 功能:显示类别下的书籍
* 作者:heiyeluren
**/

//包含公共文件,包括类库等
require_once("include.php");

//实例化操作对象
$Type = new CTypes();

//每页记录数
define("PAGE_SIZE", 10);

//获取GET提交的变量
$TypeID = $tid ? $tid : intval($_REQUEST['tid']);

//书籍总数
$BookTotal = $Type->getBookTotal($TypeID);

/* 分页显示核心 */
//获取总页数
$pageCount = ($BookTotal/PAGE_SIZE);
//当前页数
if (isset($_GET[page]) && !empty($_GET[page])) {
$page = intval($_GET[page]);
} else {
$page = 1;
}
if ($page==1) {
$startNum = 0;
} else {
$startNum = ($page-1) * PAGE_SIZE;
}
//生成分页链接字符串
if ($page==1 && $pageCount>1) {
$pageStr = "上一页 | <a href=/Type.php?tid=".$TypeID."&page=".($page+1).">下一页</a>";
} elseif ($page==$pageCount && $pageCount>1) {
$pageStr = "<a href=/Type.php?tid=".$TypeID."&page=".($page-1).">上一页</a> | 下一页";
} elseif ($page>1 && $page<=$pageCount) {
$pageStr = "<a href=/Type.php?tid=".$TypeID."&page=".($page-1).">上一页</a> |
<a href=/Type.php?tid=".$TypeID."&page=".($page+1).">下一页</a>";
} else {
$pageStr = "上一页 | 下一页";
}

//按照页数获取当前记录
$allBook = $Type->getBookFromType($TypeID, $start=$startNum, $offset=PAGE_SIZE);

//Smarty变量赋值
$tpl->assign('BookTotal', $BookTotal);
$tpl->assign('allBook', $allBook);
$tpl->assign('pageStr', $pageStr);

$tpl->display('Type.html');

unset($Type);

?>



为了更清晰的认识,下面简单的描述一下类库中的基本内容:(代码不完整)


<?php
/**
* 文件:Type.class.php
* 功能:Type处理类
* 作者:heiyeluren
**/

class Type
{
var $mDsn;
var $mTableName;
var $hPearDB;

//构造函数
function Type()
{
//...
}

//获得pear DB类的句柄方法
function _getDBClass($fetchMode = DB_FETCHMODE_ASSOC)
{
if(!is_object($this->hPearDB)){
$this->hPearDB = DB::connect($this->mDsn);
$this->hPearDB->query("set names 'utf8'");
$this->hPearDB->setFetchMode($fetchMode);
if(DB::IsError($this->hPearDB)){
return false;
}
}
return $this->hPearDB;
}

//获取书籍总数
function getBookTotal($TypeId)
{
$db = $this->_getDBClass();
$sql = "SELECT COUNT(*) AS total FROM ...";
$rs = $db->getOne($sql);
if (DB::isError($rs))
return $rs->getMessage();
else
return $rs;
}

//获取所有书籍
function getBookFromType($TypeId, $start, $offset)
{
$db = $this->_getDBClass();
$sql = "SELECT * FROM ... LIMIT $start,$offset";
$rs = $db->getAll($sql);
if (DB::isError($rs))
return $rs->getMessage();
else
return $rs;
}

}
?>


最后再让我们看一下这个Type.html模板是如何处理的:


{* 插入头部文件 *}
{include file="Cendar/head.html"}
<div id="side">
<ul>
<li>书籍总数:{$BookTotal}</li>
</ul>
</div>
<div id="Book">
<h2 class="cata">书籍具体内容</h2>
<ul>
{section name=Book loop=$allBook}
<li><a href="show_Book.php?tid={$allBook[Book].id}">{$allBook[Book].title}</a></li>
{sectionelse}
<li class="warning">目前没有书籍</li>
{/section}
</ul>
</div>
{* 分页字符串显示 *}
<div align="right">
{"GBK"|iconv:"utf-8":$pageStr}
</div>
{* 插入底部文件 *}
{include file="Cendar/foot.html"}

那么我们抓住重点就知道,我们从PHP程序里能够控制$pagStr就是我们的分页字符串,最后它将替换到模板文件里来达到效果。

基本到这里就明白了如何再模板里进行分页处理了,当然,你也可以把分页功能写成函数,或者封装成一个类,那么就方便四处调用了。呵呵~~~

(未经授权,请勿转载以上代码)

Author:heiyeluren
Date:2005-8-2

分享到:
评论

相关推荐

    PHP模板分页类

    总结,PHP模板分页类是处理大量数据分页显示的有效工具。通过合理的设计和实现,可以轻松地在各种项目中实现高效且易于维护的分页功能。同时,理解和掌握分页类的工作原理对于提升PHP开发能力大有裨益。

    超强php分页打包 通用分页 万能分页 ajax分页 google分页

    在提供的"分页page示例"中,你可能会找到实现这些分页方式的具体代码和示例,包括PHP处理逻辑、HTML模板和可能的JavaScript代码。通过学习和研究这些示例,你可以更好地理解和应用这些分页技术到自己的项目中。 总...

    PHP+Smarty+mysql 用户登录注册分页显示

    Smarty是一个流行的PHP模板引擎,它的主要目的是将业务逻辑与视图设计分离,使代码更易于管理和维护。 首先,让我们从PHP基础开始。PHP是一种服务器端脚本语言,广泛用于Web开发,可以嵌入到HTML中。在用户登录注册...

    laravel分页模板.rar

    在 Laravel 框架中,分页是处理大量数据并优化用户体验的重要工具。Laravel 提供了一种优雅的方式来实现分页,允许开发者自定义分页的样式和功能。本资源"laravel分页模板.rar"提供了自定义分页模板,并且包含跳转页...

    php万能分页源码

    类中可能包含了计算总页数、生成分页链接、处理用户请求的当前页等功能。这些功能通过方法的形式提供,开发者可以根据自己的需求进行调用和定制。例如,可能会有一个`getPagination()`方法用于生成分页链接,一个`...

    php按字数分页类

    在PHP开发中,分页是常见的功能之一,特别是在处理大量数据时,如从数据库查询结果或长文本中展示。"php按字数分页类"是一个实用的工具,它允许开发者根据文本的字数来分割内容,从而实现更高效的用户界面。在网页上...

    php智能分页类.zip

    在PHP编程中,分页是网站开发中一个常见的需求,特别是在处理大量数据时,为了提高用户体验,我们需要将数据分成多个部分,让用户可以逐页浏览。`php智能分页类.zip`是一个压缩包,包含了实现这一功能的PHP类库,...

    分页类 可自定义分页模板、对多个参数的URL分页

    在PHP开发中,分页是常见的功能之一,用于处理大量数据时提高页面加载速度和用户体验。本教程将介绍一个特别的PHP分页类,它允许用户在URL具有多个参数的情况下进行分页,并且支持自定义分页模板,提供更高的灵活性...

    php分页类-对URL有多个参数的也能分页,可自定义分页模板

    在PHP开发中,分页是常见的一种功能,用于处理大量数据的显示,使得用户能够逐页浏览,提高用户体验。本文将详细介绍一个适用于URL带有多个参数的分页类,并且允许自定义分页模板的PHP解决方案。 首先,让我们理解...

    一个用于分页php类库

    在PHP开发中,分页是常见的功能,尤其是在处理大量数据时,为了提高用户体验,需要将结果集分成多个页面展示。本篇文章将详细讲解一个用于分页的PHP类库及其使用方法,帮助开发者轻松实现高效、美观的分页效果。 ...

    php ajax mysql 点击加载更多 分页

    在分页加载更多数据的场景中,PHP主要负责与MySQL数据库交互,处理请求,如查询、排序和过滤数据,然后将处理后的结果返回给前端。 2. AJAX(Asynchronous JavaScript and XML):AJAX不是单一的技术,而是一种使用...

    PHP+AJAX实现 分页

    在分页中,PHP主要负责处理与数据库的交互,如执行SQL查询来获取指定页面的数据,计算总页数,以及处理用户请求的新页面。以下是一个简单的PHP分页逻辑: 1. 计算总页数:根据查询结果的总数除以每页显示的记录数。...

    PHP多样式万能分页类及示例

    在PHP开发中,分页是常见的功能之一,用于处理大量数据的显示,避免一次性加载过多内容导致页面响应慢或消耗过多资源。本篇文章将详细解析一个PHP多样式万能分页类及其应用示例。 首先,理解分页类的基本结构。一个...

    168跳转分页插件 for PHP168.rar

    3. 修改了`function.inc.php`中的分页处理函数,增加了检查输入页码并相应跳转的逻辑。这可能涉及到验证输入的有效性,防止非法访问或其他安全问题。 4. 如果需要,可能还更新了与分页相关的视图模板,以适应新功能...

    PHP的一个超强分页类

    在PHP开发中,分页是常见的功能之一,用于处理大量数据的显示,使得用户能够方便地浏览和导航。本篇文章将深入探讨一个名为"page.class.php"的PHP分页类,以及如何使用它来实现高效的分页功能。 首先,我们要理解...

    php+smarty分页类的具体使用之一

    本例通过PHP和Smarty模板引擎实现了一个基本的分页功能,包括了前端界面设计、后端逻辑处理以及数据库操作等多个方面。这样的实现方式不仅可以有效地提升用户体验,同时也便于代码的维护和扩展。对于初学者而言,这...

    一个简单的 php 分页 函数

    在PHP编程中,分页是处理大量数据时非常重要的功能,尤其在网页显示数据库查询结果时,为了提高用户体验,避免一次性加载过多数据导致页面加载慢或服务器压力过大。本话题将详细探讨如何创建一个简单的PHP分页函数。...

    仿google分页完整代码

    在这个例子中,`index.php`可能会调用`web_page.php`来处理分页逻辑,并将结果显示到页面上。通常,`index.php`会包含一个查询参数,如`page`,用于传递当前请求的是哪一页的数据。 `web_page.php`是核心的分页处理...

    php完美分页类,支持无限分页,简洁大气样式,包你好用

    php完美分页类,支持无限分页,简洁大气样式,包你好用

    PHP多功能分页类,功能强大,评价很高。

    在PHP开发中,分页是常见的需求,尤其是在处理大量数据时,为了提高用户体验,需要将结果集分割成多个页面展示。本压缩包提供了一个被高度评价的PHP多功能分页类,它具有强大的功能和灵活性,可以适应各种项目需求。...

Global site tag (gtag.js) - Google Analytics