NodeJs(08)——练习实战(与数据库交互增加数据&&分页查询显示在网页上&&删除指定数据&&修改指定数据)

2022-10-17 08:09:49

要求

显示
在这里插入图片描述
增加
在这里插入图片描述
修改
在这里插入图片描述
点击“修改”跳转到修改页并且显示对应信息,
点击"删除"即可直接删除。

开始写代码…

[第一步⭐:初始化项目]

npm init-y

[第二步⭐⭐:创建项目结构]
在这里插入图片描述

[第三步⭐⭐⭐:安装模板]

npm install express

npm install art-template

npm install express-art-template

npm install mysql

npm install supervisor

[第四步⭐⭐⭐⭐:入口文件app.js]

//1、引入模块var express=require('express');var router=require('./routes/router.js')//2、创建web服务器  app接收var app=express();//使用模板引擎
app.engine('html',require('express-art-template'));
app.use('/public',express.static('public'));//将文件夹public设置为静态资源//路由已经放到routes.js中
app.use(router);//使用//4、启动服务listen(端口号,回调函数)
app.listen(9090,()=>{
    console.log('服务器开启 http://127.0.0.1:9090/');})

[第五步⭐⭐⭐⭐⭐:数据库文件mysql.js]

/**
 * 访问mysql数据库
 */var mysql=require('mysql');//引入模块//创建连接var conn=mysql.createConnection({
    host:'localhost',
    user:'root',
    password:'root',
    database:'db8'//数据库名称});
conn.connect();//开启连接//导出
module.exports=conn;

[第六步:路由文件router.js(增删改查)]

本次练习要跳转的路径地址
首页详情页/
数据增加页/addstu
执行增加并返回到详情页/stu/create
执行删除并返回到详情页/stu/del/:sid
执行修改前的查询并返回到修改页/stu/selToupdate/:sid
执行修改并返回到详情页/stu/update
var express=require('express');var conn=require('../mysql.js');var bodyParser=require('body-parser');// 创建 application/x-www-form-urlencoded 编码解析var urlencodedParser= bodyParser.urlencoded({ extended:false});//建立一个路由容器var router=express.Router();//分页查询
router.get("/",(req,res)=>{var pagenum=2;//每页条数var page=0;if(req.query.page!=undefined){
        page=parseInt(req.query.page)-1;}
    console.log("page="+page);var sql="select * from students limit "+page*pagenum+","+pagenum;var sql2="select * from students";var count=0;
    conn.query(sql2,(err,result,fields)=>{if(result.length%pagenum!=0){
            count=parseInt(result.length/pagenum+1);}else{
            count=parseInt(result.length/pagenum);}
        
        console.log("长度="+count);})
    conn.query(sql,(err,result,fields)=>{if(err){return"失败";}
        console.log(result);var nums=newArray();for(var i=1;i<=count;i++){
            nums.push(i);}
        console.log("页码="+nums);
        res.render('index.html',{
            students: result,
            nums:nums,
            page:page});})});//跳转增加页
router.get("/addstu",(req,res)=>{
    res.render("post.html");});//删除
router.get("/stu/del/:sid",(req,res)=>{
    conn.query("delete from students where sid=?",req.params.sid,(err,result)=>{if(err){
            console.log("删除失败",err.message);return;}
        res.redirect("/");});})//修改前的查询
router.get("/stu/selToupdate/:sid",(req,res)=>{
    conn.query("select *from students where sid=?",req.params.sid,(err,result)=>{if(err){
            console.log("查询失败",err.message);return;}
        res.render("update.html",{
            stus:result});});})//修改
router.post("/stu/update",urlencodedParser,(req,res)=>{var sid=req.body.sid;var stuname=req.body.stuname;var stupwd=req.body.stupwd;var stuage=req.body.stuage;var stusex=req.body.stusex;
    conn.query("update students set stuname=?,stupwd=?,stuage=?,stusex=? where sid=?",[stuname,stupwd,stuage,stusex,sid],(err,result)=>{if(err){
            console.log("修改失败",err.message);return;}
        res.redirect("/");});})//增加
router.post("/stu/create",urlencodedParser,(req,res)=>{var stuname=req.body.stuname;var stupwd=req.body.stupwd;var stuage=req.body.stuage;var stusex=req.body.stusex;
    console.log(stuname,stupwd,stuage,stusex);
    conn.query("insert into students(stuname,stupwd,stuage,stusex)values (?,?,?,?)",[stuname,stupwd,stuage,stusex],(err,result)=>{if(err){
            console.log("插入失败",err.message);return;}
        res.redirect("/");});})//导出
module.exports=router;

[第六步⭐⭐⭐⭐⭐⭐:页面文件index.html&&post.html&&update.html]
index.html

<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="utf-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width, initial-scale=1"><title>laravel</title><!-- Bootstrap CSS 文件 --><linkrel="stylesheet"href="../public/css/bootstrap.min.css"><!-- 首页单独样式 --><linkrel="stylesheet"href="../public/css/index.css"></head><body><divclass="navbar navbar-default"><divclass="container"><divclass="navbar-header"><ahref="/"class="navbar-brand">首页</a><buttontype="button"class="navbar-toggle collapsed"data-toggle="collapse"data-target="#menu"aria-expanded="false"><spanclass="sr-only">菜单折叠</span><spanclass="icon-bar"></span><spanclass="icon-bar"></span><spanclass="icon-bar"></span></button></div><divclass="collapse navbar-collapse"id="menu"><ulclass="nav navbar-nav"><liclass="active"><ahref="/">开发</a></li><li><ahref="#">列表</a></li><li><ahref="#">头条</a></li><liclass="dropdown"><ahref="#"class="dropdown-toggle"data-toggle="dropdown">资讯<spanclass="caret"></span></a><ulclass="dropdown-menu"><li><ahref="#">学习一</a></li><li><ahref="#">学习二</a></li><liclass="divider"></li><li><ahref="#">技术学习</a></li><liclass="divider"></li><li><ahref="#">jq学习</a></li></ul></li></ul><formclass="navbar-form navbar-left"><divclass="form-group"><inputtype="text"class="form-control"placeholder="Search..."></div><buttontype="submit"class="btn btn-default">搜索</button></form><ulclass="nav navbar-nav navbar-right"><li><ahref="./login.html">登录</a></li><li><ahref="./register.html">注册</a></li><liclass="dropdown"><ahref="#"class="dropdown-toggle"data-toggle="dropdown">相关<spanclass="caret"></span></a><ulclass="dropdown-menu"><li><ahref="#">系列一</a></li><liclass="divider"></li><li><ahref="#">系列二</a></li></ul></li></ul></div></div></div><!-- 头部 --><divclass="jumbotron jump"><divclass="container"><h2>玩转laravel-之首页</h2><p> 玩转- laravel</p></div></div><!-- 中间内容区局 --><divclass="container"><divclass="row"><!-- 左侧菜单区域   --><divclass="col-md-3"><divclass="list-group"><ahref="/"class
  • 作者:碰磕
  • 原文链接:https://blog.csdn.net/m_xiaozhilei/article/details/123039855
    更新时间:2022-10-17 08:09:49