Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

Insertion de données en BdD


Sujet :

NodeJS

  1. #1
    Membre régulier
    Insertion de données en BdD
    Bonjour, Je suis entrain de réalisé une application qui gère les travaux scientifiques.
    Le formulaire nouveau_travail.ejs permet d'enregistrer les données dans une table direction de la base des données crée en MySQL.
    Mais j'ai constate que la donnée qui est enregistrer dans la table sont des objets et non des textes.

    Voici les code du serveurs:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    const mysql=require('mysql');
    const express=require('express');
    var app=express();
    const bodyparser=require('body-parser');
    const path=require('path');
     
     
    //ajout du middleware body-parser
    app.use(bodyparser.json());    
     
    //set upp public directory to serve static files
    console.log(__dirname)
    app.use(express.static('public'));
     
    //ouverture de la connexion à la bd
    var mysqlConnection=mysql.createConnection({
        host:'localhost',
        user:'root',
        password:'',
        database:'bdupc'
    }    
    );
     
    mysqlConnection.connect((err)=>{
        if(err)
        console.log('probleme de conexion:'+err);
        else console.log('connexion à la BD etablie...');
    });
     
    //ouveryure du serveur
    app.listen(8085,()=>{
        console.log('Serveur demarre au port :8085');
    });
     
    // settings
    app.set('views', path.join(__dirname, 'vue'));
    app.set('view engine', 'ejs');
     
    //routage de l'application
    //1. APPEL DU FORMULAIRE QUI AFFICHE LES DONNEES
     
    app.get("/",(req,resp)=>{
        //consultation de la bd
     
        //consultation de la bd
        mysqlConnection.query('select * from direction',(err,rows,fields)=>{
            if(err)console.log("Probleme de chargement de la BD");
            else{
                console.log(rows);
                resp.render('user_index',{
                    title:'DIRECTION TRAVAUX SCIENTIQUE',
                    data:rows
                });
            }
        });    
     
    });
     
    //2.APPEL DU FORMULAIRE DE SAISIE TRAVAIL
     
    app.get("/nouveau_travail",(req,resp)=>{
        resp.render('nouveau_travail',{
            title:'NOUVEAU TRAVAUX SCIENTIQUE'
        });
    });
     
    app.post("/save",(req,resp)=>{
        //insertion d'une donnée
        const data={nom_etudiant:req.body,prenom_etudiant:req.body,contact:req.body,
        sujet:req.body,statut:req.body};
        var sql="insert into direction set ? ";
     
        mysqlConnection.query(sql,[data],(err,fields)=>{
            if(err)console.log("Echec d'enregistrement à BD");
            else{
                console.log("Enregistrement effectuee");
                resp.redirect("/");
            }
        });
    });



    Pour ce qui du formulaire de saisie:
    Code html :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <html>
        <head>
            <title></title>
            <link href="css/bootstrap.min.css" rel="stylesheet">
        </head>
        <body>
            <div class="container"><!--fin div container-->
                <h2><%= title %></h2>
                <form action="/save" method="post">
                    <div class="form-group">
                        <label for="nom_etudiant">Nom Etudiant</label>
                        <input type="text" name='nom_etudiant' class='form-control' size="30" id="nom_etudiant"
                          placeholder="Nom de l'étudiant" >
                    </div>
     
                    <div class="form-group">
                        <label for="prenom_etudiant">Prenom Etudiant</label>
                        <input type="text" name='prenom_etudiant' class='form-control' size="30" id="prenom_etudiant"
                          placeholder="Prenom de l'étudiant" required>
                    </div>
     
                    <div class="form-group">
                        <label for="contact">Contact</label>
                        <input type="text" name='contact' class='form-control' size="30" id="contact"
                          placeholder="Contact de l'étudiant" required>
                    </div>
     
                    <div class="form-group">
                        <label for="sujet">Sujet</label>
                        <textarea name="sujet" class='form-control' id="sujet" cols="50" rows="5"></textarea>
                    </div>
     
                    <div class="form-group">
                        <label for="statut">Statut</label>
                        <select name='statut' class='form-control'>
                            <option value="1">Travail encours</option>
                            <option value="0">Travail cloturé</option>
                        </select>
                    </div>
                    <button type='submit' class="btn btn-primary"> Sauvegarder</button>
                </form>
            </div><!--fin div container-->
        </body>
    </html>



    Mais au niveau de la base des données, ce qui est insére se présente comme suit:



    Pourriez vous me dire à quel niveau se situe le problème.

  2. #2
    Membre régulier
    J'ai retrouvé le problème, j'avais oublié de préciser le nom de champs provenant du formulaire de saisie où les données devraient
    être récupérées.

    La correction à faire :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    app.post("/save",(req,resp)=>{
        //insertion d'une donnée
        const data={nom_etudiant:req.body.nom_etudiant,prenom_etudiant:req.body.prenom_etudiant,
            contact:req.body.contact,sujet:req.body.sujet,statut:req.body.statut};
        var sql="insert into direction set ? ";
     
        mysqlConnection.query(sql,[data],(err,rows,fields)=>{
            if(err)console.log("Echec d'enregistrement à BD");
            else{
                console.log("Enregistrement effectuee");
                resp.redirect("/");
            }
        });
    });

###raw>template_hook.ano_emploi###