数据库中一个表,有10条消息,想分页显示出来,就是这么一个程序:
<?php
include("conn.php");//连接数据库
$pagesize=5;//设置每页显示消息条数
$url=$_SERVER["REQUEST_URI"]; //获取当前的地址。并且使用REQUEST_URL 使其
$url=parse_url($url);//使用parse_url函数:解析url使url变成数组。
$url=$url[path];//获取解析以后的path。因为解析以后会有很多关键字,例如scheme,host,user,pass等。。调用数组中的key方法:$url[key];
$numq=mysql_query("SELECT * FROM `test`"); //查询数据库总得信息
$num = mysql_num_rows($numq);//显示总数使用函数mysql_num_rows(函数名)  rows中文“行”;if($_GET[page]){  
$pageval=$_GET[page];
$page=($pageval-1)*$pagesize;
$page.=',';
}
if($num > $pagesize){
 if($pageval<=1)$pageval=1;
echo "共 $num 条".
" <a href=$url?page=".($pageval-1).">上一页</a> <a href=$url?page=".($pageval+1).">下一页</a>";
}
   echo  $SQL="SELECT * FROM `test` limit $page $pagesize ";
    $query=mysql_query($SQL);
    while($row=mysql_fetch_array($query)){    echo "<hr><b>".$row[name]." | ".$row[sex];    }
?>
为什么会出现一个$_GET[page]?这个不需要定义吗???求指导,这句的奥妙。。

解决方案 »

  1.   


    if($_GET[page]){   用来获取" <a href=$url?page=".($pageval-1).">上一页</a>中的page参数,来判断当前为第几页。
      

  2.   

    php在执行整个脚本之前,会对外部环境先初始化,比如用户提交的一些数据会被写入 $_POST, $_GET, $_FILES, $argv等。这些变量都被称为 超级全局变量。
    这么做的目的也是为了使编程更加轻松简单。
      

  3.   


    但是如果按照顺序进行的话,之前根本没有定义page啊。。无缘无故出来一个if($_GET[page]),应该判断是假的才对啊。求高手继续给解答一下,谢了
      

  4.   

    您这里所说的外部环境指什么?我这里只有一个数据库,一个conn.php和这个文件,它会初始化哪些东西?
      

  5.   

    我对这些个概念也没底。只能这么说:
    比如用户提交了一些表单数据,如 index.php?who=joanna
    或者命令行下运行时用户给定了一些参数 php -f index.php joanna
    那么在执行 index.php这个文件里的代码之前,PHP会先做一些工作,比如来整理收集这些参数。
    例如: 给 $_GET 超级全局变量赋值 $_GET['who'] = "joanna"; 。那么在开始执行index.php的代码时,你就可以直接使用这些变量,而不用自己动手去解析这些请求参数,减少了代码量。
      

  6.   

    再麻烦您一个问题:最开始的$_page在哪初始化的呢?就是说在哪一步$_page开始初始化为1的呢?
      

  7.   

    没有看到 $_page这个变量啊
    如果你说的是$page,那么 $page=($pageval-1)*$pagesize; 就是对$page的初始化。
      

  8.   

    想了好久也不明白,那$pageval=$_GET[page]得到的是什么?
      

  9.   

    这有绕回前面去了, $_GET是url附带的请求参数
    例如 http://hello.com/index.php?page=2
    那么在请求index.php的时候,还传递给 index.php 一个参数 page,它的值为2
    那么如何在PHP获取这个参数的值呢? 就用 $_GET['page'] , $_GET 就是url请求参数的集合