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

Langage PHP Discussion :

Jointure interne pour chat


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2011
    Messages : 15
    Par défaut Jointure interne pour chat
    Bonjour

    Je cherche à coder un petit chat privé où l'utilisateur choisi le destinateur et lui envoie un message.
    D'un côté j'ai une table avec les différents utilisateurs et leurs données personnelles et de l'autre une table où je recense tous les messages avec une colonne id_user (id du compte de celui qui envoie le message), id_dest (id de celui qui reçoit) et message (le message).
    Pour l'envoi des message ça fonctionne, la table reçoit les infos comme je le souhaite.

    L'utilisateur doit d'abord se connecter, ça s'est ok. Quand il arrive sur la page, je récupère son id, ok aussi. Il sélectionne le destinataire, ça rafraichit la page et je récupère l'id du destinataire, ça fonctionne aussi.

    Le problème survient au moment où je souhaite récupérer les messages de X (connecté) pour Y et vice versa dans un tableau.

    Voici le code que j'utilise:

    id est l'id de l'utilisateur dans la table infos.compte
    id_user celle de l'utilisateur dans la table chat_private
    id_dest celle du destinataire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $request_chat="SELECT chat_private.heure, infos_compte.pseudo, chat_private.message
    FROM infos_compte
    JOIN chat_private
    ON chat_private.id_user = infos_compte.id 
    WHERE chat_private.id_dest = '$id_dest' OR chat_private.id_dest = '$id' 
    AND chat_private.id_user = '$id_dest' OR chat_private.id_user = '$id'
    order by heure DESC LIMIT 0,50";
    Le problème de ce code est que je récupère tous les messages de la table SQL. Je dois sûrement avoir commis une erreur avec la jointure, mais après de multiple essais, je bloque.

    Merci d'avance pour votre aide !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Déjà le login tu n'en as pas besoin dans cette requête qui recupère les messages ; dans ton cheminement tu as surement recupéré le login avant cela.

    Ensuite pour ta condition c'est X ecrit à Y ou Y écrit à X :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT chat_private.heure, chat_private.message
    FROM infos_compte
    WHERE (chat_private.id_dest = '$id_dest' AND chat_private.id_user = '$id')
    OR (chat_private.id_dest = '$id' AND chat_private.id_user = '$id_dest')
    order by heure DESC LIMIT 0,50
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2011
    Messages : 15
    Par défaut
    Merci ! Ca fonctionne parfaitement. On peut même garder la jointure avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $request_chat="SELECT chat_private.heure, infos_compte.pseudo, chat_private.message
    FROM infos_compte
    JOIN chat_private
    ON chat_private.id_user = infos_compte.id 
    WHERE (chat_private.id_dest = '$id_dest' AND chat_private.id_user = '$id')
    OR (chat_private.id_dest = '$id' AND chat_private.id_user = '$id_dest')
    order by heure DESC LIMIT 0,50";
    et ainsi préserver la colonne qui indique le pseudo de celui qui envoie le message.

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

Discussions similaires

  1. Smiley dans TextArea pour chat
    Par kehops31 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 25/07/2006, 14h19
  2. multicasting pour chat
    Par orelero dans le forum Développement
    Réponses: 5
    Dernier message: 19/06/2006, 18h34
  3. Ouvrir port Linux pour chat en Flash
    Par Benjamin76 dans le forum Réseau
    Réponses: 4
    Dernier message: 05/05/2006, 13h34
  4. Programme pour chat en réseau local
    Par SteelBox dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 06/10/2005, 11h12
  5. Jointure interne
    Par de LANFRANCHI dans le forum Langage SQL
    Réponses: 8
    Dernier message: 03/09/2004, 10h08

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