Задать вопрос
toffi77
@toffi77

Отправка формы html?

Добрый день. Помогите, пожалуйста, найти ошибку: данные формы не поступают в таблицу.

const pool = mysql.createPool({
  connectionLimit: 5,
  host: "localhost",
  user: "root",
  database: "usersdb2",
  password: "lomovoi7"
});

app.post("/two.html", urlencodedParser, function (req, res) {
         
    if(!req.body) return res.sendStatus(400);
    const name = req.body.name;
    const usluga = req.body.usluga;
    const tel = req.body.tel;
    pool.query("INSERT INTO users (name, usluga, tel) VALUES (?,?,?)", [name, usluga, tel], function(err, data) {
      if(err) return console.log(err);
      res.redirect("/");
    });
});


<form action="/two.html" method="post">
  <p style="display: inline;">
    <input type="text" name="name" placeholder="Имя" required style="border-style: inset; border-radius: 4px; height: 5vh;">
  </p>
  <p style="display: inline; margin-left: .5em;">
    <input type="text" name="usluga" placeholder="Услуга" required style="border-style: inset; border-radius: 4px; height: 5vh;">
  </p>
  <p style="display: inline; margin-left: .5em;">
    <input type="tel" name="tel" placeholder="Телефон" required style="border-style: inset; border-radius: 4px; height: 5vh;">
  </p>
  <button type="submit" style="border: 2px black outset; border-radius: 4px; height: 5vh;">Позвоните мне!</button>
</form>


Это отрывок из общего кода, чтобы было легче увидеть проблему.
  • Вопрос задан
  • 190 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега JavaScript
Python, JS, WordPress, SEO, Bots, Adversting
данные формы не поступают в таблицу.

Что значит "не поступают"? Что делаете и что при этом происходит? В консоли что? Пока придется гадать...
const pool = mysql.createPool

Вижу подключение к бд, но проверок успешно ли установлено соединение - нет.
app.post("/two.html", urlencodedParser, function (req, res) {

Вижу использование urlencodedParser для обработки данных формы, но не вижу его объявления, попробуйте так (express 4.16.0+):
// Подключение к бд
const urlencodedParser = express.urlencoded({extended: false});
// app.post эндпоинт

if(!req.body) return res.sendStatus(400);

Больше инфы:
console.log("req.body);
if (!req.body) return res.status(400).send("Данные не были отправлены");

if(err) return console.log(err);

Больше инфы:
if (err) {
  console.error('Error:', err);
  return res.status(500).send('Server error');
}


const name = req.body.name;
const usluga = req.body.usluga;
const tel = req.body.tel;

Так симпатичнее:
const {name, usluga, tel} = req.body;
< form action="/two.html" method="post">

Возможно, в будущем, будет лучше указать другой эндпоинт для приема данных с формы?
<form action="/submit-form" method="post">
Ну и на всякий, в вашем случае, two.html должен лежать рядом с server.js.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы