IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

MySQL Discussion :

Lier un utilisateur avec la table message


Sujet :

MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    En formation
    Inscrit en
    Juillet 2020
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : En formation

    Informations forums :
    Inscription : Juillet 2020
    Messages : 124
    Points : 78
    Points
    78
    Par défaut Lier un utilisateur avec la table message
    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.

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut Tony060.

    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...
    Pour faire le lien entre la table user et la table message, vous devez utiliser des clefs étrangères.
    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.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Membre régulier
    Homme Profil pro
    En formation
    Inscrit en
    Juillet 2020
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : En formation

    Informations forums :
    Inscription : Juillet 2020
    Messages : 124
    Points : 78
    Points
    78
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL-5.6] Timeout en multi-utilisateur avec 2 tables
    Par philippelorin dans le forum Requêtes
    Réponses: 25
    Dernier message: 11/03/2016, 16h08
  2. [AC-2007] Comment lier une partie d'une Table Sql Server avec une table Access
    Par mirage3000 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 02/09/2011, 03h59
  3. Lier une table standard avec une table de paramétrage (contenu variable)
    Par romain.alcaraz dans le forum Développement de jobs
    Réponses: 22
    Dernier message: 14/02/2011, 16h45
  4. déconnecter les utilisateurs avec un message avant
    Par popofpopof dans le forum VBA Access
    Réponses: 15
    Dernier message: 05/10/2008, 18h37
  5. Réponses: 3
    Dernier message: 30/08/2007, 15h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo