吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2290|回复: 1
收起左侧

[会员申请] 申请会员ID:maozhenyu

[复制链接]
吾爱游客  发表于 2015-11-5 18:02
1、申 请 I D:maozhenyu
2、个人邮箱:maozhenyu@zhener.pw
3、原创技术文章:
本人主要研究和使用PHP C# JS C++(按熟练程度),正在学习Java和ASM,下面随便选了一篇(如何做出Discuz样的分页 PHP)


如何做出类似Discuz的按钮样式的分页系统?下面给出一个参考方案


第一步,我们需要对数据集LIMIT选取以及数据的总数统计


先定义一些基本参数
$maxRows_Recordset1 = 10;
$pageNum_Recordset1 = 0;
通过下列代码获取URL参数中的page
if (isset($_GET['page'])) {
  $pageNum_Recordset1 = intval($_GET['page'])-1;
}

第1页在数据集中为第0页。所以需要减一

$startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;



//这里我用了SESSION来记录数据的总数,防止多次查询,也可以让URL更加美观。大家也可以使用其他方法(注意需要session_start())
if ($_SESSION['totalpg']['user']!="") {
        $totalRows_Recordset1 = $_SESSION['totalpg']['user'];
        if($startRow_Recordset1>=$totalRows_Recordset1||$pageNum_Recordset1<=0){$startRow_Recordset1=0;$pageNum_Recordset1=0;}
}

MYSQL的连接部分就省略了

$query_Recordset1 = "SELECT * FROM member ORDER BY `uidid` ASC";
if($_SESSION['totalpg']['user']=="") { $_SESSION['totalpg']['user']=$totalRows_Recordset1 = mysql_num_rows(mysql_query($query_Recordset1));}
$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
$Recordset1 = mysql_query($query_limit_Recordset1);
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;

这样下来,查询部分就完成了。中间的部分大家可以根据需要完成
第二步,按钮的逻辑和设计

[PHP] 纯文本查看 复制代码
//获得全局变量[/font]
[/font]	global $pageNum_Recordset1,$totalPages_Recordset1,$totalRows_Recordset1;
	//如果不需要分页就直接结束好了
	if($totalPages_Recordset1==0||$totalPages_Recordset1=="-1"){return;}
	//开头画UI
	echo '<div class="cuspages right"><div class="pg"><em> '.$totalRows_Recordset1.' </em>';
	//如果页数大于10。需要选择性显示
	if($totalPages_Recordset1>10)
	{
	$dig=$pageNum_Recordset1-4<1?1:$pageNum_Recordset1-4; //显示往前5个按钮,到第一页就结束
	$dip=$pageNum_Recordset1+5>$totalPages_Recordset1?$totalPages_Recordset1+1:$pageNum_Recordset1+5; //显示往后四个按钮
	if($dip<10){$dip=10;}//如果没到10页,需要填充到10页
	if($dig+7>$totalPages_Recordset1){$dig=$totalPages_Recordset1-7;}//到尾页就结束 不再继续退
	}
	//如果记录小于10 就不这么麻烦了
	else{$dig=1;$dip=$totalPages_Recordset1+1;}
	//如果第一页按钮没显示出 就得显示了
	if($dig!=1){echo ' <a href="'.$mac.'&page=1" class="last">1 ...</a>';}
	//如果不是第一页 显示上一页
	if ($pageNum_Recordset1 > 0) { echo '<a href="'.$mac.'&page='.$pageNum_Recordset1.'" class="prev"><<</a>';}
	//然后开始循环显示需要的按钮
	for($ig=$dig;$ig<=$dip;$ig++)
	{
		if($ig==$pageNum_Recordset1+1){echo '<strong>'.$ig.'</strong>';}//当前页加粗显示
		else{echo '<a href="'.$mac.'&page='.$ig.'">'.$ig.'</a>';}//不是当前页显示个按钮
	}
	//如果最后一页的按钮没显示处理的话
	if($dip!=$totalPages_Recordset1+1)
	{
		$lp=($totalPages_Recordset1+1);echo ' <a href="'.$mac.'&page='.$lp.'" class="last">... '.$lp.'</a>';
	}
	//如果不是最后一页 就显示下一页按钮
	if($pageNum_Recordset1 < $totalPages_Recordset1){
		echo '<a href="'.$mac.'&page='.($pageNum_Recordset1+2).'" class="nxt">>></a>'; 
		}
	//结尾画UI
	echo '<kbd><input type="text" name="custompage" size="3"></kbd></div></div>';


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2015-11-10 12:47
明天开放注册,自己来注册吧。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-16 10:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表