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


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