分页查询

我们在分页显示的基础上进行分页查询,与其他查询不同,分页查询因为在页面跳转时会刷新页面,所以需要用get传值方式将查询条件与页数传递到跳转的页面。

这就要用到Page()类的第三个参数$query。

Page()类在造连接对象时需要四个参数,分别为:

$total:总记录数,需要从数据库中查询;

$listRows:可选的,设置每页需要显示的记录数,默认为25条;

$query:可选的,为向目标页面传递参数,可以是数组,也可以是查询字符串格式;

$ord: 可选的,默认值为true,页面从第一页开始显示,false则为最后一页。

<h1>中国行政区域代号表</h1>
<?php
//取提交的name值
$name = "";
$fytj = "";
if(!empty($_GET["name"]))
{
    $name = $_GET["name"];    
    //分页查询条件,只有每次提交的时候才执行,而不是每次刷新页面时执行
    $fytj = "name = {$name} "; 
}
//将name作为条件拼在SQL条件语句里面
$tj = " where AreaName like '%{$name}%' ";  //中间拼接的条件语句,前后都有空格 //若提交的name值为空,则查所有的
?>
<div>
<form action="" method="get">
    <div>请输入名称: 
    <input type="text" name="name" value="<?php echo $name ?>" />&nbsp;
    <input type="submit" value="查询"  />    
    </div>
</form>
</div><br />

<table width="800" border="1" cellpadding="0" cellspacing="0">
<tr>
    <td>代号</td>
    <td>名称</td>
    <td>父级代号</td>
</tr>
<?php
include("../DB.class.php");
include("../page.class.php");
$db = new DB();
//查询总记录数,需要加查询条件
$sqlall = "select count(*) from chinastates".$tj;   
$attrall = $db->Query($sqlall);
$total = $attrall[0][0];
//先查出总记录条数放入变量$total,作为Page()的参数
$pg = new Page($total,15,$fytj,true);    //Page(总记录条数,每页显示的记录条数,分页查询条件,从第一页开始显示)
$sql = "select * from chinastates ".$tj.$pg->limit;   //SQL语句拼接查询条件,再拼接limit,拼接时注意前后空格
$attr = $db->Query($sql);
foreach($attr as $v)
{
    echo "<tr>
        <td>{$v[0]}</td>
        <td>{$v[1]}</td>
        <td>{$v[2]}</td>
    </tr>";    
}
?>
</table>
<div>
<?php
//调用分页信息
echo $pg->fpage();
?>
</div>

注意:

1. 查询条件在查询总记录数的时候也要加上
2. 分页时是通过地址栏中"?page=页数"实现的,这是类自动拼上的
分页查询条件同样也是在地址栏中拼上"查询关键字",可以是一个条件也可以是多个条件,中间用"&"连接
例如:http://localhost/0510/fenyechauxn.php?name=京&code=1101&page=2
这是get传值方式,为了方便,所以提交方式为get。
若想用post传值方式,则必须分别判断POST值与GET值是否为空
需要特别主意的是分页后,页面跳转时会刷新页面,所以分页查询条件必须写在判断提交值(即POST值或GET值)是否为空的花括号里面
这样分页查询条件只有在提交的时候才执行,而不是每次刷新页面时执行。

原文地址:https://www.cnblogs.com/xinghun/p/5485442.html