AI智能
改变未来

618学习记录之php数据库分页管理


输出

昨天学习数据库的连接以及增删改查后
今天学习将数据库中的数据以表格形式输出到页面上

以表格形式输出,需要用到< table >< / table >标签。

//table.php<body><div class=\"box\" align=\"center\"><div class=\"title\" align=\"center\">员工信息表</div><table><tr><!-- <th width=\"5%\"></th> --><th>员工编号</th><th>员工姓名</th><th>出生日期</th><th>工作部门</th><th>入职日期</th><th>操作</th></tr><tr><?php foreach($data as $row) {  ?><!-- 每进行一次循环迭代,$res数组元素的值就会被赋值给  $row变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。--></tr><tr><td><?php echo $row[\'id\']; ?></td><td><?php echo $row[\'name\']; ?></td><td><?php echo $row[\'birthday\']; ?></td><td><?php echo $row[\'department\']; ?></td><td><?php echo $row[\'entry_time\']; ?></td><td>111</td></tr><?php }?></table></div></body>

此外,除了使用foreach循环输出,还可以使用for循环

<tr><?php for($i=0; $i<count($data); $i++) {  ?></tr><tr><td><?php echo $data[$i][\'id\'] ; ?></td><td><?php echo $data[$i][\'name\']; ?></td><td><?php echo $data[$i][\'birthday\']; ?></td><td><?php echo $data[$i][\'department\']; ?></td><td><?php echo $data[$i][\'entry_time\']; ?></td><td>111</td></tr><?php }?>

分页功能

有首页、尾页、上一页、下一页
使用limit语句

//page.php<?php//分页功能function makePageHtml($page,$max_page){$params = $_GET;//删除get参数中的pageunset($_GET[\'page\']);//重新生成URL中的get参数$params = http_build_query($_GET);if($params){$params.=\'&\';}//计算下一页$next_page = $page + 1;//判断下一页是否为大于最大页码,如果是则使它成为最后一页if($next_page > $max_page)$next_page=$max_page;//计算上一页$prev_page = $page - 1 ;//判断上一页是否小于第一页if($prev_page < 1)$prev_page=1;//拼接url$page_html  = \'<a href=\"?\'.$params.\'page=1\">首页</a>&nbsp;\';$page_html .= \'<a href=\"?\'.$params.\'page=\'.$prev_page.\'\">上一页</a>&nbsp;\';$page_html .= \'<a href=\"?\'.$params.\'page=\'.$next_page.\'\">下一页</a>&nbsp;\';$page_html .= \'<a href=\"?\'.$params.\'page=\'.$max_page.\'\">尾页</a>&nbsp;\';}?>
//dopage.php<?phpinclude \'./page.php\';header(\'Content-Type: text/html; charset=utf-8\');//连接数据库$conn=new mysqli(\"localhost\",\"root\",\"root\",\"test\");$connect->query(\"set names utf8\"); //数据库输出编码//每次获取的个数$page_size=2;//获取数据库中一共的数据条数$sql_count = \"slecet count(id) as count from workinfo\";$count = $conn->query($sql_count);$new_count = $count->fetch_assoc();//算最大页面$max_page = celi($new_count[\'count\']/$page_size);//获取当前页面$page = $_GET[\'page\'] ? intval($_GET[\'page\']) : 1 ;$page = $page > $max_page ? $max_page : $page;$page = $page < 1 ? 1 : $page;//拼接sql语句$limit_size = ($page-1)*$page_size;$page_html = makePageHtml($page,$max_page);$sql = \"selece id,name,FROM_UNIXTIME(birthday,\'%Y-%m-%d\') as birthday ,department,FROM_UNIXTIME(entry_time,\'%Y-%m-%d\') as entry_time from workinfo limit $limit_size,$page_size\";// echo $sql;// die();$res = $conn->query($sql);while($tmp=$res->fetch_assoc()){$data[]=$tmp;}require \'./table.php\';?>
<html><head><meta charset=\"utf-8\"><title>员工信息表</title><style >.box{margin:40;}</style></head><body><div class=\"box\" align=\"center\"><div class=\"title\" align=\"center\">员工信息表</div><table><tr><!-- <th width=\"5%\"></th> --><th>员工编号</th><th>员工姓名</th><th>出生日期</th><th>工作部门</th><th>入职日期</th><th>操作</th></tr><tr><?php foreach($data as $row) {?><!-- 每进行一次循环迭代,$res数组元素的值就会被赋值给  $row变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。--></tr><tr><td><?php echo $row[\'id\']; ?></td><td><?php echo $row[\'name\']; ?></td><td><?php echo $row[\'birthday\']; ?></td><td><?php echo $row[\'department\']; ?></td><td><?php echo $row[\'entry_time\']; ?></td><td><a href=\"\">修改</a></td></tr><?php }?></table><div class=\"page\"><?php echo $page_html; ?></div></div></body></html>


知识点整理

  1. 点击上/下一页,没有反应

可以在SQL语句下echo出来,复制到数据库中执行查看是否正确
我踩得雷:因为$_GET[‘page’]少写了 ’ _ \’符号,导致点击上/下一页的时候地址栏有变化但内容不变
可以 echo $sql; die();
此时,页面显示如下(当我有错时,无论page是1或2,总是limit 0,2)
而正确的应该是随着page的改变语句发生改变

  1. limit语句

** SELECT * FROM table LIMIT 5,10;**
检索记录行 6-15
为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
SELECT * FROM table LIMIT 95,-1;
检索记录行 96-last.
如果只给定一个参数,它表示返回最大的记录行数目:
SELECT * FROM table LIMIT 5;
检索前 5 个记录行
即,LIMIT n 等价于 LIMIT 0,n。

雪碧可乐_2020/6/16_16:41
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 618学习记录之php数据库分页管理