Nodejs: Détails d'un produit
Les étapes à suivre
- 1Model: créer la fonction findById() dans le model models/Produit.js qui permet d'exécuter la requêts sql select * from produits where id=?
- 2Controller: Ajouter la fonction details() dans le le controller controllers/ProduitController.js qui permet d'appeler la méthode findById() du model Produit.js puis envoyer les données à la vue views/produits/details.ejs
- 3Routes: Ajouter une ligne de routage dans le fichier de routage routes/ProduitRoutes.js
routerProduits.get('/details/:id', produitController.details);
qui permet de mapper la route produits/id et la fonction details() du controlleur - 4View: créer la vue views/produits/details.ejs qui permet d'afficher le produit envoyé par la fonction la fonction details() du controlleur controllers/ProduitController.js
- 5Server: lancer le serveur node Serveur.js
1.Model: Créer la fonction findByID() dans le model models/Produit.js
/*Détail d'un produit */
Produit.findById = function (id, result) {
dbConn.query("Select * from produits where id = ? ", id, function (err, res) {
if(err) {
result(err, null);
}
else{
result(null, res);
}
});
};
2.Controller: Ajouter la fonction details() dans le le controller controllers/ProduitController.js
/*Afficher les détails d'un produit*/
exports.details = function(req, res) {
Produit.findById(req.params.id, function(err, produit) {
res.render((__dirname+'/../../src/views/produits/details.ejs'),{data:produit[0]});
});
};
3.Routes: Ajouter une ligne de routage dans le fichier de routage routes/ProduitRoutes.js
/*Detail un produit dont l'id est passé en paramètre*/
routerProduits.get('/details/:id', produitController.details);
4.Views: créer la vue views/produits/details.ejs
<!doctype html>
<html lang="en">
<head>
<title>Details du produit <%= data.nom%></title>
<%- include('../nav.ejs') %>
<h1>Details du produit:<%= data.nom%></h1>
<div class="card-body">
<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>
</tr>
</thead>
<tbody>
<tr>
<td><%= data.id%></td>
<td><%= data.nom%></td>
<td><%= data.marque%></td>
<td><%= data.prix%></td>
<td><%= data.qtestock%></td>
</tr>
</tbody>
</table>
<a class="btn btn-success edit" href="../produits/modifier/<%=data.id%>">Modifier</a>
<a class="btn btn-info info " href="../produits/details/<%=data.id%>">Détails</a>
<a class="btn btn-danger delete" onclick="return confirm('Comfirmer la suppression?')" href="../produits/supprimer/<%=data.id%>">Supprimer</a>
</div>
</div>
</body>
</html>
5.Server: : lancer le serveur node Serveur.js
node Serveur.js