|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
怎么样出来了吧,怎么样自己也可以写出php程序了,虽然离职业和专业的人还有很远,但是好的开始是成功的一半。这个时候改怎么做了呢。现在就是拿1本高手推荐的书,重头到尾读1遍,我说的这个读是自己看。 作者:夜猫子(yeaha@163.com)
1、媒介
分页显示是一种十分罕见的阅读和显示大批数据的办法,属于web编程中最常处置的事务之一。关于web编程的内行来讲,编写这类代码其实是和呼吸一样天然,然而关于初学者来讲,经常对这个成绩摸不着眉目,因而专程撰写此文对这个成绩停止具体的解说,力图让看完这篇文章的伴侣在看完今后关于分页显示的道理和完成办法有所懂得。本文合适初学者浏览,一切示例代码均利用php编写。
2、道理
所谓分页显示,也就是将数据库中的了局集工资的分红一段一段的来显示,这里需求两个初始的参数:
每页几何笔记录($PageSize)?
以后是第几页($CurrentPageID)?
如今只需再给我一个了局集,我就能够显示某段特定的了局出来。
至于其他的参数,好比:上一页($PreviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以依据前边这几个器材失掉。
以mysql数据库为例,假如要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看上面一组sql语句,测验考试一下发明个中的规率。
前10笔记录:select * from table limit 0,10
第11至20笔记录:select * from table limit 10,10
第21至30笔记录:select * from table limit 20,10
……
这一组sql语句其实就是当$PageSize=10的时分取表内每页数据的sql语句,咱们可以总结出如许一个模板:
select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize
拿这个模板代入对应的值和上边那一组sql语句对比一下看看是否是那末回事。弄定了最主要的若何获得数据的成绩今后,剩下的就仅仅是传递参数,机关适合的sql语句然后利用php从数据库内获得数据并显示了。以下我将器具体代码加以申明。
3、复杂代码
请具体浏览以下代码,本人调试运转一次,最好把它修正一次,加上本人的功效,好比搜刮等等。
[code:1:c1661dd3ea]
<?php
// 创立数据库毗连
$link = mysql_connect("localhost", "mysql_user", "mysql_password")
or die("Could not connect: " . mysql_error());
// 获得以后页数
if( isset($_GET['page']) ){
$page = intval( $_GET['page'] );
}
else{
$page = 1;
}
// 每页数目
$PageSize = 10;
// 获得总数据量
$sql = "select count(*) as amount from table";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
$amount = $row['amount'];
// 记算总共有几何页
if( $amount ){
if( $amount < $page_size ){ $page_count = 1; } //假如总数据量小于$PageSize,那末只要一页
if( $amount % $page_size ){ //取总数据量除以每页数的余数
$page_count = (int)($amount / $page_size) + 1; //假如不足数,则页数等于总数据量除以每页数的了局取整再加一
}else{
$page_count = $amount / $page_size; //假如没不足数,则页数等于总数据量除以每页数的了局
}
}
else{
$page_count = 0;
}
// 翻页链接
$page_string = '';
if( $page == 1 ){
$page_string .= '第一页|上一页|';
}
else{
$page_string .= '<a href=?page=1>第一页</a>|<a href=?page='.($page-1).'>上一页</a>|';
}
if( ($page == $page_count) || ($page_count == 0) ){
$page_string .= '下一页|尾页';
}
else{
$page_string .= '<a href=?page='.($page+1).'>下一页</a>|<a href=?page='.$page_count.'>尾页</a>';
}
// 获得数据,以二维数组格局前往了局
if( $amount ){
$sql = "select * from table order by id desc limit ". ($page-1)*$page_size .", $page_size";
$result = mysql_query($sql);
while ( $row = mysql_fetch_row($result) ){
$rowset[] = $row;
}
}else{
$rowset = array();
}
// 没有包括显示了局的代码,那不在会商局限,只需用foreach就能够很复杂的用失掉的二维数组来显示了局
?>
[/code:1:c1661dd3ea]
4、OO作风代码
以下代码中的数据库毗连是利用的pear db类停止处置
[code:1:c1661dd3ea]
<?php
// FileName: Pager.class.php
// 分页类,这个类仅仅用于处置数据布局,不担任处置显示的任务
Class Pager
{
var $PageSize; //每页的数目
var $CurrentPageID; //以后的页数
var $NextPageID; //下一页
var $PreviousPageID; //上一页
var $numPages; //总页数
var $numItems; //总纪录数
var $isFirstPage; //是不是第一页
var $isLastPage; //是不是最初一页
var $sql; //sql查询语句
function Pager($option)
{
global $db;
$this->_setOptions($option);
// 总条数
if ( !isset($this->numItems) )
{
$res = $db->query($this->sql);
$this->numItems = $res->numRows();
}
// 总页数
if ( $this->numItems > 0 )
{
$this->numPages = ceil($this->numItems / $this->PageSize);
}
else
{
$this->numPages = 0;
}
switch ( $this->CurrentPageID )
{
case $this->numPages == 1:
$this->isFirstPage = true;
$this->isLastPage = true;
break;
case 1:
$this->isFirstPage = true;
$this->isLastPage = false;
break;
case $this->numPages:
$this->isFirstPage = false;
$this->isLastPage = true;
break;
default:
$this->isFirstPage = false;
$this->isLastPage = false;
}
if ( $this->numPages > 1 )
{
if ( !$this->isLastPage ) { $this->NextPageID = $this->CurrentPageID + 1; }
if ( !$this->isFirstPage ) { $this->PreviousPageID = $this->CurrentPageID - 1; }
}
return true;
}
/***
*
* 前往了局集的数据库毗连
* 在了局集对照大的时分可以直接利用这个办法取得数据库毗连,然后在类以外遍历,如许开支较小
* 假如了局集不是很大,可以直接利用getPageData的体例获得二维数组格局的了局
* getPageData办法也是挪用本办法来获得了局的
*
***/
function getDataLink()
{
if ( $this->numItems )
{
global $db;
$PageID = $this->CurrentPageID;
$from = ($PageID - 1)*$this->PageSize;
$count = $this->PageSize;
$link = $db->limitQuery($this->sql, $from, $count); //利用Pear DB::limitQuery办法包管数据库兼容性
return $link;
}
else
{
return false;
}
}
/***
*
* 以二维数组的格局前往了局集
*
***/
function getPageData()
{
if ( $this->numItems )
{
if ( $res = $this->getDataLink() )
{
if ( $res->numRows() )
{
while ( $row = $res->fetchRow() )
{
$result[] = $row;
}
}
else
{
$result = array();
}
return $result;
}
else
{
return false;
}
}
else
{
return false;
}
}
function _setOptions($option)
{
$allow_options = array(
'PageSize',
'CurrentPageID',
'sql',
'numItems'
);
foreach ( $option as $key => $value )
{
if ( in_array($key, $allow_options) && ($value != null) )
{
$this->$key = $value;
}
}
return true;
}
}
?>
<?php
// FileName: test_pager.php
// 这是一段复杂的示例代码,前边省略了利用pear db类创立数据库毗连的代码
require "Pager.class.php";
if ( isset($_GET['page']) )
{
$page = (int)$_GET['page'];
}
else
{
$page = 1;
}
$sql = "select * from table order by id";
$pager_option = array(
"sql" => $sql,
"PageSize" => 10,
"CurrentPageID" => $page
);
if ( isset($_GET['numItems']) )
{
$pager_option['numItems'] = (int)$_GET['numItems'];
}
$pager = @new Pager($pager_option);
$data = $pager->getPageData();
if ( $pager->isFirstPage )
{
$turnover = "首页|上一页|";
}
else
{
$turnover = "<a href='?page=1&numItems=".$pager->numItems."'>首页</a>|<a href='?page=".$pager->PreviousPageID."&numItems=".$pager->numItems."'>上一页</a>|";
}
if ( $pager->isLastPage )
{
$turnover .= "下一页|尾页";
}
else
{
$turnover .= "<a href='?page=".$pager->NextPageID."&numItems=".$pager->numItems."'>下一页</a>|<a href='?page=".$pager->numPages."&numItems=".$pager->numItems."'>尾页</a>";
}
?>
[/code:1:c1661dd3ea]
需求申明的中央有两个:
这个类仅仅处置数据,其实不担任处置显示,由于我感觉将数据的处置和了局的显示都放到一个类里边其实是有些委曲。显示的时分情形和请求多变,不如本人依据类给出的了局处置,更好的办法是依据这个Pager类承继一个本人的子类来显示分歧的分页,好比显示用户分页列表可以:
[code:1:c1661dd3ea]
<?php
Class MemberPager extends Pager
{
function showMemberList()
{
global $db;
$data = $this->getPageData();
// 显示了局的代码
// ......
}
}
/// 挪用
if ( isset($_GET['page']) )
{
$page = (int)$_GET['page'];
}
else
{
$page = 1;
}
$sql = "select * from members order by id";
$pager_option = array(
"sql" => $sql,
"PageSize" => 10,
"CurrentPageID" => $page
);
if ( isset($_GET['numItems']) )
{
$pager_option['numItems'] = (int)$_GET['numItems'];
}
$pager = @new MemberPager($pager_option);
$pager->showMemberList();
?>
[/code:1:c1661dd3ea]
第二个需求申明的中央就是分歧数据库的兼容性,在分歧的数据库里截获一段了局的写法是纷歧样的。
mysql: select * from table limit offset, rows
pgsql: select * from table limit m offset n
......
所以要在类里边获得了局的时分需求利用pear db类的limitQuery办法。
ok,写完收功,但愿花工夫看完这些文字的你不感觉是华侈了工夫。
【宣布答复】【检查服装论坛原帖】【添加到保藏夹】【封闭】
--------------------------------------------------------------------------------
tonera 答复于:2003-10-16 12:14:48
加精髓,这里的精髓也太少了点。 :lol:
--------------------------------------------------------------------------------
I_Just_Shot_John_Lennon 答复于:2003-10-22 14:54:15
感激夜猫子老迈能把这么好的代码同享出来
恰好做一个分页的小法式,用的也是pear的db库
所以就想用上这段代码了
不外发明有个小中央需求改善一下
[code:1:1dff2b643d]
// 总条数
if ( !isset($this->numItems) )
{
$res = $db->query($this->sql);
$this->numItems = $res->numRows();
}
[/code:1:1dff2b643d]
就是再查询总条数的
用
select count(*) from table
比
select * from table来数条数应当效力上会好一些吧
关于数据量很大的数据表来讲
--------------------------------------------------------------------------------
夜猫子 答复于:2003-10-22 15:04:52
是的,关于查询总条数切实其实有这个成绩,不外完整可以用其他体例来弄定。
起首,假如采取select count(*) from table的话,咱们就需求多传递一条sql语句,这能够使法式的可读性下降。
第二,其其实第一次挪用今后,咱们都可以把$pager->numItems这个总纪录数经由过程翻页的谁人链接传递给下一次。
[code:1:3262bf44d3]
if ( $pager->isFirstPage )
{
$turnover = "首页|上一页|";
}
else
{
$turnover = "<a href='?page=1&numItems=".$pager->numItems."'>首页</a>|<a href='?page=".$pager->PreviousPageID."&numItems=".$pager->numItems."'>上一页</a>|";
}
if ( $pager->isLastPage )
{
$turnover .= "下一页|尾页";
}
else
{
$turnover .= "<a href='?page=".$pager->NextPageID."&numItems=".$pager->numItems."'>下一页</a>|<a href='?page=".$pager->numPages."&numItems=".$pager->numItems."'>尾页</a>";
}
[/code:1:3262bf44d3]
然后咱们只需在法式里边这么写就能够了:
[code:1:3262bf44d3]
$pager_option = array(
"sql" => $sql,
"PageSize" => 10,
"CurrentPageID" => $page
);
if ( isset($_GET['numItems']) )
{
$pager_option['numItems'] = (int)$_GET['numItems'];
}
$pager = new Pager($pager_option);
[/code:1:3262bf44d3]
这段代码在我文章里的示例里也有表现,如许处置今后,除第一次需求去记算总条数之外,今后的翻页都直接利用上一次查询出来的数据,如许效力失掉了进步。
--------------------------------------------------------------------------------
tonera 答复于:2003-10-27 10:32:05
如果我想完成每页显示指定命量的页码,怎样办?
例如:
有1000个纪录,每页显示10条。
当我看到第5页时,显示的是51-60笔记录。
同时我想让它显示页码:1 2 3 4 6 7 8 9
当我翻到第10页时,显示:
6 7 8 9 11 12 13 14
--------------------------------------------------------------------------------
NightKids 答复于:2003-10-27 10:47:10
我也凑热烈~~~我的分页类~~~
[code:1:cb1d006774]
<?php
ob_start();
/*
* Copyright (c) 2003 NightKids <weidewang@magus-soft.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
//ob_start("ob_gzhandler");
//set_time_limit(10);
/*************************************************************************************************************
* The PHP File Create By Black Wind
* E-Mail:o5499@hotmail.com;o5499@etang.com
* 主页:
* QQ:9400355,30148292
* 作者:Black Wind
*
*
*
* 最初修正工夫:
*
* 声明:任何团体或整体可以恣意修正、传布代码、可以用于任何场合(酿成的任何丧失或胶葛与自己有关)。
* 假如有甚么好的建议和定见请与我接洽。
* 请你在利用或传布是请保存这段正文,尊敬自己的休息功效。感谢!!
*
* 感激:一切身旁的伴侣、一切撑持我的人们。
* 一切忘我供应材料的网友和伴侣们。一切 PHP 撑持者 !
*
*
* 开辟情况:Apache/1.3.27+PHP 4.3.0RC4+Zend Engine v1.3.0+MySQL 4.0.4-beta-max-nt+Zend Optimizer v2.0.3
*
* 请求:
*************************************************************************************************************/
//_SERVER["HTTP_REFERER"]; //http://black-server/Studio/
//_SERVER["QUERY_STRING"]; //前往问号前面的字符串
//_GET["变量名"]; //可以取回传入的一个变量
//_SERVER["REQUEST_URI"];//前往 /Studio/php_info.php?pp=阿嗄&kl=00&uj=90l
//_SERVER["argv"];以数组模式前往传入的值
//_SERVER["SCRIPT_NAME"];
//----------- The File The Start --------
//require_once("");
//include_once("");
/*
本类没有供应毗连数据库的功效,所以需在内部翻开响应的数据库。
本类也没有供应显示纪录的功效,只是分页读取纪录至 Result二维数组中。
需在内部自界说数据显示格局。
$tp = new TViewPage();
$tp->SetSQLBuff($sqlbuff);
$tp->SetPageQuery("action","NULL");
$row=$tp->ReadList();
$rowcount=count($row)-1;
$ThePage=$tp->ThePage();
$Page=$tp->Page1();
*/
class TViewPage
{
//var $dbc; //数据库链接
var $MaxLine=10; //每页显示行数
var $Offset; //纪录偏移量
var $Total=0; //纪录总数
var $Number; //本页读取的纪录数
var $Result; //读出的了局
var $TPages=0; //总页数
var $CPages; //以后页数
var $Condition; //显示前提 如:where id='$id' order by id desc
var $PageQuery; //分页显示要传递的参数
var $column; //显示的列
var $ParKey;
var $debug=false;
var $_sqlbuff=null;
var $php_self;
var $vpdispnum=8;//分页条数字显示个数 款式 3 利用
/*
NightKids
2003-10-20 15:04:59 添加 wap 版天职页
**/
var $iswap=false;
<P>//******机关函数*************
//参数:表名、最大行数、偏移量
function TViewPage($ML=10)
{
global $offset;
$offset=$_GET[offset];
$this->MaxLine=$ML;
$this->column=$column;
if(isset($offset)) $this->Offset=intval($offset);
else $this->Offset=0;
$this->php_self=$_SERVER["SCRIPT_NAME"];
}
function SetSQLBuff($sqlbuff) //利用内部的 Sql 指令
{ $this->_sqlbuff=$sqlbuff;}
//********设置显示前提*********
//如:where id='$id' order by id desc
//请求是字串,合适SQL语法(本字串将加在SQL语句后)
//******设置传递参数************
// key参数名 value参数值 页面参数
// 如:setpagequery("id",$id);若有多个参数要传递,可屡次挪用本函数。
function SetPageQuery($key,$value)
{
$tmp[key]=$key;
$tmp[value]=$value;
$this->PageQuery[]=$tmp;
}
//********读取纪录***************
// 次要任务函数,依据所给的前提从表中读取响应的纪录
// 前往值是一个二维数组,Result[纪录号][字段名]
function ReadList()
{
$col=$this->column;
if($this->Total==0)
{
$sqlbuff=$this->_sqlbuff;
$result=@mysql_query($sqlbuff) or die(mysql_error());
$this->Total=@mysql_num_rows($result);
@mysql_free_result($result);
}
if($this->debug)
echo "<font color=red><hr>".$sqlbuff."<hr></font><br>";
if($this->Total>0)
{ //依据前提 Condition
$SQL=$this->_sqlbuff." LIMIT ".$this->Offset." , ".$this->MaxLine;
$result=@mysql_query($SQL) or die(mysql_error());
$this->Number=@mysql_num_rows($result);
while($row=@mysql_fetch_Array($result))
{ $this->Result[]=$row; }
@mysql_free_result($result);
}
return $this->Result;
}
//**********显示页数*************
//显示以后页及总页数
function ThePage()
{
$TmpStr="总数 <b>".$this->TotalNum()." </b>";
return $TmpStr." 第<b>".$this->CurrentPage()."</b>页/共<b>".$this->TotalPages()."</b>页";
}
function TotalNum() //总记载数
{
return $this->Total;
}
function TotalPages() //总页数
{
return $this->TPages=ceil($this->Total/$this->MaxLine);
}
function CurrentPage() //以后页
{
return $this->CPages=$this->Offset/$this->MaxLine+1;
}
function PageQueryStr() //生成一个要传递参数字串
{
$k=count($this->PageQuery);
$strQuery=""; //生成一个要传递参数字串
$LinkChar="&";
if($this->iswap) $LinkChar="&";
for($i=0;$i<$k;$i++){
$strQuery.="$LinkChar".$this->PageQuery[$i][key]."=".$this->PageQuery[$i][value];
}
return $strQuery;
}
function FirstPageOffset() //第一页的偏移
{ return 0;}
function NextPageOffset() //下一页的偏移
{ return $this->Offset+$this->MaxLine;}
function PrevPageOffset() //上一页的偏移
{ return $this->Offset-$this->MaxLine;}
function LastPageOffset() //最初一页的偏移
{ return ($this->TotalPages()-1)*$this->MaxLine;}
//**********显示翻页按钮*************
//此函数要在ThePage()函数以后挪用!!!
//显示首页、下页、上页、未页,并加上要传递的参数
function Page($style=null) //翻页款式1
{
if(!empty($style))
$style=" style=\"".$style."\"";
$first=$this->FirstPageOffset();
$next=$this->NextPageOffset();
$prev=$this->PrevPageOffset();
$last=$this->LastPageOffset();
$strQuery=$this->PageQueryStr();
$LinkTmpStr=null;
$php_self=$this->php_self;
if($this->iswap==false){ //不是 wap 版本
if($this->Offset>=$this->MaxLine)
{ $LinkTmpStr.="<A href=".$php_self."?offset=".$first.$strQuery.$style.">首页</A> | ";}
if($prev>=0)
{$LinkTmpStr.="<A href=".$php_self."?offset=".$prev.$strQuery.$style.">上一页</A> | "; }
if($next<$this->Total)
{$LinkTmpStr.="<A href=".$php_self."?offset=".$next.$strQuery.$style.">下一页</A> | "; }
if($this->TPages!=0 && $this->CPages<$this->TPages)
{$LinkTmpStr.="<A href=".$php_self."?offset=".$last.$strQuery.$style.">末页</A>"; }
return $LinkTmpStr="<span $style>".$LinkTmpStr."</span>";
}else{
/*
if($this->Offset>=$this->MaxLine)
{ $LinkTmpStr.="<a href=\"".$php_self."?offset=".$first.$strQuery.$style."\">首页</a><br/>";}
*/
if($prev>=0)
{$LinkTmpStr.="<a href=\"".$php_self."?offset=".$prev.$strQuery.$style."\">上一页</a><br/>"; }
if($next<$this->Total)
{$LinkTmpStr.="<a href=\"".$php_self."?offset=".$next.$strQuery.$style."\">下一页</a><br/>"; }
/*
if( ($this->TPages!=0) && ($this->CPages<$this->TPages) && ($this->TPages>1) )
{$LinkTmpStr.="<a href=\"".$php_self."?offset=".$last.$strQuery.$style."\">末页</a><br/>"; }
*/
return $LinkTmpStr=$LinkTmpStr;
}
}
function Page1($style=null) //翻页款式2
{
if(!empty($style))
$style=" style=\"".$style."\"";
$first=$this->FirstPageOffset();
$next=$this->NextPageOffset();
$prev=$this->PrevPageOffset();
$last=$this->LastPageOffset();
$strQuery=$this->PageQueryStr();
$php_self=$this->php_self;
$FirstPageStr="<span $style> <a href=\"".$php_self."?offset=".$first.$strQuery.">首页</a> | </span>";
$NextPageStr="<span $style><a href=\"".$php_self."?offset=".$next.$strQuery.">下一页</a> | </span>";
$PrevPageStr="<span $style><a href=\"".$php_self."?offset=".$prev.$strQuery.">上一页</a> | </span>";
$LastPageStr="<span $style> <a href=\"".$php_self."?offset=".$last.$strQuery.">末页</a></span>";
$LinkTmpStr=null;
$offset=$this->Offset;
$LinkTmpStr=null;
$CurrentPage=$this->CurrentPage();
$LastPage=$this->TotalPages();
if($this->TotalPages() <=1 ) return;
if($CurrentPage == 1)
{ return "<span".$style."> 首页 | 上一页 | </span>".$NextPageStr.$LastPageStr; }
if($CurrentPage==$LastPage)
{ return $FirstPageStr.$PrevPageStr."<span".$style.">下一页 | 末页</span>"; }
return $FirstPageStr.$PrevPageStr.$NextPageStr.$LastPageStr;
}
function Page2($style=null) //款式3
{
if(!empty($style))
$style=" style=\"".$style."\"";
$TotalPage=$this->TotalPages();
$CurrentPage=$this->CurrentPage();
$TmpStr="<select id='x99tvp' >\n";
$TmpStr="<select onChange=\"javascript:location.href='".$this->php_self."?offset='+this.value+'".$this->PageQueryStr()."';this.disabled=true\" $style>\n";
for($i=1;$i<=$TotalPage;$i++)
{
$nextoffset=($i-1)*$this->MaxLine;
$selected="";
if($i==$CurrentPage)
$selected="selected";
$TmpStr.="<option ".$selected." value=".$nextoffset.">".$i."</option>\n";
}
$TmpStr.="</select>\n";
return $TmpStr;
}
function Page3($style=null) //款式4
{
if(!empty($style))
$style=" style=\"".$style."\"";
$CurrentPage=$this->CurrentPage();
$boxsize=strlen($CurrentPage);
if($boxsize==1) $boxsize=1;
else $boxsize-=1;
$TmpStr="<input size='".$boxsize."' $style onfocus=\"this.select();\">";
$TmpStr.="<input type=\"button\" value=\"go\" onClick=\"javascript:location.href='".$this->php_self."?offset='+((x99tvpbox.value-1)*".$this->MaxLine.")+'".$this->PageQueryStr()."';this.disabled=true;x99tvpbox.disabled=true\" $style>\n";
return $TmpStr;
}
//********************************end class
}
//----------- The File The End ----------
//若有定见或成绩请致信到 o5499@hotmail.com;o5499@etang.com
/*
$tp = new TViewPage();
$tp->SetSQLBuff($sqlbuff);
$tp->SetPageQuery("action","NULL");
$row=$tp->ReadList();
$rowcount=count($row)-1;
$ThePage=$tp->ThePage();
$Page=$tp->Page1();
利用实例:
function 李子(){
$tp = new TViewPage();
$sqlbuff="SELECT * FROM `test` WHERE `id`>100 ";
$tp->SetSQLBuff($sqlbuff);
$tp->SetPageQuery("action","NULL");
$row=$tp->ReadList();
$rownum=count($row);
#################
$tx = new z99Template();
$tx->SetVar("SelfPage",$_SERVER["SCRIPT_NAME"]);
$tx->SetFile("./template/");
$tx->SetBlock("BlockRomName");
###################
for($i=0;$i<=$rownum-1;$i++)
{
$tx->SetVar("",$row[$i][id]);
$tx->AddToBlock("BlockRomName");
}
$ThePage=$tp->ThePage();
$Page=$tp->Page1();
return $tx->OnlyReturn();
}
*/
ob_end_flush();
?>
php manual(PHP手册)肯定是要从网上下载一个的,它很权威,也很全面,我自己认为它是一本很好的参考书,但是不适合新手当教材使用。 |
|