1,layui table模块自带的分页功能实现

前提:js中引入table模块并加载,用table.render()渲染表格

1.1设置table.render()中的page字段为true,开启分页功能。设置limit字段值,后端数据的mysql查询条件也需要加上limit字段查询。但是不设置count数据总数,分页功能此时不能实现,只是有个css样式显示。

table.render({elem: "#demo",url: "/goodList",cols: [[{title: "编号",type: "numbers",fixed: "left"}, {title: "id",field: "id",fixed: "left"}, {title: "商品名",field: "name",align: 'center',width: 100,fixed: 'left'}, {title: "价格",field: "price",align: 'center',width: 90,sort: true,edit: "text"}, {title: "库存",field: "number",align: 'center',width: 90,sort: true,edit: "text"}, {title: "店铺名",field: "shopName",align: 'center',width: 150}, {title: "分类",field: 'className',align: 'center',width: 80}, {title: "商品图",align: 'center',width: 300,templet: "#myImgs"}, {title: "商品详情",field: 'introduce',align: 'center',minWidth: 150}, {title: "编辑",align: 'center',width: 80,fixed: "right",toolbar: "#myEdit",minWidth: 60}, {title: "删除",align: 'center',width: 80,fixed: "right",toolbar: "#myDel",minWidth: 60}, {title: "上架",align: 'center',width: 80,fixed: "right",toolbar: "#mySwitch"}]],page: true, //开启分页功能limit: 5, //每一页的数据个数limits: [1, 2, 3, 4, 5, 6],})
  • limit:一页显示几条数据

  • limits:总的按几条查询

1.2 写后端商品检索的接口

table默认的请求方式为get,所以写get方式的接口。按照id值降序排列,并且依次查询5条数据,这些都是sql的查询条件。后端数据必须响应给浏览器code=0,count(数据总数),表示操作成功,才能实现分页查询功能。

app.get("/search", function(req, res) {var page = req.query.page || 1; //分页的页码值从1开始var limit = req.query.limit || 10; //每一页数据个数var nameKey = req.query.nameKey; //商品名,默认通配符*var shopKey = req.query.shopKey;var classKey = req.query.classKey;// 分页查询,先条件查询,再按ID倒叙排列,最后分页查询var count = 0;MyDBAction(`select * from goods where name like "%${nameKey}%" and shopName like "%${shopKey}%" and className like "%${classKey}%" order by id DESC  limit ${(page-1)*limit},${limit}`, function(data) {MyDBAction(`select count(*) as count from goods where name like "%${nameKey}%" and shopName like "%${shopKey}%" and className like "%${classKey}%"`, function(data1) {console.log(data1[count].count);count = data1[count].count;res.json({code: 0,data: data,count: count})})})
})

2,编辑当前管理员信息,提交头像,更改图片的src属性,更改登录用户名

2.1 设置好表单样式

 <form class="layui-form layui-col-xs8 layui-col-sm6 layui-col-md4" lay-filter="binge"><input type="text" name="id"><div class="layui-form-item"><label class="layui-form-label">头像</label><div class="layui-input-block" id="imgBox"><a href="javascript:;"><img src="" alt="" id="head"></a></div></div><div class="layui-form-item"><label class="layui-form-label">用户名</label><div class="layui-input-block"><input type="text" name="name" required lay-verify="required" placeholder="请输入商品名称" autocomplete="off" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">密码</label><div class="layui-input-block"><input type="text" name="pas" required lay-verify="required" placeholder="请输入商品价格" autocomplete="off" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">年龄</label><div class="layui-input-block"><input type="number" name="age" required lay-verify="required" placeholder="请输入商品库存" autocomplete="off" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">性别</label><div class="layui-input-block"><input type="radio" name="sex" value="男" title="男"><input type="radio" name="sex" value="女" title="女" checked></div></div><div class="layui-form-item"><div class="layui-input-block"><button class="layui-btn" lay-submit lay-filter="formDemo">修改</button></div></div></form>

2.2 请求当前用户的信息,展示到表单中

连接数据库,根据会话存储的用户名传入到接口中,并返回该用户名的信息,显示到表单中

2.2.1 前端传入用户名参数

用get方式把会话存储的用户名传入服务器,并且获取服务器搜索的数据,给表单赋值显示到表单中,这其中就涉及到form模块表单赋值操作。

 layui.use(['jquery', 'layer', 'form'], function() {var $ = layui.jquery,layer = layui.layer,form = layui.form;$.get("/MyAdmin", {username: sessionStorage.getItem("name")}, function(data) {console.log(data.msg); //是个数组var admin = data.msg[0];// 表单的取值和赋值,需要用到form.val(filter,object),所以form表单必须要有lay-filter属性form.val("binge", {id: admin.id,name: admin.username,pas: admin.password,age: admin.age,sex: admin.sex})// 显示头像$("#head").attr("src", `../HeadImg/${admin.username}.jpg`)$("#head").error(function() {$("#head").attr("src", `../HeadImg/head_default.jpg`)});})$(`[name="id"]`).css("display", "none");})

2.2.2 form表单赋值操作

把数据库的数据显示到表单中,利用表单赋值操作实现。前提:form表单有lay-filter属性值。

使用form.val(filter,object)实现表单的取值和赋值,object中的属性名跟form表单中的name所有值对应,name:value

该表单只能获取用户名、密码、年龄、性别,而id获取不到,需要在form表单中添加一个input标签来获取id值,并利用form.val动态显示到表单的输入框中。在监听表单提交的时候再隐藏掉该获取id的input输入框。

$.get("/MyAdmin", {username: sessionStorage.getItem("name")}, function(data) {console.log(data.msg); //是个数组var admin = data.msg[0];// 表单的取值和赋值,需要用到form.val(filter,object),所以form表单必须要有lay-filter属性form.val("binge", {id: admin.id,name: admin.username,pas: admin.password,age: admin.age,sex: admin.sex})// 显示头像$("#head").attr("src", `../HeadImg/${admin.username}.jpg`)$("#head").error(function() {$("#head").attr("src", `../HeadImg/head_default.jpg`)});})

显示当前用户名的头像:

  • 给图片设置一个点击事件,触发导航栏的上传头像按钮的点击,实现管理员点击头像跳转到上传头像呢个html页面

 <a οnclick="setHeadImg()" href="javascript:;"><img src="" alt="" id="head"></a><script>// 触发导航栏的上传头像按钮的点击,实现管理员点击头像跳转到上传头像呢个html页面function setHeadImg() {window.parent.document.getElementById("uploadBth").click();}</script>
  • 在请求中修改用户名之后,需要修改对应图片的重命名,如果有这个用户名命名的图片就重命名该用户名修改之后的用户名,如果没有就显示默认的图片

      // 显示头像$("#head").attr("src", `../HeadImg/${admin.username}.jpg`)$("#head").error(function() {$("#head").attr("src", `../HeadImg/head_default.jpg`)});

2.2.3 监听表单提交

监听表单中的数据,然后把表单的数据提交到数据库中。

更新该用户名的用户信息的接口:

把表单中的数据全部传入服务器,其中包括用户名,先按照用户名查找该用户信息,然后再更新该用户的信息。

app.post("/editMyAdmin", function(req, res) {// 读取修改前的用户名MyDBAction(`select username from users where id=${req.body.id}`, function(data) {var oldName = data[0].username;MyDBAction(`update users set username="${req.body.name}",age=${req.body.age},sex="${req.body.sex}",password="${req.body.pas}" where id=${req.body.id}`)
​// 判断用户名是否修改,如果用户名更新了,那么头像名也要对应更新var userImgPath = "./public/HeadImg/" + oldName + ".jpg"; //用户头像路径,可能存在if (oldName != req.body.name && fs.existsSync(userImgPath)) {fs.rename(userImgPath, "./public/HeadImg/" + req.body.name + ".jpg", function(err) {if (err) console.log(err.message);})}})// 修改数据库
​res.json({ code: 1, msg: "操作成功" })
})

改变文件的名字,需要用到fs模块的rename方法

  • oldName:记录没修改之前的用户名

  • userImgPath:没修改之前的用户头像路径

  • 修改头像之后,也要修改会话存储的用户名和cookie值,并且更新登录的用户名

2.2.4 请求接口

// 查询当前管理员
app.get("/MyAdmin", function(req, res) {MyDBAction(`select * from users where username="${req.query.username}"`, function(data) {res.json({code: 1,msg: data})})
});

layui分页功能实现、管理员模块相关推荐

  1. layui分页功能在vue写的H5中实现

    layui分页原文档:https://www.layui.site/doc/modules/laypage.html 文档介绍的比较简单,实际用起来我走了很多弯路: 1.count总数从接口返回,需要 ...

  2. Layui列表分页功能前后台实现(傻瓜式教程)

    Layui列表分页功能前后台实现 layui一直备受国内web开发者的喜欢.使用简单,样式也较为好看.本次说一下layui分页的实例,首先先引入layui,那是肯定的. 效果图: 引入一个maven依 ...

  3. layui table 分页功能实现

    今天看自己写的用layui table实现的页面效果,内容太多了,突发奇想加个分页,在百度里找了很多种方法,都不好用,可怎么也不想放弃,就一直找啊,尝试啊,无意间发现了一种简单好用的办法,完美的实现了 ...

  4. layui分页快速使用

    项目需要用layui的分页功能,但没工夫去学原理等等,直接拿来用. 1.建ResultBean类,用来返回前端表格需要的数据. 代码 package com.example.mybatisdemo.p ...

  5. 分页技巧_实现第一个分页功能(回复列表中的分页)

    分页技巧_实现第一个分页功能(回复列表中的分页) ======================================== 假设共25条数据,每页显示10条,则共3页 first  max - ...

  6. 【SSH项目实战】国税协同平台-26.分页功能编写

    可以看到,我们之前的用户管理.角色管理和信息发布管理的列表下均有这些东西: 总共1条记录,当前第 1 页,共 1 页    上一页  下一页 到 这个就是美工留给我们做分页的,我们接下来就以信息发布管 ...

  7. 转:mybatis - 分页功能

    本文转自http://www.cnblogs.com/jcli/archive/2011/08/09/2132222.html mybatis高级应用系列一:分页功能 Mybatis3.0出来已有段时 ...

  8. 用js实现分页功能以及利用xml实现分页功能——数据岛

    对于数据显示的分页,现在大多是直接通过数据库的动态读取来控制分页,这种方式相比js分页来说,效率低下.采用js分页,能够很好的控制数据的显示.目前大多是采用先预取全部的结果集,然后根据当前页数(pag ...

  9. django高级应用(分页功能)

    django高级应用(分页功能) 1.原生分页应用 前端html代码 1 <!DOCTYPE html> 2 <html lang="en"> 3 < ...

最新文章

  1. Python使用matplotlib绘制柱状图(bar plot)实战:水平条形图、垂直条形图、分组条形图、堆叠条形图
  2. phpwind管理权限泄露漏洞
  3. 邬贺铨:区块链技术将确保物联网隐私和安全
  4. python发红包问题_一个关于红包的问题引发的python算法初体验
  5. iOS开发网络篇—网络编程基础
  6. OC基础--成员变量的封装
  7. 深入了解字符集和编码
  8. WiFi mac地址详解
  9. SQL Server 数据库增删改查语句
  10. 找不到本地计算机策略组,Win10家庭版找不到本地组策略gpedit.msc解决办法
  11. ESXi主机从6.7升级到ESXi 7.0.3后无法识别Emulex LPe12000 HBA卡
  12. cubieboard上手
  13. 前端移动端几个组件库
  14. Python123第六周编程题
  15. docker: 打包h5项目的镜像
  16. Promise(微任务)- 让你看完就懂
  17. Java --- Xstream使用
  18. 谷歌浏览器报错ERR_MANDATORY_PROXY_CONFIGURATION_FAILED 解决办法
  19. cad记忆口诀_CAD快捷键就没记全过?是不是太衰,其实是没掌握方法
  20. 易语言多个mysql操作_易语言的数据库操作教程

热门文章

  1. 蒋鑫鸿:《今日行情》黄金蓄势待发日内交易机会!最新黄金走势分析
  2. 2022/6/26每日一题———黑名单中的随机数
  3. PythonStock(36)股票系统:解决历史数据问题,使用 ak.stock_zh_a_hist 获得历史相关数据,发现AK又更新到了v1.1.1版本,更新获得历史数据代码。
  4. python ElementTree解析xml
  5. 救砖用三星i9100的官方4.1.2版固件rom线刷包(英国版 欧版 国行版) 手机天堂-软件世界 | 手机天堂-软件世界...
  6. android参考文献英文字体,英文参考文献标准字体.doc.docx
  7. 【terminal theme】之 Miku 初音终端配色
  8. 冰层厚度监测仪-应用雷达技术监测冰层厚度
  9. 技术解析:红外额温枪方案
  10. 教程|监控项类型—SNMP客户端