Partage
  • Partager sur Facebook
  • Partager sur Twitter

2 tables jointures

Sujet résolu
    18 mai 2019 à 19:38:59

    bonjour , j'ai mis une requette pour une news

    <?php
         //on affiche la requette pour afficher la news
    	 $query=$db->prepare('SELECT titre, contenu, date FROM news
    	                       LEFT JOIN forum_membres ON news.id = forum_membres.membre_pseudo');
    	 echo '<article>';
    	 
    	 // ensuite on vas afficher les infos de la news
    	 if ($query->execute())
    	 {
    	 while ($data = $query->fetch(PDO::FETCH_ASSOC))
    	 {
    	 ?>
    	 <!--on affiche le titre de la news-->
    	 <h2><?php echo $data['titre'];?></h2>
    	 <!--on affiche le pseudo et la date-->
    	 <div class="publier-news">publié par <div class="news-avatar icon-avatar-news-homme"><div class="news-avatar-homme-en-ligne"></div></div><?php echo $data['membre_pseudo']; ?> à <?php echo AffDate($data['date']);?></div>
    
    	  <p class="description-news"><?php echo $data['contenu']; ?></p>
    
    	  <ul class="option-news"><li>vues : 4910</li><li>commentaires : 8</li><li>écrire un commentaire</li><li>forum : mises à jour</li></ul>
    
    <?php
    
    }
    }?>
    </article>

    il m'affiche bien mais j'aimerais joindre une 2 ème table forum_membres afin de recupere le champs membres_pseudo

    car là le membres pseudo ne s'affiche pas

    je vous met la table news

    CREATE TABLE `news` (
      `id` int(11) NOT NULL,
      `membre_id` int(11) NOT NULL,
      `titre` varchar(255) NOT NULL,
      `contenu` text NOT NULL,
      `date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    

    là j'ai mis membre_id mais je ne sais pas si ce champs vaut le coup peut-être qu'il faut que je supprime 

    si quelqu'un peut m'aider  à joindre 2 tables afin d'afficher le pseudo de l'auteur de la news

    merci


    • Partager sur Facebook
    • Partager sur Twitter
      18 mai 2019 à 22:51:50

      Non mais sérieux comment tu peux joindre sur un pseudo d'un côté et l'id de ta news de l'autre ? Le but d'une jointure, c'est tout de même de reprendre une information commune aux deux tables ...

      Tu dois JOIN entre news.membre_id et l'id de ta table forum_membres.

      C'est via le SELECT que le pseudo doit être renvoyé, ce n'est certainement pas le but de la clause JOIN. Reprends un cours sur SQL (et utilise un peu plus ta caboche avant d'en faire systématiquement appel au forum) !

      Et puis ça ne devrait pas être LEFT JOIN mais JOIN tout court : une news est forcément écrite par quelqu'un, non ?

      -
      Edité par julp 18 mai 2019 à 23:35:37

      • Partager sur Facebook
      • Partager sur Twitter
        18 mai 2019 à 22:53:47

        Bonsoir.

        C'est normal, il te faut ajouter la colonne membre_pseudo dans les colonnes à récupérer, car là tu n'as défini que les colonnes de ta table news.

        -
        Edité par Lartak 18 mai 2019 à 22:54:00

        • Partager sur Facebook
        • Partager sur Twitter

        Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

          19 mai 2019 à 1:25:01

          merci, tu peut pas me le faire je sais que c'est tout bête 

          mais come ca je serais pour la prochaine ;)

          merci

          • Partager sur Facebook
          • Partager sur Twitter
            19 mai 2019 à 1:30:12

            Je vois mal comment on pourrait le faire pour toi, on ne vit pas chez toi.
            • Partager sur Facebook
            • Partager sur Twitter

            Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

              19 mai 2019 à 11:53:18

              j'ai 2 tables

              CREATE TABLE `forum_membres` (
                `membre_id` int(11) NOT NULL,
                `membre_pseudo` varchar(30) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
                `membre_mdp` varchar(60) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
                `membre_email` varchar(100) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL
              ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
              


              ensuite ma table de news

              CREATE TABLE `news` (
                `id` int(11) NOT NULL,
                `id_membre` int(11) NOT NULL,
                `titre` varchar(255) NOT NULL,
                `contenu` text NOT NULL,
                `date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
              ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
              

              je voudrais afficher membres pseudo de la table forum_membres sur la table news

              coment, je doit faire la jointure merci

              • Partager sur Facebook
              • Partager sur Twitter
                19 mai 2019 à 11:56:57

                Relis ce que julp et moi t'avons dit, nous n'allons pas nous répéter.
                • Partager sur Facebook
                • Partager sur Twitter

                Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

                  19 mai 2019 à 12:45:48

                  si j met ca 

                  $query=$db->prepare('SELECT titre, contenu, date, membre_pseudo FROM news
                                             JOIN forum_membres');

                  les news se répetes autemps de membres inscrit et les news se repetent en double

                  coment eviter de repeter en double

                  -
                  Edité par will.smith 19 mai 2019 à 12:52:01

                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 mai 2019 à 12:54:39

                    Salut,

                    Relis le cours sur les jointures :

                    https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/916084-les-jointures-entre-tables

                    C'est plus simple que tu commences par apprendre au lieu de demander à ce que quelqu'un le fasse à ta place.. surtout que ce n'est pas si compliqué que ça.

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Solution trouvée ? => petit pouce + passer le sujet en Résolu :)

                      19 mai 2019 à 13:00:41

                      slt

                      essaye ceci

                      $query=$db->prepare('SELECT titre, contenu, date, membre_pseudo FROM news
                                                 JOIN forum_membres WHERE forum_membres.membre_id=news.id_membre');

                      -
                      Edité par Press 2000 19 mai 2019 à 13:01:30

                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 mai 2019 à 13:19:48

                        focheur 2000 a écrit:

                        slt

                        essaye ceci

                        $query=$db->prepare('SELECT titre, contenu, date, membre_pseudo FROM news
                                                   JOIN forum_membres WHERE forum_membres.membre_id=news.id_membre');

                        -
                        Edité par focheur 2000 il y a 16 minutes


                        merci , je laisse tombé , je demanderais à quelqu'un qui va m'aider à faire mon site et forum et qu'il m'expliquera ligne par ligne etc... 

                        bonne continuation pour les autres 

                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 mai 2019 à 13:27:31

                          Ouais donc t'en es toujours à attendre de quelqu'un qu'il te fasse quoi ...

                          12 ans que tu es inscrit ici tout de même !

                          -
                          Edité par julp 19 mai 2019 à 17:15:02

                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 mai 2019 à 13:46:00

                            je repondrait pas à ta question 

                            car apparemment, tu conait les gens si tu me connait tu comprendrais

                            mais si les gens prenait 5 minutes a connaitre les gens et pas critiquer les codes à chaque ligne 

                            je n'aurais pas eu une depression pendant x anée 

                            sur ceux a plus tard 

                            • Partager sur Facebook
                            • Partager sur Twitter

                            2 tables jointures

                            × 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