Requête Mysql avec express et twig

Par Anaïs Saez, il y a 9 ans


Javascript NodeJS

Bonjour,

Je débute en node.js

Ce que je fais

J'ai suivi un tuto pour faire un mini formulaire avec express, et twig pour gérer les vues. Lorsqu'on valide le formulaire, on affiche le nom qui a été rentré dans le formulaire.

Mon fichier app.js :

var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var mysql = require('mysql'); var index = require('./routes/index'); var users = require('./routes/users'); var swig = require('swig'); var debugLog = require('debug-log')('foo'); var app = express(); var connection = mysql.createConnection({ host: 'localhost', user:'root', password: '', database: 'dbtest' }); connection.connect(function(error){ if(!!error){ console.log('Error'); }else{ console.log('Connected'); } }) debugLog('sql1'); connection.query('INSERT INTO dbtest', 'ok') debugLog('sql2'); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', index); app.use('/users', users); // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error'); }); // view engine setup // utilisation du moteur de swig pour les .html app.engine('html', swig.renderFile); // utiliser le moteur de template pour les .html app.set('view engine', 'html'); // dossier des vues app.set('views', path.join(__dirname, 'views')); // view cache app.set('view cache', false); // désactivation du cache express swig.setDefaults({ cache: false }); // désactivation du cache swig module.exports = app;

Le fichier index.js :

var express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { res.render('index', { title: 'Express' }); }); module.exports = router; /* GET contact page. */ router.get('/contact', function(req, res) { res.render('contact'); }); /* POST contact page (submit). */ router.post('/contact', function(req, res) { res.render('contact', { email: req.param('email') }); var sql = {id: 1, name: 'saez', email: 'anais.saez@hotmail.fr', text: 'blabla'}; });

Le fichier contact.html en utilisant twig :

<html> {% extends 'layout.html' %} {% block content %} <section class="container"> {% if email %} <div class="alert alert-success alert-dismissable"> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> <strong>Well done!</strong> thank you for your <b>{{email}}</b> sends </div> {% endif %} <form role="form" action="/contact" method="post"> <div class="form-group"> <label for="email">Email</label> <input type="email" name="email" class="form-control" id="email" placeholder="Enter email"> </div> <div class="form-group"> <label for="name">Name</label> <input type="text" name="name" class="form-control" id="name" placeholder="Enter name"> </div> <div class="form-group"> <label for="msg">Message</label> <textarea name="msg" class="form-control" id="msg" rows="3"></textarea> </div> <button type="submit" class="btn btn-default">Submit</button> </form> </section> {% endblock %} </html>

Entourez votre code pour bien le mettre en forme

Ce que je veux

J'aimerais enregistrer cette valeur dans un base de données mysql

Ce que j'obtiens

J'arrive à me connecter à la base de données. Cependant, je n'arrive pas à faire de requête, je ne sais pas où placer mon code pour faire un insert into de la valeur "nom".
Je ne sais pas s'il faut le mettre dans app.js ou dans index.js.. dans les 2 cas je n'aboutie pas ..
Quelqu'un pourrait me donner un coup de main ?
Merci :)

1 réponse

kenshimdev, il y a 9 ans

Bonsoir,

Si tu n'as toujours pas trouvé de solution à ton problème. Tu peux regarder à partir de 32:24min sur cette vidéo créé par @Grafikart.

Tu apprendras à utiliser une base de données mysql avec nodejs

En espérant avoir répondu à ta question.
Bonne soirée