热搜:NVER node 开发 php

编写php分页代码 mysql_fetch_arry()就是无法执行

2024-09-20 09:55:01
编写php分页代码 mysql_fetch_arry()就是无法执行

PHP 分页 MySQL

<?php
/*
 * 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.=" 到第  页,共 $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,
这里有问题,分页长度值没有加载进来

$displaypg=20
 应该设为全局变量,在你的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];
否则也不会跳页


谢谢  就是就这样的。