Javascript 如何从html页面(nodejs-express)将选定的数据库列存储为变量?
我有一个页面,显示mysql数据库中的航班。首先,我有一个表单,用户在其中选择航班的目的地和日期,然后提交表单后,我转到另一个页面,根据用户的选择显示航班。在每个航班上都有一个Book按钮,可以在另一个页面重定向用户。当用户单击此按钮(并选择航班)时,我想从数据库中获取所选航班的id,可能将其存储在变量(或其他)中,以了解用户选择的航班。这是我的密码:Javascript 如何从html页面(nodejs-express)将选定的数据库列存储为变量?,javascript,html,mysql,node.js,express,Javascript,Html,Mysql,Node.js,Express,我有一个页面,显示mysql数据库中的航班。首先,我有一个表单,用户在其中选择航班的目的地和日期,然后提交表单后,我转到另一个页面,根据用户的选择显示航班。在每个航班上都有一个Book按钮,可以在另一个页面重定向用户。当用户单击此按钮(并选择航班)时,我想从数据库中获取所选航班的id,可能将其存储在变量(或其他)中,以了解用户选择的航班。这是我的密码: index.js(以下是路线) airticketcontroller.js const mysql = require('mysql');
index.js(以下是路线) airticketcontroller.js
const mysql = require('mysql');
// DB connection
const connection = mysql.createConnection({
host: 'localhost',
user: 'myuser',
password: 'mypassword',
database: 'mydatabase'
});
connection.connect(function(error) {
if (!!error) console.log(error);
else console.log('Database Connected!');
});
//---------------
var fromDestination, toDestination, departDate, returnDate;
var departFlightId, returnFlightId;
exports.airForm = (req, res) => {
fromDestination = req.body.from_destination;
toDestination = req.body.to_destination
departDate = req.body.depart_date;
returnDate = req.body.return_date;
res.redirect('/air_ticketsSelect');
}
exports.displayFlights = (req, res, next) => {
let query = connection.query({ sql: "SELECT * FROM flight WHERE from_destination=? AND to_destination=? AND depart_date=?", values: [fromDestination, toDestination, departDate] }, function(err, results, fields) {
if (err) throw err;
res.render('air_ticketsSelect', {
title: 'Flights',
departFlights: results
});
});
}
exports.saveDepartureFlightForm = (req, res) => {
let query = connection.query({ sql: "SELECT * FROM flight WHERE from_destination=? AND to_destination=? AND depart_date=?", values: [fromDestination, toDestination, departDate] }, function(err, results, fields) {
if (err) throw err;
res.render('air_ticketsSelectReturn', {
title: 'Flights',
departFlightId: results.flight_id
});
console.log(departFlightId);
});
}
exports.displayFlightsForReturn = (req, res) => {
let query = connection.query({ sql: "SELECT * FROM flight WHERE from_destination=? AND to_destination=? AND depart_date=?", values: [toDestination, fromDestination, returnDate] }, function(err, results, fields) {
if (err) throw err;
res.render('air_ticketsSelectReturn', {
title: 'Return Flights',
returnFlights: results
});
});
}
机票。ejs(第一种形式)
往返
单程
发件人:
致:
出发日期:
返回日期:
搜索航班
机票选择.ejs(显示航班的页面)
离开
航空公司
从…起
到
出发日期
到达日期
出发时间
到达时间
价格
行动
书
当用户单击按钮Book时,用户将被重定向到air_tickets selectreturn,这是一个类似的返回页面。我想将航班号存储在一个变量中,以便以后使用。
此外,这是航班的mysql表:
您可以利用会话
根据请求和操作为当前用户维护会话。创建另一个变量
var3
,并在第一个查询中初始化它
var var3;
exports.displayFlights = (req, res, next) => {
let query = connection.query({ sql: "SELECT * FROM flight WHERE from_destination=? AND to_destination=? AND depart_date=?", values: [fromDestination, toDestination, departDate] }, function(err, results, fields) {
if (err) throw err;
var3 = results;
res.render('air_ticketsSelect', {
title: 'Flights',
departFlights: results
});
});
}
这样,您就不必一次又一次地查询数据库。您只需在传递查询结果时传递var3即可。像
exports.saveDepartureFlightForm = (req, res) => {
res.render('air_ticketsSelectReturn', {
title: 'Flights',
departFlightId: var3.flight_id
});
console.log(departFlightId);
});
}
编辑:
代码中有三个问题<!-- Display Flights -->
<div class="col-md-9" id="jumboCopy">
<h1> DEPARTURE</h1>
<br>
<form id="departureFlightForm" method="POST" action="/saveDepartureFlightForm">
<table class="table table-dark table-striped">
<thead>
<tr>
<th>Airline</th>
<th>From</th>
<th>To</th>
<th>Depart date</th>
<th>Arrival date</th>
<th>Depart time</th>
<th>Arrival time</th>
<th>Price</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<% departFlights.forEach(function(flight){ %>
<tr>
<td>
<%= flight.airline %>
</td>
<td>
<%= flight.from_destination %>
</td>
<td>
<%= flight.to_destination %>
</td>
<td>
<%= flight.depart_date.toLocaleDateString('el-GR') %>
</td>
<td>
<%= flight.arrival_date.toLocaleDateString('el-GR') %>
</td>
<td>
<%= flight.depart_time %>
</td>
<td>
<%= flight.arrival_time %>
</td>
<td>
<%= flight.flight_price + ' €' %>
</td>
<td>
<!-- <a href="air_ticketsSelectReturn" type="button" class="btn btn-light btn-small"></i>Book</a> -->
<button type="submit" href="air_ticketsSelectReturn" class="btn btn-light btn-small">Book
</td>
</tr>
<% }); %>
</tbody>
</table>
</form>
</div>
var var3;
exports.displayFlights = (req, res, next) => {
let query = connection.query({ sql: "SELECT * FROM flight WHERE from_destination=? AND to_destination=? AND depart_date=?", values: [fromDestination, toDestination, departDate] }, function(err, results, fields) {
if (err) throw err;
var3 = results;
res.render('air_ticketsSelect', {
title: 'Flights',
departFlights: results
});
});
}
exports.saveDepartureFlightForm = (req, res) => {
res.render('air_ticketsSelectReturn', {
title: 'Flights',
departFlightId: var3.flight_id
});
console.log(departFlightId);
});
}
router.post('/form-submit', function(req,res,next){
airTicketsController.airForm(req,res);
}