zoukankan      html  css  js  c++  java
  • NodeJS Express博客项目实战 之 会员查看功能

    在上一篇实现了管理员的功能,在这篇博文中将实现会员的功能

    准备工作:

    在视图views中新建一个user的文件夹

    将视图views文件夹中的index.html的侧边导航栏中的会员管理的连接到/admin/user路由;

    <li><a href="/admin/user" target="right"><span class="icon-caret-right"></span>会员管理</a></li>

    在routers文件夹的admin中有user.js的路由:

    需要在里面进行加载页面:

    let express = require("express");
    
    let router = new express.Router();
    //会员管理首页
    router.get('/',function(req,res,next){
         res.render("admin/user/index");
            }
            
            
        })
        

    因此需要在视图views文件夹中的admin中的user文件夹中建立一个index.html

    index.html

    <!DOCTYPE html>
    <html lang="zh-cn">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <meta name="renderer" content="webkit">
    <title></title>
    <link rel="stylesheet" href="/public/admin/css/pintuer.css">
    <link rel="stylesheet" href="/public/admin/css/admin.css">
    <script src="/public/admin/js/jquery.js"></script>
    <script src="/public/admin/js/pintuer.js"></script>
    </head>
    <body>
      <div class="panel admin-panel">
        <div class="panel-head"><strong class="icon-reorder"> 会员列表</strong> <a href="" style="float:right; display:none;">添加字段</a></div>
        <div class="padding border-bottom">
          <ul class="search" style="padding-left:10px;">
            <li>搜索:</li>
           
            <li>
              <form action="" method="get">
              <input type="text"  placeholder="请输入搜索关键字" name="search" class="input" style="250px; line-height:17px;display:inline-block" />
              <button class="button border-main icon-search">搜索</button>
              </form>
            </li>
          </ul>
        </div>
        <table class="table table-hover text-center">
          <tr>
            <th width="100" style="text-align:left; padding-left:20px;">ID</th>
            <th>用户名</th>
            <th>注册时间</th>
            <th>状态</th>
          </tr>
          <!-- ejs 的模板引擎 -->
          <% data.forEach(item=>{ %>
             <tr>
              <td style="text-align:left; padding-left:20px;"><%= item.id %></td>
              <td><%= item.username %></td>
              <td><%= item.time %></td>
              <td>
                <% if(item.status==0){ %>
                  <a class="button border-green" href="javascript:;" onclick="status(this,<%= item.id %>,1)"> 白名单</a>
                <% }else{ %>
                  <a class="button border-red" href="javascript:;" onclick="status(this,<%= item.id %>,0)">黑名单</a>
                <% } %>
              
              </td>
            </tr>
        
          <% }) %>
         
          
          <tr>
            <td colspan="8">
              <div class="pagelist"> 
                
              </div>
            </td>
          </tr>
        </table>
      </div>
    <script>
    
    </script>
    </body>
    </html>
    index.html

    查看功能:

    在user.js中写入路由

    let express = require("express");
    
    let router = new express.Router();
    
    // 导入数据库模块
    
    const mysql = require("../../config/db.js");
    
    // 导入时间格式化
    
    const moment = require("moment");
    
    //会员管理首页
    router.get('/',function(req,res,next){
        
        
            
        
        mysql.query("select * from user order by id desc ,function(err,data){
            
            
        
            
            //判断是否有错误
            if(err){
                return "";
                
            }else{
                
                
                // 将时间格式化
                        data.forEach(item=>{
                            //item.username = item.username;
                            //item.time = moment(item.time*1000).format("YYYY-MM-DD HH:mm:ss");
                            item.time = moment(item.time).format("YYYY-MM-DD HH:mm:ss");
                                
                        })
                
                    
                
                console.log(data);
                //加载页面
          res.render("admin/user/index",{data:data});
            }
            
            
        })
        
        
    })
    
    
    
    module.exports = router;

    显示的效果:

    搜索功能与分页功能

    由于会员的人数可能会很多,因此需要一个分页效果的实现:

    需要对分页函数的封装

    数据库中会员的内容:

    使用搜索与分页功能的效果展示:

    在common文件夹中创建一个page.js

    进行对分页函数的封装;

    // 分页函数
    
    function pagess(tot,p=1,size=5){
        // 计算截取的开始位置、结束位置
        let start = (p-1)*size;
        // 计算总页数
        let pages = Math.ceil(tot/size);
    
        // 展示分页效果
        let show ="";
    
        show +=`<a href="?p=1">首页</a>`; 
        show +=`<a href="?p=${ p- 1 >=1 ? p - 1 : 1 }">上一页</a> `;
        show +=`<span class="current">${p}</span>`;
        show +=`<a href="?p=${ Number(p)+1 <= pages ?  Number(p)+1 : pages }">下一页</a>`;
        show +=`<a href="?p=${pages}">尾页</a>`;
    
        return {
            start:start,
            size:size,
            show:show
        }
    }
    
    module.exports = pagess;

    在user.js中进行导入分页方法:

    // 导入分页方法
    
    const page = require("../../common/page.js");
     1 let express = require("express");
     2 
     3 let router = new express.Router();
     4 
     5 // 导入数据库模块
     6 
     7 const mysql = require("../../config/db.js");
     8 // 导入分页方法
     9 
    10 const page = require("../../common/page.js");
    11 
    12 // 导入时间格式化
    13 
    14 const moment = require("moment");
    15 
    16 //会员管理首页
    17 router.get('/',function(req,res,next){
    18     
    19     
    20         //如何开发分页
    21         //第一页 0,5
    22         //第二页 5,5个
    23         //第三页 10 5
    24         //第四页  15 5
    25         //获取页码
    26         let p = req.query.p ? req.query.p :1;
    27         //console.log(p);
    28         // 接受检索的数据
    29 
    30       let search = req.query.search ? req.query.search :"";
    31 //默认每页展示数据
    32 let size=3;
    33 
    34 
    35 
    36 
    37      //计算总数据
    38     
    39     mysql.query("select count(*) tot from user where username like ? ",['%'+search+'%'],function(err,data){
    40         
    41         
    42         
    43         
    44         // 判断
    45         if (err) {
    46             return "";
    47         }else{
    48             // 获取总数据
    49             let tot = data[0].tot;
    50 
    51             let fpage = page(tot,p,size);
    52             // 查看数据
    53             
    54             mysql.query("select * from user where username like ?  order by id desc limit ?,?",['%'+search+'%',fpage.start,fpage.size],function(err,data)
    55             {
    56         
    57           //判断是否有错误
    58         if(err){
    59             return "";
    60             
    61         }else{
    62             
    63             
    64             // 将时间格式化
    65                     data.forEach(item=>{
    66                         //item.username = item.username;
    67                         //item.time = moment(item.time*1000).format("YYYY-MM-DD HH:mm:ss");
    68                         item.time = moment(item.time).format("YYYY-MM-DD HH:mm:ss");
    69                             
    70                     })
    71             
    72                 
    73             
    74             console.log(data);
    75             //加载页面
    76       res.render("admin/user/index",{data:data,show:fpage.show,search:search});
    77         }
    78         
    79         
    80     
    81             });
    82         }
    83     });
    84 
    85     
    86 
    87 });
    88 
    89 
    90 
    91 module.exports = router;
    user.js的总代码
     1 <!DOCTYPE html>
     2 <html lang="zh-cn">
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5 <meta http-equiv="X-UA-Compatible" content="IE=edge">
     6 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
     7 <meta name="renderer" content="webkit">
     8 <title></title>
     9 <link rel="stylesheet" href="/public/admin/css/pintuer.css">
    10 <link rel="stylesheet" href="/public/admin/css/admin.css">
    11 <script src="/public/admin/js/jquery.js"></script>
    12 <script src="/public/admin/js/pintuer.js"></script>
    13 </head>
    14 <body>
    15   <div class="panel admin-panel">
    16     <div class="panel-head"><strong class="icon-reorder"> 会员列表</strong> <a href="" style="float:right; display:none;">添加字段</a></div>
    17     <div class="padding border-bottom">
    18       <ul class="search" style="padding-left:10px;">
    19         <li>搜索:</li>
    20        
    21         <li>
    22           <form action="" method="get">
    23           <input type="text" value="<%= search %>" placeholder="请输入搜索关键字" name="search" class="input" style="250px; line-height:17px;display:inline-block" />
    24           <button class="button border-main icon-search">搜索</button>
    25           </form>
    26         </li>
    27       </ul>
    28     </div>
    29     <table class="table table-hover text-center">
    30       <tr>
    31         <th width="100" style="text-align:left; padding-left:20px;">ID</th>
    32         <th>用户名</th>
    33         <th>注册时间</th>
    34         <th>状态</th>
    35       </tr>
    36       <!-- ejs 的模板引擎 -->
    37       <% data.forEach(item=>{ %>
    38          <tr>
    39           <td style="text-align:left; padding-left:20px;"><%= item.id %></td>
    40           <td><%= item.username %></td>
    41           <td><%= item.time %></td>
    42           <td>
    43             <% if(item.status==0){ %>
    44               <a class="button border-green" href="javascript:;" onclick="status(this,<%= item.id %>,1)"> 白名单</a>
    45             <% }else{ %>
    46               <a class="button border-red" href="javascript:;" onclick="status(this,<%= item.id %>,0)">黑名单</a>
    47             <% } %>
    48           
    49           </td>
    50         </tr>
    51     
    52       <% }) %>
    53      
    54       
    55       <tr>
    56         <td colspan="8">
    57           <div class="pagelist"> 
    58              <%- show%>
    59           </div>
    60         </td>
    61       </tr>
    62     </table>
    63   </div>
    64 <script>
    65 
    66 </script>
    67 </body>
    68 </html>
    会员index.html的总代码
  • 相关阅读:
    URL域名获取
    SQL Server 索引结构及其使用(二)
    SQL Server 索引结构及其使用(一)[转]
    查询数据库中所有表的数据量、有效数据量以及其它定制数据量
    转:Servlet的url匹配以及url-pattern详解
    转:在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程
    MyEclipse +Servlet 乱码
    MyEclipse +Tomcat 异常操作
    Android Include标签
    转ATL对象类型
  • 原文地址:https://www.cnblogs.com/jiguiyan/p/11367603.html
Copyright © 2011-2022 走看看