13-4当前页码高亮显示与页码跳转–PHP实战开发教程

13-4当前页码高亮显示与页码跳转–PHP实战开发教程

孟拿沤公股订爆杀能佰咐岁熟


新建demo5.php

13-4当前页码高亮显示与页码跳转–PHP实战开发教程第1张

代码:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>实现上一页与下一页,首页,尾页</title>
    <style>
        table,th,td
        {
            border: 1px solid black;
        }
        table
        {
            /*--折叠表格线*/
            border-collapse: collapse;
            width:70%;
            /*上下30px  左右居中*/
            margin:30px auto;
            /*文字居中*/
            text-align: center;

        }
        table th
        {
            /*背景色,浅天蓝色*/
            background-color:lightskyblue ;
        }
        h3
        {
            /*文本居中*/
            text-align: center;
        }
        h3 a
        {

            /*去除下划线*/
            text-decoration: none;
            /*左外边距10px*/
            margin-left: 10px;

            border:1px solid white;
            display: inline-block;
            background-color: lightsalmon;
            height:30px;
            line-height: 30px;
            padding: 0 10px;
            min-width:30px;
        }

        /*.active 高亮显示:当点击页面时添加高亮*/
        h3 a:hover, .active
        {
            background-color:lightpink ;
            color: white;
        }
        form
        {
            /*//变为行级元素*/
            display: inline;
        }

    </style>

</head>
<body>
<?php
//连接数据库
$db=mysqli_connect('127.0.0.1','root','root');
mysqli_select_db($db,'myuser');

$num=5;
//如果存在分页变量p,则页数为p  没有  则当前页数=1
$page=(isset($_GET['p']))?($_GET['p']):1;
$offset=($page-1)*$num;


$sql="select * from staff limit {$offset},{$num};";
$res=mysqli_query($db,$sql);
$rows=mysqli_fetch_all($res,MYSQLI_ASSOC);
//计算总页数(不能使用mysqli_num_rows($res),因为获取的是分页的记录数)
$number=mysqli_query($db,'select count(*) from staff');//获取结果集
//解析结果集  并保存索引到变量$total中  $total即当前记录总数
list($total)=mysqli_fetch_row($number);

//获取全部数据更加易懂的方法:
//$select_result=mysqli_query($db,"select * from staff");
//$number=mysqli_num_rows($select_result);

$pages=ceil($total/$num);//总的页数  ceil()向上取整




?>
<table>
    <caption>员工信息表</caption>
    <tr>
        <th>ID</th>
        <th>姓名</th>
        <th>性别</th>
        <th>年龄</th>
        <th>工资</th>
    </tr>
    <!--使用模板语法来写foreach 这样可以在html中写html代码 不用再写大括号-->
    <?php foreach ($rows as $row):?>
        <tr>
            <td><?php echo $row['staff_id']; ?></td>
            <td><?php echo $row['name']; ?></td>
            <td><?php echo $row['sex']; ?></td>
            <td><?php echo $row['age']; ?></td>
            <td><?php echo $row['salary']; ?></td>
        </tr>
    <?php endforeach; ?>

</table>
<h3>
    <a href="http://www.myphp.cn/13/demo5.php?p=1">首页</a>
    <a href="http://www.myphp.cn/13/demo5.php?p=<?php
    //如果页码为0时,强制将页码变为1  大于0时,显示分页变量值-1
    echo ($page-1)==0 ? 1 :($page-1);
    ?>">上一页</a>

<!--    当前页码添加高亮显示-->
<!--    //如果当前页码等于$i,说明在当前页  添加active属性-->
    <?php for($i=1;$i<=$pages;$i++):?>
        <a class="<?php if($page==$i) echo 'active'; ?>" href="http://www.myphp.cn/13/demo5.php?p=<?php echo $i ;?>"><?php echo $i; ?></a>
    <?php endfor;?>
    <a href="http://www.myphp.cn/13/demo5.php?p=<?php
    echo ($page+1)>$pages ? $pages:($page+1);
    ?>">下一页</a>
    <a href="http://www.myphp.cn/13/demo5.php?p=<?php echo $pages ?>">尾页</a>

<!--    页面直接跳转-->
    <form action="" method="get">
        第
        <select name="p" id="">
            <?php for($i=1;$i<=$pages;$i++):?>
                <option value="<?php echo $i ;?>"<?php if($page==$i) echo 'selected'; ?>><?php echo $i ;?></option>
            <?php endfor;?>
        </select>
        页
        <button>跳转</button>
    </form>
</h3>
</body>
</html>

执行:

13-4当前页码高亮显示与页码跳转–PHP实战开发教程第2张


