Nodejs: Liste produits

Les étapes à suivre

  1. 1Model: créer la fonction findAll() dans le model models/Produit.js qui permet d'exécuter la requêts sql select * from produits
  2. 2Controller: Ajouter la fonction afficherListe() dans le le controller controllers/ProduitController.js qui permet d'appeler la méthode findAll() du model Produit.js puis envoyer les données à la vue views/produits/index.ejs
  3. 3Routes: Ajouter une ligne de routage dans le fichier de routage routes/ProduitRoutes.js
    routerProduits.get('/', produitController.afficherListe);
    qui permet de mapper la route produits/ et la fonction afficherListe() du controlleur
  4. 4View: créer la vue views/produits/index.ejs qui permet d'afficher la liste des produits envoyés par la fonction la fonction afficherListe() du controlleur controllers/ProduitController.js
  5. 5Server: lancer le serveur node Serveur.js

1.Model: Créer la fonction findAll() dans le model models/Produit.js

//Afficher la liste des produits
Produit.findAll = function (result) {
dbConn.query("Select * from produits", function (err, res) {
if(err) {
/* envoie un objet error */
result(null, err);
}
else{
/*en res :un tableau d'objet produit*/
result(null, res);
}
});
};

2.Controller: Ajouter la fonction afficherListe() dans le le controller controllers/ProduitController.js

exports.afficherListe = function(req, res) {
Produit.findAll(function(err, listeProduits) {
/* si findAll retourne une erreur de sql*/
if(err) {
/*Envoyer un message d'erreur à la page index.ejs avec data:'' vide*/
req.flash('error', err);
res.render((__dirname+'/../../src/views/produits/index.ejs'),{data:''});
}
/* si findAll s'excute sans erreur */
else {
// afficher la page index.ejs et envoyer listeProduits un tableau d'objet produits
res.render((__dirname+'/../../src/views/produits/index.ejs'),{data:listeProduits});
}
});
};

3.Routes: : Ajouter la route dans le fichier de routage routes/ProduitRoutes.js

/*Afficher la liste des produits */
routerProduits.get('/', produitController.afficherListe);

4.View: : créer la vue views/produits/index.ejs

<!doctype html>
<html lang="en">
<head>
<title>Liste produits</title>
<%- include('../nav.ejs') %>
<div class="card-body">
<% if(data.length) { %>
<table class="table">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Nom</th>
<th scope="col">Marque</th>
<th scope="col">Prix</th>
<th scope="col">QteStock</th>
<th width="300px">Action</th>
</tr>
</thead>
<tbody>
<% for(var i = 0; i< data.length; i++) { %>
<tr>
<th scope="row"><%= (i+1) %></th>
<td><%= data[i].nom%></td>
<td><%= data[i].marque%></td>
<td><%= data[i].prix%></td>
<td><%= data[i].qtestock%></td>
<td>
<a class="btn btn-success edit" href="../produits/modifier/<%=data[i].id%>">Modifier</a>
<a class="btn btn-info info " href="../produits/details/<%=data[i].id%>">Détails</a>
<a class="btn btn-danger delete" onclick="return confirm('Comfirmer la suppression?')" href="../produits/supprimer/<%=data[i].id%>">Supprimer</a>
</td>
</tr>
<% } %>
</tbody>
</table>
<% } %>
<!-- si pas de produits -->
<% if(!data.length) { %>
<p class="text-center">Pas de produits !</p>
<% } %>
</div>
</div>
</body>
</html>

5.Server: : lancer le serveur node Serveur.js

node Serveur.js








Cours et TPs