一篇关于php分页函数应用及实现原理详解,有需要的同学可以参考一下。
第13课老师提供的分页函数,我进行了适当的修改,去掉了一些我不太好理解的地方。
只要你好好研究老师的函数,想必很容易就可以判断出我修改的地方。
如果你觉得我修改有什么不当的地方欢迎指证,交流可以促使你我进步!
-变量
1.局部变量
2.全局变量(global,$GLOBALS)
a.在函数外定义的局部变量,只可以在主程序使用,不可在函数内或其他文件使用
b.在函数内定义的局部变量,只可在本函数内使用
c.在函数外定义的局部变量,想要在函数内使用,必须在函数内将变量声明为global
d.在函数内定义的局部变量,想要在函数外使用,必须在函数内将变量声明为global
注意:
1.必须先将变量声明为global,然后才赋值
错误: global $color="red";
正确: global $color;$color="red";
2.必须先声明,再使用
错误:echo $color;global $color;
正确:global $color;echo $color;
f.函数的参数为局部变量,如果想要在外部使用,不能使用global这种方式(因为不符合先声明,再使用的原则)
则使用超全局变量 $GLOBALS(大写,小写有不确定性)

图片:图c.JPG
图片:图d.JPG
| 代码如下 |
|
|
<?php
//$totle为总条数,$displaypg为每页显示的条数
function PAGEFT($totle, $displaypg = 20) {
global $firstcount, $pagenav;
$GLOBALS["displaypg"] = $displaypg;
//取得当前页数
if($_GET['page'])
$page=$_GET['page'];
else $page = 1;
//取得当前页的地址
$url_arr=parse_url($_SERVER["REQUEST_URI"]);
$url=$url_arr['path'];
$lastpg = ceil($totle / $displaypg); //最后页
$page = min($lastpg, $page); //当前页
$prepg = $page -1; //上一页
$nextpg = ($page == $lastpg ? 0 : $page +1); //下一页
$firstcount = ($page -1) * $displaypg; //开始位置
//开始分页导航条代码:
$start=$totle ? ($firstcount +1) : 0;
$end=min($firstcount + $displaypg, $totle);
if($start!=$end)
$pagenav = "显示第 <B>" . $start . "</B>-<B>".$end. "</B> 条记录,共 $totle 条记录";
else
$pagenav = "显示第 <B>".$end."</B> 条记录,共 $totle 条记录";
//如果只有一页则跳出函数:
if ($lastpg <= 1)
return TRUE;
$pagenav .= " <a href='$url'>首页</a> ";
if ($prepg)
$pagenav .= " <a href='?page=$prepg'>前页</a> ";
else
$pagenav .= " 前页 ";
if ($nextpg)
$pagenav .= " <a href='?page=$nextpg'>后页</a> ";
else
$pagenav .= " 后页 ";
$pagenav .= " <a href='?page=$lastpg'>尾页</a> ";
//下拉跳转列表,循环列出所有页码:
$pagenav .= " 到第 <select name='topage' size='1' onchange='window.location="$url?page="+this.value'>n";
for ($i = 1; $i <= $lastpg; $i++) {
if ($i == $page)
$pagenav .= "<option value='$i' selected>$i</option>n";
else
$pagenav .= "<option value='$i'>$i</option>n";
}
$pagenav .= "</select> 页,共 $lastpg 页";
}
/////////////////////////////////////往下是操作分页函数的部分////////////////////////////////////////////////
include_once('conn.php');
$result=mysql_query("SELECT * FROM `news`");
$total=mysql_num_rows($result);
PAGEFT($total,3); //调用分页函数
$result=mysql_query("SELECT * FROM `news` limit $firstcount,$displaypg ");
while($row=mysql_fetch_array($result)){
echo "<hr><b>".$row['title']." | ".$row['content'];
}
echo "<br>".$pagenav;
?>
|