php中在网页分页时,无法实现分页跳转

风尘孤子 发布于 2017/10/20 11:31
阅读 161
收藏 0

<?php
include("mysql.inc.php");
$perpage=7;//每页显示7条
//查询books的记录
$sql="SELECT 书籍编号,书籍名称,价格 FROM books2";
$result=mysqli_query($conn,$sql);
//获取查询结果的记录数
$totalrow=mysqli_num_rows($result);
$totalpage=ceil($totalrow/$perpage);//计算总页数
while ($arr=mysqli_fetch_array($result)) {
    $data[]=$arr;}//将全部数据存放到$data数组中
    //根据$_GET['page']参数值决定从第几页开始显示
    //代表页数的变量$page由1开始计算
    if(empty($_GET['page'])||is_numeric($_GET['page'])||$_GET['page']<1||$_GET['page']>totalpage)
        $page=1;
    else 
    $page=$_GET['page'];
?>
<!DOCTYPE html>
<html>
<head>
    <title>分页数据显示</title>
    <meta charset="utf-8">
    <style >
   table{
       border: 1 px solid black; width: 450px;
       text-align: center;
   }
    </style>
</head>
<body>
<table>
<tr>
<th class="narrow">书籍编号</th>
<th>书籍名称</th>
<th class="narrow">价格</th>
</tr>
<?php
//用循环输出当前页的数据
for ($i=0; $i <$perpage ; $i++) { 
    //根据页码计算要显示第几条数据
    $index=($page-1)*$perpage+$i;
    if($index>=count($data))
        break;//索引超出范围即可跳出循环
    if ($i%2==0) 
        echo '<tr class="grey">';
    
    else echo "<tr>";# code...
    echo "<td>{$data[$index]["书籍编号"]}</td>";
    echo "<td>{$data[$index]["书籍名称"]}</td>";
    echo "<td>{$data[$index]["价格"]}</td>";
    echo "</tr>";
}
echo "</table>";
//输出直接跳页的链接
for ($i=1; $i <=$totalpage; $i++) { 
    echo '<a href="./ch09-04.php?page_number='.$i.'">第'.$i.'页</a>&nbsp;&nbsp;'; 
/*    if ($i!=1) 
        echo "&nbsp";
    if($i==$page) echo $i;
    else
        echo sprintf('<a href="ch09-04.php?page=%d">%d</a>',$i,$i);*/
}mysqli_free_result($result);
?>

</body>
</html>

在进行网页分页时只能浏览第一页数据,其他页面无法跳转,求解答

加载中
0
Yanlongli
Yanlongli

1、传递参数和接收参数不一致

2、数据全部查询造成数据臃肿

下面是按照你的逻辑帮你改了一下,没有太过简化

   

<?php
include("mysql.inc.php");
$perpage=7;//每页显示7条
$page=$_GET['page'];//获取页数
//查询共多少条数据
$sql2="select count(`书籍编号`) FROM books2";//sql
$result=mysqli_query($conn,$sql2);//执行
$totalrow=mysql_num_rows($result); //获取数据总条数
//总页数
$totalpage = ceil($totalrow/$perpage);//ceil返回不小于当前数一个整数,如果有小数则进1
if(!$page || $page<1){//如果$page为传递或小于1则调整为第一页
	$page = 1;
}else if($page>$totalpage){	//如果大于总页数则调整为最后一页
	$page = $totalpage;
}
//查询books的记录
$sql="SELECT 书籍编号,书籍名称,价格 FROM books2 limit ($page-1)*$perpage,$perpage";
$result=mysqli_query($conn,$sql);
$val = mysql_fetch_row($result);
?>
<!DOCTYPE html>
<html>
<head>
    <title>分页数据显示</title>
    <meta charset="utf-8">
    <style >
   table{
       border: 1 px solid black; width: 450px;
       text-align: center;
   }
    </style>
</head>
<body>
<table>
<tr>
<th class="narrow">书籍编号</th>
<th>书籍名称</th>
<th class="narrow">价格</th>
</tr>
<?php
//用循环输出当前页的数据
foreach($val as $value){
    echo '<tr class="grey">';
    echo "<td>$value['书籍编号']</td>";
    echo "<td>$value['书籍名称']</td>";
    echo "<td>$value['价格']</td>";
    echo "</tr>";
}
echo "</table>";
//输出直接跳页的链接
echo "当前第-".$page."-页";
for ($i=1; $i <=$totalpage; $i++) { 
    echo '<a href="./ch09-04.php?page_number='.$i.'">第'.$i.'页</a>&nbsp;&nbsp;'; 
}
?>
</body>
</html>

 

Yanlongli
Yanlongli
回复 @风尘孤子 : a标签的作用时超链接,href储存该超链接的地址
风尘孤子
风尘孤子
回复 @Yanlongli : 请问最后的那个a标签里的href表示什么意思
Yanlongli
Yanlongli
我也没测试,不知道能不能用
返回顶部
顶部