Я только учусь, как создать простое веб-приложение для моего общежития, которое бы присваивало каждому участнику случайное число, когда они вводят свое имя. Есть поле формы с одним текстовым полем и кнопкой. Текстовое поле (форма) должно отправить полное имя (одну строку) в базу данных MySQL, чтобы позже я мог получить полный список с назначенными номерами, чтобы фактически использовать приложение в реальном мире. Просто для избыточности я вставил код, который каждый раз создает новую базу данных и таблицу, но затем SQL игнорирует ее, если БД и таблица уже существуют.
Моя фундаментальная проблема заключается в том, что я не могу получить данные из моей формы в HTML. Я использую express. js и пытаюсь получить его, а затем отправить в базу данных через модуль SQL. Теперь, когда я полный новичок ie, я понятия не имею, как это должно работать. Последние 4 дня я искал по всему inte rnet, чтобы попытаться решить эту проблему. Я не знаю, является ли документ js проблемой или документ HTML.
Это моя форма HTML (скажите, если вам понадобится все это):
<form action="/createPerson" method="POST">
<input type="text" name="name" value="Ime in priimek">
<input type="submit" name="name" value="Potrdi" class="gumbek">
</form>
А вот мой полный node.js документ:
var mysql = require('mysql');
var express = require("express");
var bodyParser = require("body-parser");
var urlencodedParser = bodyParser.urlencoded({
extended: false
});
const http = require('http');
var fs = require('fs');
const app = express();
const path = require('path');
const router = express.Router();
// Unique random number generator module
const uniqueRandom = require('unique-random');
app.use(express.static(__dirname + '/public'));
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(bodyParser.json());
server = http.createServer(app);
server.listen();
// Start connecting to MySQL database
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "root",
database: "mydb"
});
//if database mydb exists, ignore database creation
let createMydb = "CREATE DATABASE if not exists mydb"
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
con.query(createMydb, function(err, result) {
if (err) throw err, console.log("Database already exists!");
console.log("Database OK (Already exists, will not create new one)");
});
});
//if table person exists, ignore table creation
let createTable = "CREATE TABLE if not exists person (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), number VARCHAR(255))";
var sql = createTable;
con.query(sql, function(err, result) {
if (err) throw err, console.log("Table exists, will not create new table");
console.log("Table OK (Already exists, will not create new one)");
console.log('Running at Port 3000');
console.log("Connected. Commencing value input into database.");
//var post = { name: req.body.name, number: random }
//app.get('/createPerson', urlencodedParser, function(err, req, res) {
if (err) throw err;
//res(req.body.name)
});
router.get('/', function(req, res) {
res.sendFile(path.join(__dirname + '/index.html'));
//__dirname : It will resolve to your project folder.
});
/*const random = uniqueRandom(1, 100);
const values = ['/createPerson', String(random())];
var insert = "INSERT INTO person (name, number) VALUES (?)"
con.query(insert, [values], function(err, result) {
if (err) throw err;
console.log("Value was inserted into database.");
});*/
app.get('/createPerson', function(req, res) {
res.render('form'); // if jade
// You should use one of line depending on type of frontend you are with
res.sendFile(__dirname + '/index.html'); //if html file is root directory
});
app.post('/createPerson', urlencodedParser, function(req, res) {
const random = uniqueRandom(1, 100);
const values = [String(req.body.name), String(random())];
var insert = "INSERT INTO person (name, number) VALUES (?)"
console.log(req.body.name);
con.query(insert, [values], function(err, result) {
if (err) throw err;
console.log("Value was inserted into database.");
res.sendFile(__dirname + '/numberAssigned.html');
res.end();
});
});
Теперь каждый раз, когда я нажимаю кнопку в форме, я получаю Cannot POST /createPerson
внутри браузера, и данные не отправляются в мою базу данных. Браузер (вкладка сети) также дает мне 404. Может быть, он не может найти форму?
Я полный новичок ie при всем этом, я могу управлять HTML и CSS, Javascript это что-то действительно новое для меня. Если вы найдете время, чтобы помочь мне, СПАСИБО ИЗ НИЖНЕГО СЕРДЦА!