当前页码为1时,不显示首页和上一页,为最后一页时,不显示下一页和尾页

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>实现上一页与下一页,首页,尾页</title>
    <style>
        table,th,td
        {
            border: 1px solid black;
        }
        table
        {
            /*--折叠表格线*/
            border-collapse: collapse;
            width:70%;
            /*上下30px  左右居中*/
            margin:30px auto;
            /*文字居中*/
            text-align: center;

        }
        table th
        {
            /*背景色,浅天蓝色*/
            background-color:lightskyblue ;
        }
        h3
        {
            /*文本居中*/
            text-align: center;
        }
        h3 a
        {

            /*去除下划线*/
            text-decoration: none;
            /*左外边距10px*/
            margin-left: 10px;

            border:1px solid white;
            display: inline-block;
            background-color: lightsalmon;
            height:30px;
            line-height: 30px;
            padding: 0 10px;
            min-width:30px;
        }

        /*.active 高亮显示:当点击页面时添加高亮*/
        h3 a:hover, .active
        {
            background-color:lightpink ;
            color: white;
        }
        form
        {
            /*//变为行级元素*/
            display: inline;
        }

    </style>

</head>
<body>
<?php
//连接数据库
$db=mysqli_connect('127.0.0.1','root','root');
mysqli_select_db($db,'myuser');

$num=5;
//如果存在分页变量p,则页数为p  没有  则当前页数=1
$page=(isset($_GET['p']))?($_GET['p']):1;
$offset=($page-1)*$num;


$sql="select * from staff limit {$offset},{$num};";
$res=mysqli_query($db,$sql);
$rows=mysqli_fetch_all($res,MYSQLI_ASSOC);
//计算总页数(不能使用mysqli_num_rows($res),因为获取的是分页的记录数)
$number=mysqli_query($db,'select count(*) from staff');//获取结果集
//解析结果集  并保存索引到变量$total中  $total即当前记录总数
list($total)=mysqli_fetch_row($number);

//获取全部数据更加易懂的方法:
//$select_result=mysqli_query($db,"select * from staff");
//$number=mysqli_num_rows($select_result);

$pages=ceil($total/$num);//总的页数  ceil()向上取整




?>
<table>
    <caption>员工信息表</caption>
    <tr>
        <th>ID</th>
        <th>姓名</th>
        <th>性别</th>
        <th>年龄</th>
        <th>工资</th>
    </tr>
    <!--使用模板语法来写foreach 这样可以在html中写html代码 不用再写大括号-->
    <?php foreach ($rows as $row):?>
        <tr>
            <td><?php echo $row['staff_id']; ?></td>
            <td><?php echo $row['name']; ?></td>
            <td><?php echo $row['sex']; ?></td>
            <td><?php echo $row['age']; ?></td>
            <td><?php echo $row['salary']; ?></td>
        </tr>
    <?php endforeach; ?>

</table>
<h3>
    <!--    当前是第一页的时候,上一页和首页链接应该不显示-->
    <?php if($page!=1): ?>
    <a href="http://www.myphp.cn/13/demo5.php?p=1">首页</a>
    <a href="http://www.myphp.cn/13/demo5.php?p=<?php
    //如果页码为0时,强制将页码变为1  大于0时,显示分页变量值-1
    echo ($page-1)==0 ? 1 :($page-1);
    ?>">上一页</a>
    <?php endif;?>
<!--    当前页码添加高亮显示-->
<!--    //如果当前页码等于$i,说明在当前页  添加active属性-->
    <?php for($i=1;$i<=$pages;$i++):?>
        <a class="<?php if($page==$i) echo 'active'; ?>" href="http://www.myphp.cn/13/demo5.php?p=<?php echo $i ;?>"><?php echo $i; ?></a>
    <?php endfor;?>

    <!--当前已经是最后一页的时候,下一页和最后一页也应该不显示-->
    <?php if($page!=$pages): ?>
    <a href="http://www.myphp.cn/13/demo5.php?p=<?php
    echo ($page+1)>$pages ? $pages:($page+1);
    ?>">下一页</a>
    <a href="http://www.myphp.cn/13/demo5.php?p=<?php echo $pages ?>">尾页</a>
    <?php endif;?>
<!--    页面直接跳转-->
    <form action="" method="get">
        第
        <select name="p" id="">
            <?php for($i=1;$i<=$pages;$i++):?>
                <option value="<?php echo $i ;?>"<?php if($page==$i) echo 'selected'; ?>><?php echo $i ;?></option>
            <?php endfor;?>
        </select>
        页
        <button>跳转</button>
    </form>
</h3>
</body>
</html>

执行:

13-4当前页码高亮显示与页码跳转–PHP实战开发教程第3张


截止目前的分页代码:

http://www.xuexianswer.com/yunpan/short.php?sid=RYxLJ3


么偏氓吠宝位啊德兼陆社阔费