php+MySQL实战案例【六】数据分页查询
原计划本节学习的是编辑和删除用户信息,在案例开发过程中发现先把数据列表读取出来,再对列表的数据进行删除或修改更为合理,所以调整下学习顺序,先进行数据分页查询的学习,再对数据进行编辑和删除。
数据查询
我们的数据实际是存储在MySql数据库中的某个表中,用sql查询的结果如下图所示:
但我们不可能要求所有系统使用人员都可以写T-SQL直接操作数据表,因为便捷性和安全性都很差。人们更想通过界面操作,点几下鼠标就能对数据进行管理。
我们需要先把数据从数据库中取出来,让用户清楚看的每条记录的内容,并对数据进行基本操作(增/删/改)。
数据查询时系统处理流程:
MySql负责存储数据、PHP负责把数据从数据库取出来、html前端负责数据展示。
数据管理时系统处理流程:
用户在html前端作出操作、PHP根据相应的操作去操作MySql数据表、将处理结果在前端反馈给用户。
在我们处理完数据查询,把数据用指定的模板处理之后再展示的样子如下:
数据分页
在我们数据量很少或者用户量很少的情况下,系统查询数据分页和不分页的差别不是很明显。但是在多用户、庞大的数据量下分页是必要的,可以有效降低服务的负载,提高用户端的数据响应速度。
1.降低服务器负载
假设我们有表A数据量为1万条,并发用户有100人。用户在登录系统时所有用户同时请求首页所用到的A表数据时就会造成并发请求。此时对服务器来说单次请求的数据量是1万*100也就是100万。并发的大量的请求势必会过度消耗服务器的资源。
假设我们有分页处理,用户每次登录首页,我们只取第一页前10条数据。当用户进行翻页操作时再重新请求另外某页的10条记录。此时就算同样是100个人进行数据请求,每次对服务器的数据请求量只有100*10也就是1000。
经过简单的对比可以发现数据分页能够大幅度降低服务器负载。
2.提高用户端的数据响应
在不进行数据分页时,PHP请求到A表中的所有记录之后,需要处理这些数据,给数据套html模板。此时数据遍历比较费,如果数据量且网络带宽不高时,用户在登录之后数据加载很慢严重影响用户使用体验。
使用数据分页能够改善这个问题,每次请求都只请求少量数据,数据从请求到渲染显示的整个过程都很流畅。
案例关键代码分析
用户管理列表进行数据分页操作,默认每页显示5条数据,初始加载第一页的数据。js分页数据请求如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | //js分页数据请求方法 //page 表示第几页 //pagesize 表示每页显示几条记录 function PageInitForGetUser (page,pagesize) { $.ajax({ url: "action/GetAllUser.php" , dataType: "json" , async: true , data:{ page:page, pagesize:pagesize }, type: "POST" , //请求方式 success: function (req) { HtmlStr= "" ; if (req.length>0) { for ( var i = 0; i <=req.length - 1; i++) { HtmlStr+= '<tr><td>' +req[i].Id+ '</td><td><u style="cursor:pointer" onclick="Show(' +req[i].Id+ ')">' +req[i].username+ '</u></td><td >' +req[i].password+ '</td><td >' +req[i].sex+ '</td><td >' +req[i].phone_number+ '</td><td >' +req[i].email+ '</td><td >' +req[i].address+ '</td><td> ' +req[i].create_time+ '</td><td class="td-manage"><a href="javascript:;" onclick="Edit(' +req[i].Id+ ')"class="ml-5" style="text-decoration:none"><i class="layui-icon"></i></a><a href="javascript:;" onclick="Delete(' +req[i].Id+ ')" style="text-decoration:none"><i class="layui-icon"></i></a></td> </tr>' ; } $( "#UserTB" ).html(HtmlStr); } }, error: function () { alert( "数据接口请求错误!" ); } }); } |
PHP分页数据请求如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php header( "Content-Type: text/html;charset=utf-8" ); include '../com/DBHelper.php' ; $DB =New DBHelper(); $page = $_POST [ "page" ]; $pagesize = $_POST [ "pagesize" ]; $Resoult = $DB ->PageQuerySQL( "select * from sys_user where user_type='普通用户' order by Id desc" , $page , $pagesize ); echo $Resoult ; ?> |
前端分页控件初始化:
1 2 3 4 5 6 7 8 9 10 11 12 13 | $( ".zxf_pagediv" ).createPage({ pageNum: Math.ceil(TOTAL/PAGESIZE), //总记录/每页显示数=总页数 current: 1, //当前页数 backfun: function (e) { PageInitForGetUser(e.current,PAGESIZE); //回调函数,根据页数和页大小重新取数 } }); |
后续
下期更新:php+MySQL实战案例【七】数据编辑、删除。
目录如下:
php+MySQL实战案例【零】持续更新
php+MySQL实战案例【一】选择前端框架
php+MySQL实战案例【二】php数据库辅助类
php+MySQL实战案例【三】数据表设计
php+MySQL实战案例【四】管理员登录
php+MySQL实战案例【五】新增用户
php+MySQL实战案例【六】数据分页查询
php+MySQL实战案例【七】数据编辑、删除
php+MySQL实战案例【八】用户注册
php+MySQL实战案例【九】总结及源码分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!