Bonjour,
Je cherche une doc qui explique comment lier la table ou il y a userId avec la table message . Donc lier l utilisateur avec son message . Merci d’avance.
Bonjour,
Je cherche une doc qui explique comment lier la table ou il y a userId avec la table message . Donc lier l utilisateur avec son message . Merci d’avance.
Salut Tony060.
Pour faire le lien entre la table user et la table message, vous devez utiliser des clefs étrangères.
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105 -------------- START TRANSACTION -------------- -------------- DROP DATABASE IF EXISTS `base` -------------- -------------- CREATE DATABASE IF NOT EXISTS `base` DEFAULT CHARACTER SET `latin1` DEFAULT COLLATE `latin1_general_ci` -------------- -------------- DROP TABLE IF EXISTS `user` -------------- -------------- CREATE TABLE `user` ( `id` integer unsigned NOT NULL auto_increment primary key, `nom` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci` ROW_FORMAT=COMPRESSED -------------- -------------- insert into `user` (`nom`) values ('Nom Un'),('Nom Deux'),('Nom Trois') -------------- -------------- select * from `user` -------------- +----+-----------+ | id | nom | +----+-----------+ | 1 | Nom Un | | 2 | Nom Deux | | 3 | Nom Trois | +----+-----------+ -------------- DROP TABLE IF EXISTS `message` -------------- -------------- CREATE TABLE `message` ( `id` integer unsigned NOT NULL auto_increment primary key, `libelle` varchar(255) NOT NULL, `horaire` datetime NOT NULL, `fk_emetteur` integer unsigned NOT NULL, `fk_destinataire` integer unsigned NOT NULL, CONSTRAINT `FK_01` FOREIGN KEY (`fk_emetteur`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `FK_02` FOREIGN KEY (`fk_destinataire`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci` ROW_FORMAT=COMPRESSED -------------- -------------- insert into `message` (`libelle`,`horaire`,`fk_emetteur`,`fk_destinataire`) values ('salut comment ca va ?', '2021-01-01 15:03:17', 1, 2), ('très bien et toi ?', '2021-01-01 16:25:24', 2, 1), ('pas si mal que ca.', '2021-01-01 17:12:10', 1, 2) -------------- -------------- select * from `message` -------------- +----+-----------------------+---------------------+-------------+-----------------+ | id | libelle | horaire | fk_emetteur | fk_destinataire | +----+-----------------------+---------------------+-------------+-----------------+ | 1 | salut comment ca va ? | 2021-01-01 15:03:17 | 1 | 2 | | 2 | très bien et toi ? | 2021-01-01 16:25:24 | 2 | 1 | | 3 | pas si mal que ca. | 2021-01-01 17:12:10 | 1 | 2 | +----+-----------------------+---------------------+-------------+-----------------+ -------------- select t2.nom as emetteur, t3.nom as destinataire, t1.horaire, t1.libelle from `message` as t1 inner join `user` as t2 on t2.id = t1.fk_emetteur inner join `user` as t3 on t3.id = t1.fk_destinataire order by t1.horaire -------------- +----------+--------------+---------------------+-----------------------+ | emetteur | destinataire | horaire | libelle | +----------+--------------+---------------------+-----------------------+ | Nom Un | Nom Deux | 2021-01-01 15:03:17 | salut comment ca va ? | | Nom Deux | Nom Un | 2021-01-01 16:25:24 | très bien et toi ? | | Nom Un | Nom Deux | 2021-01-01 17:12:10 | pas si mal que ca. | +----------+--------------+---------------------+-----------------------+ -------------- COMMIT -------------- Appuyez sur une touche pour continuer...
La clef étrangère permet de dire qui est l'émetteur et qui est le destinataire d'un message.
Le plus difficile à faire est de rechercher l'identifiant dans la table user afin de savoir qui est l'émetteur et qui est le destinataire.
@+
Bonjour @Artemus24,
Merci beaucoup, c'est très clair je vais aussi me documenter du côté des clés étrangères du coup.
Pour le coup j'étais loin de ce qu'il fallait :
Code JavaScript : 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 //créer un commentaire exports.createComments = function (req, res, next){ const {username, comments} = req.body; const commentId = req.params.idComment; const insertSql = `INSERT INTO comment (idComment, username, comments, date_comment) VALUES ('${commentId}', '${username}', '${comments}', NOW());`; connection.query(insertSql, function (error, results, fields){ if(results){ res.status(201).json({results }) }else{ res.status(401).json({error: error }) } }) }; //récupérer tous les commentaires exports.getAllComments = (req, res, next) =>{ const commentId = req.params.idComment const allCommentSql= `SELECT comment.idComment ,comment.username,comment.comments, users.id, users.username, comment.date_comment FROM comment INNER JOIN users ON '${commentId}' -users.id ORDER BY comment.date_comment DESC ` connection.query(allCommentSql, (error, results, fields) =>{ if (results[0] != undefined) { res.status(201).json({ results}) }else{ res.status(403).json({error: error, message: "Aucun post présent sur cette page !"}) } }); }; //récupéré un commentaire exports.getOneComment = (req, res, next) =>{ const commentId = req.params.idComment connection.query('SELECT * FROM comment where idComment=?', [req.params.idComment], (error, results, fields) => { if (error){ res.status(400).json({error: error, message: 'erreur'}) }else{ if (results[0] != undefined){ res.status(200).json({"id trouvé ":`${commentId}`}) console.log(req.params.id) console.log(results) }else{ res.status(401).json({error: error, message:'pas de commentaire correspondant à l id'}) } } }) }; //supprimer un commentaire exports.deleteComments = (req, res, next) =>{ connection.query('DELETE FROM comment WHERE idComment = ?', [req.params.idComment], (err, result)=>{ if(err){ res.status(401).json({error: err}) }else{ res.status(201).json({success: true , message: 'id supprimer'}) } }) };
Merci encore,
Bonne journée.
Partager