Nodeを使ってformタグで入力したデータをMysqlのデータベースに追加したいのですが、なんどやっても入力した文字が追加されず画面に表示されません。良ければお力添えを頂きたいです。
OS:Windouws10
node: version 1.0.0
mysql: version 2.18.1
ejs: version 2.18.i
server.js
javascript
1let express = require("express") 2const mysql = require('mysql') 3 4let http = require('http') 5let app = express() 6let server = http.createServer(app) 7 8app.use(express.static('public')) 9app.use(express.urlencoded({extended : true})) 10 11 12const connection = mysql.createConnection({ //データベースに接続 13 host: 'localhost', 14 user: 'root', 15 password : '', 16 database : 'mydb' 17}); 18 19app.get('/', (req, res)=>{ 20 connection.query('SELECT * FROM zatu', (error, results)=>{ 21 console.log(results) 22 res.render('top.ejs', {zatu: results}) 23 }) 24 25}) 26 27app.get('/new', (req, res)=>{ 28 res.render('new.ejs') 29}) 30 31app.post('/create', (req, res)=>{ // 今回問題の場所 32 console.log(req.body.zatuName, req.body.zatuContent) 33 34 connection.query('INSERT INTO zatu (title) VALUES (?)', [req.body.zatuName], // ここの処理が機能していない 35 (error, results)=>{ 36 connection.query('SELECT * FROM zatu', (error, results)=>{ 37 res.render('top.ejs', {zatu: results}) 38 }) 39 }) 40}) 41 42app.listen(process.env.PORT, ()=>{ 43 console.log("HelloWorld") 44})
top.ejs
HTML
1 <div class="item-form-wrapper"> 2 <form action="/create" method="POST"> 3 <input class="input" type="text" name="zatuName" placeholder="雑学のタイトル"> <!-- name属性を指定している --> 4 <textarea class="textarea" placeholder="ちょっとした説明" name="zatutitle"></textarea> <!-- なぜかtextarea内だとnameを受け取れない --> 5 <input type="submit" class="button is-success is-rounded" value="投稿する"> 6 </form> 7 </div>
あなたの回答
tips
プレビュー