gpt4 book ai didi

mysql - 如何使用 EJS 将 Node.js 中的下拉值发送到 MySQL 数据库?

转载 作者:行者123 更新时间:2023-11-29 06:31:04 24 4
gpt4 key购买 nike

在我的 Node.js 项目中,我有一个 post 函数,用它我可以将数据写入 MySQL 数据库。我希望在我的添加页面上有一些值作为下拉菜单。目前我只能将所有带有文本字段的数据写入MySQL数据库。

我已经创建了下拉列表,但是使用这些下拉列表我只能显示相应表中的数据,但无论我尝试什么,都不会应用 post 函数中选定的值。

GET 和 POST 函数:

app.get('/add', function(req, res, next) {
connection.query("SELECT DISTINCT platform_platform FROM platform; SELECT DISTINCT art_art FROM art;", [1, 2], function (error, result, fields) {
if(error) {
req.flash('error', error)
res.render('games/add', {
data: ''
})
} else {

res.render('games/g-add', {
data: result[0],
data1: result[1],
g_name: '',
g_status: ''
})
}
});
})

app.post('/add', function(req, res, next) {
req.assert('g_name').notEmpty()
req.assert('g_status').notEmpty()

var errors = req.validationErrors()

if( !errors ) {

var game = {
g_name: req.sanitize('g_name').escape().trim(),
g_status: req.sanitize('g_status').escape().trim()
}

connection.query('INSERT INTO games SET ?', game, function(err, result) {
console.log(err);
console.log(result.length);
if(err) {
req.flash('error', err)

res.render('games/g-add', {
g_name: game.g_name,
g_status: game.g_status
})
} else {
res.render('games/g-add', {
g_name: '',
g_status: ''
})
}
})
}
else {
var error_msg = ''
errors.forEach(function(error) {
error_msg += error_msg + '<br>'
})
req.flash('error', error_msg)

res.render('games/g-add', {
g_name: req.body.g_name,
g_status: req.body.g_status
})
}
})

EJS:

<form action="/games/add" method="post">

....

<div class="form-group">
<h4>Platform</h4>
<select class="custom-select">
<% for (var i = 0; i < data.length; i++) { %>
<option>
<%= data[i].platform_platform %>
</option>
<% } %>
</select>
</div>

....

<div class="form-group">
<label class="col-form-label" for="inputDefault">Name:</label>
<input type="text" class="form-control" id="inputDefault" value="<%= g_name %>">
</div>

....

<input type="submit" value="POST" class="btn btn-danger">
</form>

我只知道这两个下拉列表不包含在 POST 函数中,但我不知道如何将所选数据获取到 POST 函数。

最佳答案

您必须在select中添加name属性。例如:

<div class="form-group">
<h4>Platform</h4>
<select name="platform" class="custom-select">
<% for (var i = 0; i < data.length; i++) { %>
<option>
<%= data[i].platform_platform %>
</option>
<% } %>
</select>
</div>

现在,在您的发布函数中,您可以从请求对象访问所选选项。

app.post('/add', function(req, res, next) {
....
var platform = req.body.platform;
....
})

您应该在“名称”输入中执行相同的操作,因为它也缺少 name 属性。

关于mysql - 如何使用 EJS 将 Node.js 中的下拉值发送到 MySQL 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56258500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com