共享最简单的分页函数
时间:2006-08-14
来源:互联网
函数名称:Make_Page
函数功能:对数据进行分页显示,该函数可完全自动加上分页时所带的参数,该函数应在最后查询前调用,如下:
函数参数:&$QuerySql :分页数据的SQL语句,如"select * from users" ,传的是地址方式
$sql_link :MYSQL连接句柄
$array :可选的每页显示数,一维数组如"array(5,10,20)"
返 回 值:分面显示的链接字符串,将其输出到网页即可,
在调用该函数後,$QuerySql的内容将会改变为以下形式:
如"select * from users limit 0,10"
函数作者:袁维
更新日期:2006-6-25
*/
function Make_Page(&$QuerySql,$sql_link,$array=array(10,20))
{
//---------------设置分页的GET变量---------------------
//--这两处参数是程序自动加上的,顺序为"$Page_Rows=90&ActionPage=12"
$Aget='ActionPage'; //当前页参数
$Pget='Page_Rows'; //每页显示数
$PR_str="&{$Pget}=";
$AP_str="&{$Aget}=";
//---------------得到记录总数-------------------------
$res=@mysql_query($QuerySql,$sql_link);
$RecordNum=@mysql_num_rows($res);
@mysql_free_result($res);
//---------------得到每页显示数和当前显示的页数---------
$page = $_GET[$Aget]=='' ? 1 : $_GET[$Aget];
$page_rows = $_GET[$Pget]=='' ? $array[0] : $_GET[$Pget];
//---------------得到设置後的总页数-----------------------
if($RecordNum > 0 )
{
if($RecordNum < $page_rows ) $page_count = 1;
else if($RecordNum %$page_rows ) $page_count = (int)($RecordNum/$page_rows) + 1;
else $page_count = $RecordNum / $page_rows;
}else{
$page_count = 0;
}
//---------------处理分页时的参数-------------------------
$getval='?';
$str=$_SERVER["QUERY_STRING"]; //得到URL'?'后的字符串
if($str != "")
{
$tmp_str=strstr($str,$Pget); //得到分页参数字符串
if( $tmp_str != '' ) //加了分页参数
{
$getval .= str_replace($tmp_str,'',$str); //去除分面参数
}else $getval .= $str;
}
if( $getval[strlen($getval)-1] == '&' ){ //去掉最后的字符'&'
$getval=substr($getval,0,strlen($getval)-1);
}
//-------------改变SQL语句--------------------------------
$QuerySql .= " limit ".($page-1)*$page_rows .", $page_rows";
//-------------生成可选的每页显示数---------------------------
$page_string='所有 <span style="color:#FF0000">'.$RecordNum.'</span>项';
$page_string.=',共 <span style="color:#FF0000">'.$page_count.'</span>页,每页显示 ';
//_____________生成可选的每页数连接-------------------------
if( is_array($array) )
{
foreach($array as $val)
{
$value = $getval.$PR_str.$val; //改变每页显示数是不加分页数
if($getval == '?') $value=str_replace('?&','?',$value);
if( $val == $page_rows )
$page_string .= '[<span style="color:#FF0000"><strong>'.$val.'</strong></span>] ';
// $page_string .= '<a href="'.$value.'" title="更改每页显示为'.$val.'项"><strong>'.$val.'</strong></a> ';
else $page_string .= '<a href="'.$value.'" title="更改每页显示为'.$val.'项">'.$val.'</a> ';
}
$page_string .= '项 ';
}
//-------------生成翻页链接-------------------------------
$value=$getval.$PR_str.$page_rows.$AP_str;
if($getval == '?') $value=str_replace('?&','?',$value);
/* 图片的HTML代码
<font face="Webdings">9</font> //首页
<font face="Webdings">7</font> //上一页
<font face="Webdings">8</font> //下一页
<font face="Webdings">:</font> //尾页
*/
if( $page == 1 )
$page_string .= '<font face="Webdings">9</font> <font face="Webdings">7</font> ';
else {
$page_string .= '<a href="'.$value.'1" title="首页"><font face="Webdings">9</font></a> ';
$page_string .= '<a href="'.$value.($page-1).'" title="上一页"><font face="Webdings">7</font></a> ';
}
if( ($page == $page_count) || ($page_count == 0) ) //--显示最后一页
{
$page_string .= '<font face="Webdings">8</font> <font face="Webdings">:</font> ';
}else{
$page_string .= '<a href="'.$value.($page+1).'" title="下一页"><font face="Webdings">8</font></a> ';
$page_string .= '<a href="'.$value.$page_count.'" title="尾页"><font face="Webdings">:</font></a> ';
}
//-----------生成可选分页数---------------------------------
$page_string.="转到<select name=\"topage\" size=\"1\" onchange=\"javascript:location.reload(this.value);\"> \n\r";
for($i=1; $i<=$page_count; $i++)
{
if($i == $page)
$page_string.='<option value="'.$value.$i.'" selected="selected">'."第{$i}页</option>\n";
else $page_string.='<option value="'.$value.$i.'">'."第{$i}页</option>\n";
}
$page_string .= '</select>';
return $page_string;
}
// 调试分页函数的代码
$_HOST_NAME_ = "localhost"; //主机名
$_USER_NAME_ = "root"; //用户名
$_USER_PASS_ = "root"; //密码
$_DB_NAME_ = "elearning"; //数据库名
$sql_link=mysql_connect($_HOST_NAME_, $_USER_NAME_, $_USER_PASS_);
mysql_select_db($_DB_NAME_,$sql_link);
$query='select * from test_table where 1'; //products表中数据最好多一点,效果更明显
$pagestr=Make_Page($query,$sql_link);
mysql_query($query,$sql_link);
//-----其它处理------
//------------------
echo $pagestr;
效果请看附件!!
作者: bzby555 发布时间: 2006-08-14
作者: Nickboy 发布时间: 2006-11-26
作者: forest 发布时间: 2006-11-27
作者: feifengxlq 发布时间: 2006-11-28
作者: carra 发布时间: 2006-11-28
作者: leehui1983 发布时间: 2006-11-28
作者: hy0kl 发布时间: 2006-12-19
话说回来,代码不错,可不是最简单的
作者: leehui1983 发布时间: 2006-12-19
引用:
原帖由 feifengxlq 于 2006-11-28 00:59 发表真是不明白为什么要把sql放进分页里面:L
作者: bzby555 发布时间: 2006-12-23
作者: yyb 发布时间: 2007-03-02
要修正一下 这个分页的js 和那个字体firefox不认
作者: hatoyu 发布时间: 2007-03-13
分页后变量就没有。如下:
楼主帮看看怎么解决阿
$query = 'SELECT productid , usualid , otherid , cname , ename, imgurl,thumb FROM product WHERE otherid LIKE "%'.$_POST[key].'%" or usualid LIKE "%'.$_POST[key].'%" or productid LIKE "%'.$_POST[key].'%" or cname LIKE "%'.$_POST[key].'%" or ename LIKE "%'.$_POST[key].'%" ORDER BY productid DESC';
作者: hatoyu 发布时间: 2007-03-13
汗一下
作者: hatoyu 发布时间: 2007-03-13
作者: dzjzmj 发布时间: 2007-03-14
作者: skyjhz 发布时间: 2007-03-14
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28