首页    新闻    下载    文档    论坛     最新漏洞    黑客教程    数据库    搜索    小榕软件实验室怀旧版    星际争霸WEB版    最新IP准确查询   
名称: 密码:      忘记密码  马上注册
数据库 :: 数据库

PHP,MySQL,模板分页类


http://www.gipsky.com/



class Pages{

//数据源

var $sql;

//当前页的页码

var $currentPageNumber;

//每页的数据条数

var $itemsPerPage;

//调用的地址URL

var $url;

//总页数

var $totalPages;

//数据总数

var $totalNums;



//显示模块的前缀代码

var $model_block_pre;

//显示模块的后缀代码

var $model_block_end;

//显示循环数据的前缀代码

var $model_line_pre;

//显示循环数据的后缀代码

var $model_line_end;

//显示循环数据的主模版

var $model_main;

//模版参数

var $model_argvs;



//初始化函数

//$sql,数据源SQL

//$currentPageNumber,当前页的页码

//$url,调用的地址URL

//$model,用于显示的数据模版

//$itemsPerPage,每页的数据条数

function Pages($sql,$currentPageNumber,$url,$itemsPerPage = 10){

$this->sql = $sql;

$this->currentPageNumber = $currentPageNumber;

$this->itemsPerPage = $itemsPerPage;

$this->url = $url;

$this->url.=(stristr($this->url,'?')!=false)?'&':'?';

$this->get_total();

$this->get_safe_pages();

}



//获取总数和总页数

function get_total(){

$result = mysql_query($this->sql) or die("SQL Error:" . mysql_error());

$totalNums = mysql_num_rows($result);

$totalPages = ceil($totalNums/$this->itemsPerPage);

$this->totalNums = $totalNums;

$this->totalPages = $totalPages;

mysql_free_result($result);

}



//将当前页保持在安全的范围

function get_safe_pages(){

if ($this->currentPageNumber > $this->totalPages){

$this->currentPageNumber = $this->totalPages;

}elseif ($this->currentPageNumber < 1){

$this->currentPageNumber = 1;

}

}



//获取当前页的数据起始位置

function get_limit_start(){

$limit_start = ($this->currentPageNumber - 1) * $this->itemsPerPage;

return $limit_start;

}



//获取当前页的数据数目

function get_limit_nums(){

return $this->itemsPerPage;

}



//获取当前页的数据

function get_data(){

$SQL = $this->sql . " limit " . $this->get_limit_start() . "," . $this->get_limit_nums();

$result = mysql_query($SQL) or die("SQL Error:" . mysql_error());

return $result;

}



//检查主模版并且提取参数

function check_main_model(){

$temparray =split('\[',$this->model_main);

$returnarray = array();

for($i=1;$i
$tempstr = substr($temparray[$i],0,stripos($temparray[$i],']'));

$templenth = strlen( $tempstr );

if ($templenth != 0){

$returnarray[] = $tempstr;

}

}

$this->model_argvs = $returnarray;

if ( count($returnarray) == 0 )return false;else return true;

}



//根据模版显示数据

function show_data($model){

$this->model_block_pre = $model[0];

$this->model_block_end = $model[1];

$this->model_line_pre = $model[2];

$this->model_line_end = $model[3];

$this->model_main = $model[4];

if ($this->totalNums < 1){

echo '没有数据';

}elseif ($this->check_main_model() == false){

echo '模版错误';

}else{

echo $this->model_block_pre;

$result = $this->get_data();

while ( $row = mysql_fetch_assoc($result) ) {

$tempstr = $this->model_main;

echo $this->model_line_pre;

for($i=0; $i < count($this->model_argvs);$i ){

$preg = "(.*)(\[". $this->model_argvs[$i] ."\])(.*)";

$target = "\\1". $row[$this->model_argvs[$i]] ."\\3";

$tempstr = ereg_replace($preg,$target,$tempstr);

}

echo $tempstr;

echo $this->model_line_end;

}

echo $this->model_block_end;

}

}



//显示分页项目

function show_pages(){

if ($this->totalNums < 1){

//没有数据

}else{

echo "";

echo ".$this->url."page=1\">首页 ";

echo ".$this->url."page=". ($this->currentPageNumber - 1) ."\">上页 ";

echo ".$this->url."page=". ($this->currentPageNumber 1) ."\">下页 ";

echo ".$this->url."page=". ($this->totalPages) ."\">尾页 ";

echo ($this->currentPageNumber) ."/". ($this->totalPages) ." ";

echo "每页". ($this->itemsPerPage) ."条/共". ($this->totalNums) ."条";

echo "";

}

}

}

?>

[/code]

调用要这样
PHP:




$model = array(

//模版头

'

ID

姓名

问题

答案',

//模版尾

'',

//模版循环头

'',

//模版循环尾

'',

//模版主体,其中方括号中间的部分为数据库相应的字段名称

'[id][name][question][answered]'

);

$pages= new Pages($sql,(int)$_GET['page'],$_SERVER['PHP_SELF']);

//根据模版显示数据

$pages->show_data($model);

//显示相应的页码

$pages->show_pages();



[/code]

<< 可以统计中文字符串长度的php函数 让新安装的MySQL数据库变得更安全 >>
评分
10987654321
API:
gipsky.com& 安信网络
网友个人意见,不代表本站立场。对于发言内容,由发表者自负责任。

系统导航

 

Copyright © 2001-2010 安信网络. All Rights Reserved
京ICP备05056747号