用php做分页弄懂逻辑关系其实不难,不过我在听课的时候估计是被老师讲的那些变量里的英文单词给听懵了,因为有几个变量的名字都很像,只是换了两三个英文字母而已,有的就少几个这样的,听到一半已经不知道老师讲的这个变量代表的是什么了,写这个也只是为了复习一下,温故而知新嘛。
英文翻译:page:页 per:由,依靠
//引用数据库 下面附赠一个连接数据库的包装函数使用sql语句时用my_query()这个函数;include ./MySQLDB.php;
//先设置当前选中的页码数
$pageNum = isset($_GET['num']) ? $_GET['num'] : 1;
//定义每一页显示的记录数
$rowsPerPage = 5;
//查询总记录数
$sql = "select count(*) from publish";
$result = my_query($sql);
$rows = mysql_fetch_row($result);
$rowCount = $rows[0];//总记录数
//计算总页数
$pages = ceil($rowCount/$rowsPerPage); //总页数=向上取整(总记录数/每一页显示的记录数)
//拼凑出页码字符串
$strPage = ''; //这里是定义一个空字符串,然后用连接的方式把HTML的标记和内容都串联起来
//先拼凑出首页
$strPage .="<a href='./list_father.php?num=1'>首页</a>";
//拼凑出上一页
$preNum = $pageNum == 1 ? 1 : $pageNum-1;
$strPage .="<a href='./list_father.php?num=$preNum'>上一页</a>";
//显示的初始页
if($pageNum <= 3){
$startNum = 1;
}else{
$startNum = $pageNum-2;
}
//显示的初始页最大值
if($startNum >=$pageNum - 4){ //要显示的是五个页数所以初始页的最大值不能大于当前页—4
$startNum = $pageNum -4;
}
//防止页码出现负值
if($startNum <=1){
$startNum = 1;
}
//确定显示的最后一页$endNum
$endNum = $startNum + 4; //要显示的是五个页数所以最后一页必定是初始页+4
//防止最后一页出界
if($endNum>=$pages){ //最后一页大过总页就让他数字变总页的数字
$endNum = $pages;
}
for($i=$startNum;$i<=$endNum;$i++){ //拿初始页和最后一页循环比大循环,循环5次
if($i==$pageNum){ //当前的页码数被选中就给它样式区分其他页的页码数
$strPage .= "<a href='./list_father.php?num=$i'><font color=blue>$i</font></a>";
}else{
$strPage .= "<a href='./list_father.php?num=$i'>$i</a>";
}
}
//拼凑出下一页
$nextNum = $pageNum == $pages ? $pages : $pageNum+1;
$strPage .= "<a href='./list_father.php?num=$nextNum'>下一页</a>";
//拼凑出尾页
$strPage .= "<a href='./list_father.php?num=$pages'>尾页</a>";
//分页到此结束
<?php
function my_connect($arr){
//接受参数
$host = isset($arr['host']) ? $arr['host']:'主机名字';
$port = isset($arr['$port']) ? $arr['port']:'端口号';
$user = isset($arr['user']) ? $arr['user']:'用户类型';
$pass = isset($arr['isset']) ? $arr['isset']:'自己设置的密码';
$link = @ mysql_connect("$host:$port",$user,$pass);
if(!$link){
//数据库连接失败
echo "数据库连接失败!<br/>";
echo "错误编号:",mysql_errno(),"<br/>";
echo "错误信息:",mysql_error(),"<br/>";
die;
}
}
function my_query($sql){
//先执行sql语句
$result = mysql_query($sql);
//判断是否执行成功
if(!$result){
//输出相关错误信息
echo "sql语句执行失败!<br/>";
echo "错误sql语句是:",$sql,"<br/>";
echo "错误编号:",mysql_errno(),"<br/>";
echo "错误信息:",mysql_error(),"<br/>";
die;
}
return $result;
}
//设置默认字符集
function my_charset($charset){
$sql = "set names $charset";
my_query($sql);
}
//设置默认数据库
function my_database($db_name){
$sql = "use $db_name";
my_query($sql);
}
//连接数据库
$arr = array(
"user" => "用户类型",
"pass" => "设置的密码"
);
//连接数据三部曲
my_connect($arr);
my_charset('字符集');
my_database('要选择的数据库');