PHP 分页 MySQL
/*
* Created on 2013-7-30
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
$page = $_get[page];
if(!function_exists(pageft)){
function pageft($totle,$displaypg=20,$url=''){
//定义几个全局变量:
//$page:当前页码;
//$firstcount:(数据库教程)查询的起始项;
//$pagenav:页面导航条代码,函数内部并没有将它输出;
//$_server:读取本页url"$_server["request_uri"]"所必须。
global $page,$firstcount,$pagenav,$_server;
$globals["displaypg"]=$displaypg;
if(!$page) $page=1;
//如果$url使用默认,即空值,则赋值为本页url:
if(!$url){ $url=$_server["request_uri"];}
//url分析:
$parse_url=parse_url($url);
$url_query=$parse_url["query"]; //单独取出url的查询字串
if($url_query){
$url_query=preg_replace("/(^|&)page=$page/","",$url_query);
//将处理后的url的查询字串替换原来的url的查询字串:
$url=str_replace($parse_url["query"],$url_query,$url);
//在url后加page查询信息,但待赋值:
if($url_query) $url.="&page"; else $url.="page";
}else {
$url.="?page";
}
//页码计算:
$lastpg=ceil($totle/$displaypg); //最后页,也是总页数
$page=min($lastpg,$page);
$prepg=$page-1; //上一页
$nextpg=($page==$lastpg ? 0 : $page+1); //下一页
$firstcount=($page-1)*$displaypg;
//开始分页导航条代码:
$pagenav="显示第
".($totle?($firstcount+1):0)." -
".min($firstcount+$displaypg,$totle)." 条记录,共 $totle 条记录";
//如果只有一页则跳出函数:
if($lastpg $pagenav.="
首页 ";
if($prepg)
$pagenav.="
前页 ";
else $pagenav.=" 前页 ";
if($nextpg)
$pagenav.="
后页 ";
else $pagenav.=" 后页 ";
$pagenav.="
尾页 ";
//下拉跳转列表,循环列出所有页码:
$pagenav.=" 到第
\n"; for($i=1;$i if($i==$page) $pagenav.="$i \n"; else $pagenav.="$i \n"; } $pagenav.=" 页,共 $lastpg 页";
}
}
include("conn.php");
$result=mysql_query("SELECT * FROM `test`");
$total=mysql_num_rows($result);
//调用pageft(),每页显示10条信息(使用默认的20时,可以省略此参数),使用本页URL(默认,所以省略掉)。
pageft($total,3);
echo $pagenav;
$result="SELECT * FROM `test` limit $firstcount,$displaypg";
echo $result;
$query=mysql_query($result);
while($row=mysql_fetch_array($query)){
echo "
".$row[name]." | ".$row[sex]; } ?> 回复讨论(解决方案) 可能是sql出了问题,建议你贴出报错信息以供分析。 echo mysql_error(); 能看到什么
用的着这么复杂。。。用get获取链接后面的参数替换 $firstcount 就行了
输出SQL语句。然后复制的PHPMYADMIN里面去,如果有错误,会直接报出来。。
echo $result; 这个是没问题的 说明sql语句没问题啊
这个错误说明你没有查到东西 如果查到就不会跟你说:你给的参数不是一个资源而是一个布尔值
检查SQL语句
select * from `test` limit 0, Copy after login
这里有问题,分页长度值没有加载进来
$displaypg=20 Copy after login
应该设为全局变量,在你的function 定义之前就声明。
$displaypg=20 应该设为全局变量,在你的function 定义之前就声明。 对于这个displaypg 变量我定义成了全局变量 把其置于function之前,好像也没用。我觉得这个代码有两个问题,一个是分页长度值没有加载进来,二是sql语句没有执行成功,我是刚接触php不久,求大神们详细指导。 ______3q!
你函数中有 $globals["displaypg"]=$displaypg; 本意是将每页行数保存下来供后续使用 但是你没有注意到,php 的变量名是区分大小写的 $GLOBALS["displaypg"]=$displaypg; 才是你需要的 还有一处 $page = $_get[page]; 应为 $page = $_GET[page]; 否则也不会跳页
你函数中有 $globals["displaypg"]=$displaypg; 本意是将每页行数保存下来供后续使用 但是你没有注意到,php 的变量名是区分大小写的 $GLOBALS["displaypg"]=$displaypg; 才是你需要的 还有一处 $page = $_get[page]; 应为 $page = $_GET[page]; 否则也不会跳页 谢谢 就是就这样的。