Partage
  • Partager sur Facebook
  • Partager sur Twitter

Afficher les messages envoyés

    20 janvier 2017 à 12:01:55

    Bonjour, je rencontre un petit problème, j'essaye de faire une messagerie privé, sans titre de sujet, donc juste une conversation avec des messages entre membres. 

    Sauf que le problème que je rencontre, c'est que je n'arrive pas à afficher les utilisateurs à qui j'ai envoyer un message. Pourtant quand je recois un message d'un utilisateur il s'affiche bien. 

    Voici mon code sql 

    <?
            $idconnecte = $this->ion_auth->get_user_id();
    
            $this->db->select('messages.id, messages.id_expediteur, messages.id_destinataire, messages.message, messages.date, messages.last_user, users.username, users.avatar');
            $this->db->from('messages');
            $this->db->join('users', 'users.id = messages.id_expediteur');
            $this->db->where('messages.id_destinataire = '.$idconnecte.'');
            $this->db->order_by('messages.id DESC');
            return $this->db->get()->result_array();
        }
    ?>

    Merci de votre aide

    -
    Edité par Myster♣ 20 janvier 2017 à 12:02:13

    • Partager sur Facebook
    • Partager sur Twitter
      20 janvier 2017 à 15:47:42

      Bonjour,

      Il faudrait que tu rajoutes un filtre pour users.id=message.id_destinataire

      • Partager sur Facebook
      • Partager sur Twitter
        20 janvier 2017 à 16:00:06

        Je n'ai pas tout compris a ce que tu essaies de recuperer avec ta requete
        • Partager sur Facebook
        • Partager sur Twitter
          20 janvier 2017 à 16:20:18

          r-c-l Déjà essayer ça fonctionne pas

          Psychotik Quand je recois un message l'utilisateur apparaît bien dans la liste à gauche, alors que quand j'envoi un message il apparaît pas, et ça écrit mon pseudo à la place

          • Partager sur Facebook
          • Partager sur Twitter
            20 janvier 2017 à 16:34:28

            Bon je recapitule c'est une messagerie, lorsque tu recois un message, l'expediteur apparrait et le message aussi mais lorsque tu en recois un, ca ne fonctionne pas?

            A premiere vue ta requete semble correcte on va chercher des erreurs simples:

            As tu bien des messages a destination de ton user dans ta base de donnees?

            As tu verifie que ton $idconnecte contient bien l'id en question?

            As-tu verifie si ta requete te retourne une erreur?

            • Partager sur Facebook
            • Partager sur Twitter
              20 janvier 2017 à 16:56:37

              Je vais faire un screen d'exemple

              Sur ce screen là, Test m'envoi un message, donc il s'affiche bien à gauche

              Par contre quand moi j'envoi un message à quelqu'un son pseudo ne s'affiche pas à gauche, ça affiche mon pseudo. 

              Et idconnecte contiens l'id de l'utilisateur connecté

              • Partager sur Facebook
              • Partager sur Twitter
                20 janvier 2017 à 17:01:44

                Dans ta requete tu as ce filtre:

                $this->db->where('messages.id_destinataire = '.$idconnecte.'');

                Donc tu ne recuperes que les messages qui sont envoye a l'utilisateur connecte pas ceux que lui a envoye. Il est normal que tu vois les messages que tu as recu mais pas ceux que tu as envoye

                • Partager sur Facebook
                • Partager sur Twitter
                  20 janvier 2017 à 17:03:53

                  J'ai essayer avec 

                  $this->db->where('messages.id_destinataire = '.$idconnecte.' OR messages.id_expediteur = '.$idconnecte.' ');

                  Mais ça affiche mon pseudo, et pas le pseudo de la personne a qui j'ai envoyé le message :/

                  -
                  Edité par Myster♣ 20 janvier 2017 à 17:04:10

                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 janvier 2017 à 17:08:38

                    Ca c'est un probleme a l'affichage pas a la requete

                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 janvier 2017 à 17:10:51

                      Non à la requête je pense, puisque quand je fais par exemple 

                              $this->db->join('users',  'users.id = messages.id_expediteur');

                      Ca affiche bien la personne a qui j'ai envoyer le message mais pour les personnes qui m'envoi un message ça m'affiche mon pseudo. En gros il récupère mon user_id destinataire ou bien expéditeur et je veux pas qu'il le récupère donc je sais pas comment faire :/
                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 janvier 2017 à 17:28:01

                        Oh, je viens de comprendre ton probleme (ce fut laborieux de comprendre la)

                        En gros si j'ai tout compris tu veux recuperer tous les messages que tu as envoye ou que quelqu'un t'a envoye et lier a ce message le profil de l'utilisateur qui a envoye le message (si c'est un message que tu recois) OU le profil de la personne qui recois le message (si c'est un message que tu as envoye. C'est ca j'ai tout bon?

                        Dans ce cas le mieux est de faire une double jointure sur ton user. Ainsi sur ton message tu aura lie le profil de l'expediteur et le profil du destinataire et a l'affichage tu pourra faire tes tests.

                        Vu ton code je suppose que tu utilises un framework. de quel framework s'agit-il, afin qu'on puisse te donner du code si besoin?

                        • Partager sur Facebook
                        • Partager sur Twitter
                          20 janvier 2017 à 17:33:37

                          Oui tu as parfaitement compris, donc je récapitule, je souhaite afficher à gauche la liste des utilisateurs à qui j'ai envoyer un message et ceux qui m'on envoyer un message, j'utilise le framework Codeigniter, mais là j'avoue que je sèche sur le comment faire 

                          Merci encore pour ton aide

                          • Partager sur Facebook
                          • Partager sur Twitter
                            20 janvier 2017 à 18:54:03

                            Je suis loin d'etre un expert en codeigniter mais ceci devrait fonctionner:

                                    $idconnecte = $this->ion_auth->get_user_id();
                             
                                    $this->db->select('messages.id, messages.id_expediteur, messages.id_destinataire, messages.message, messages.date, messages.last_user, sender.username, sender.avatar', receiver.username, receiver.avatar);
                                    $this->db->from('messages');
                                    $this->db->join('users as sender', 'users.id = messages.id_expediteur');
                                    $this->db->join('users as receiver', 'users.id = messages.id_destinataire');
                                    $this->db->where('messages.id_destinataire = '.$idconnecte.' OR messages.id_expediteur = '.$idconnecte);
                                    $this->db->order_by('messages.id DESC');
                                    return $this->db->get()->result_array();

                            Tu va donc avoir un retour avec messages qui contient les messages, lies a sender qui contient les infos de l'expediteur, et lies egalement a receiver qui contient les informations du destinataire

                            • Partager sur Facebook
                            • Partager sur Twitter
                              20 janvier 2017 à 19:04:05

                              J'ai une erreur: Error Number: 1054

                              Unknown column 'users.id' in 'on clause'

                              • Partager sur Facebook
                              • Partager sur Twitter
                                20 janvier 2017 à 19:05:08

                                En effet je me suis trompe :D

                                $idconnecte = $this->ion_auth->get_user_id();
                                 
                                $this->db->select('messages.id, messages.id_expediteur, messages.id_destinataire, messages.message, messages.date, messages.last_user, sender.username, sender.avatar', receiver.username, receiver.avatar);
                                $this->db->from('messages');
                                $this->db->join('users as sender', 'sender.id = messages.id_expediteur');
                                $this->db->join('users as receiver', 'receiver.id = messages.id_destinataire');
                                $this->db->where('messages.id_destinataire = '.$idconnecte.' OR messages.id_expediteur = '.$idconnecte);
                                $this->db->order_by('messages.id DESC');
                                return $this->db->get()->result_array();



                                • Partager sur Facebook
                                • Partager sur Twitter
                                  20 janvier 2017 à 19:10:27

                                  Ca affiche toujours mon pseudo dans la liste à gauche
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    20 janvier 2017 à 19:28:30

                                    On peut voir le code de l'affichage? Parce que je suis sur a 99,9% que tu as un problème a l'affichage
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      20 janvier 2017 à 19:34:02

                                         <div class="list-group lg-alt">
                                                  {foreach from=$message item=messages}
                                      
                                      
                                                      <a class="list-group-item media" href="/mp/{$messages.id}">
                                                          <div class="pull-left">
                                                              <img src="{$messages.avatar}" alt="" class="img-avatar">
                                                          </div>
                                                          <div class="media-body">
                                                              <small class="list-group-item-heading">{$messages.username}</small>
                                                          </div>
                                                      </a>
                                                      {/foreach}
                                      
                                                  </div>

                                      Voilà :)

                                      -
                                      Edité par Myster♣ 20 janvier 2017 à 19:36:54

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        20 janvier 2017 à 19:52:49

                                        Euh peux tu faire un print_r() de ton resultat du array retourne par la requete parceque la j'avoue que je comprend pas comment tu accede a tes donnees

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          20 janvier 2017 à 19:55:12

                                          Array ( [message] => Array ( [0] => Array ( [id] => 2 [id_expediteur] => 2 [id_destinataire] => 1 [message] => rzqqqs [date] => 0 [last_user] => 0 [username] => Myster [avatar] => http://www.mindandmarket.com/img/users/users_default.png ) [1] => Array ( [id] => 1 [id_expediteur] => 1 [id_destinataire] => 3 [message] => saaaa [date] => 0 [last_user] => 0 [username] => Test [avatar] => http://localhost/assets/img/divers/heyla.png ) ) )
                                          A la place de "Myster" (mon pseudo), ça devrait être Demo, le destinataire
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            20 janvier 2017 à 20:08:48

                                            Euh tu es sur que tu as modifie la requete avec celle que je t'ai donne? Parceque la le resultat correspond exactement a ce que devrait te renvoyer la requete du depart.

                                            "A la place de "Myster" (mon pseudo), ça devrait être Demo, le destinataire"

                                            non pas du tout. Le resultat que tu as la est exactement ce que tu demandes a ta premiere requete et il te retourne le resultat demande (ce n'est pas celui que tu souhaites mais c'est celui que tu demandes) Par contre ce n'est pas normal qu'il continue a te retourner ca avec l'autre requete que je t'ai donne

                                            -
                                            Edité par Aurélien Massé 20 janvier 2017 à 20:11:30

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              20 janvier 2017 à 20:15:04

                                              C'et pourtant bien ta requête

                                              $this->db->select('messages.id, messages.id_expediteur, messages.id_destinataire, messages.message, messages.date, messages.last_user, sender.  username, sender.avatar, receiver.username, receiver.avatar');
                                              $this->db->from('messages');
                                              $this->db->join('users as sender', 'sender.id = messages.id_expediteur');
                                              $this->db->join('users as receiver', 'receiver.id = messages.id_destinataire');
                                              $this->db->where('messages.id_destinataire = '.$idconnecte.' OR messages.id_expediteur = '.$idconnecte);
                                              $this->db->order_by('messages.id DESC');
                                              return $this->db->get()->result_array();
                                              



                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                20 janvier 2017 à 20:25:50

                                                Alors ca, c'est tres surprenant.

                                                Enleve l'espace de trop a "sender. username"

                                                Mais c'est quand meme extremement surprenant qu'il te retourne ca

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  20 janvier 2017 à 20:29:12

                                                  Oui c'est bizarre :/ Après si tu veux voir le contenu de la table messages

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    20 janvier 2017 à 20:32:51

                                                    Ce qui m'etonne surtout c que ca corresponde exactement a ta precedente requete.

                                                    Modifie ta requete ainsi:

                                                    $this->db->select('messages.id);
                                                    $this->db->from('messages');
                                                    $this->db->where('messages.id_destinataire = '.$idconnecte.' OR messages.id_expediteur = '.$idconnecte);
                                                    $this->db->order_by('messages.id DESC');
                                                    return $this->db->get()->result_array();


                                                    Et refait un print_r du resultat stp

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      20 janvier 2017 à 20:34:30

                                                      Array ( [message] => Array ( [0] => Array ( [id] => 2 ) [1] => Array ( [id] => 1 ) ) )
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        20 janvier 2017 à 20:38:26

                                                        Bon au moins ca confirme que c'est la bonne requete que tu modifie :D

                                                        Bon ben on va y aller pas a pas hein.

                                                        Modifie ta requete ainsi et printr:

                                                        $this->db->select('messages.id, sender.username');
                                                        $this->db->from('messages');
                                                        $this->db->join('users as sender', 'sender.id = messages.id_expediteur')
                                                        $this->db->where('messages.id_destinataire = '.$idconnecte.' OR messages.id_expediteur = '.$idconnecte);
                                                        $this->db->order_by('messages.id DESC');
                                                        return $this->db->get()->result_array();



                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          20 janvier 2017 à 20:41:19

                                                          Array ( [message] => Array ( [0] => Array ( [id] => 6 [username] => Demo ) [1] => Array ( [id] => 5 [username] => Myster ) ) )

                                                          Voilà voilà

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            20 janvier 2017 à 20:44:28

                                                            woooooohoho peut etre un eclair de genie la.

                                                            Modifie ta requete puis printr:

                                                            $this->db->select('messages.id, messages.id_expediteur, messages.id_destinataire, messages.message, messages.date, messages.last_user, sender.username, sender.avatar, receiver.username, receiver.avatar');
                                                            $this->db->from('messages');
                                                            $this->db->join('users as sender', 'sender.id = messages.id_expediteur', 'left');
                                                            $this->db->join('users as receiver', 'receiver.id = messages.id_destinataire', 'left');
                                                            $this->db->where('messages.id_destinataire = '.$idconnecte.' OR messages.id_expediteur = '.$idconnecte);
                                                            $this->db->order_by('messages.id DESC');
                                                            return $this->db->get()->result_array();



                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              20 janvier 2017 à 20:49:02

                                                              Array ( [message] => Array ( [0] => Array ( [id] => 6 [id_expediteur] => 2 [id_destinataire] => 1 [message] => rzqqqs [date] => 0 [last_user] => 0 [username] => Myster [avatar] => http://www.mindandmarket.com/img/users/users_default.png ) [1] => Array ( [id] => 5 [id_expediteur] => 1 [id_destinataire] => 3 [message] => saaaa [date] => 0 [last_user] => 0 [username] => Test [avatar] => http://localhost/assets/img/divers/heyla.png ) ) )

                                                              Toujours pareil :) 

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Afficher les messages envoyés

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown