PHP网页编程之PHP中模板分页的处置
参加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) && !empty($_GET)) {
$page = intval($_GET);
} 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.id}">{$allBook.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
怎样学习,大家都知道编程是1门很枯燥的事业,所以大家一定要有兴趣,可能刚开始打算学的时候是因为别人说php有多好,php多么流行,但是后来伴随着学习的深入,你的这些 使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的 首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。 环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。 其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。 要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。 ,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。 有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。 php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会) 遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。 有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。 刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。 兴趣是最好的老师,百度是最好的词典。 对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。 做为1门年轻的语言,php一直很努力。 对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。 ,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。 我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。 有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
页:
[1]