Partage
  • Partager sur Facebook
  • Partager sur Twitter

Table et "sous-table"

Comment organiser la BDD ?

Sujet résolu
    16 mai 2011 à 21:06:28

    Bonjour à tous ! Je me présente Drakonetom et je m'amuse à faire un petit site dans lequel je souhaite afficher une liste d'artistes et leurs CD via SQL. ;)
    J'ai réussi à faire le formulaire pour pouvoir insérer, modifier et supprimer un artiste de ma table "artiste". Là où j'ai un doute c'est comment organiser mes tables pour pouvoir afficher les artistes et leurs CD sachant qu'il y en aura plusieurs.
    J'ai plusieurs pistes mais c'est pas encore très clair, comme par exemple créer une table pour chaque artistes, lier deux tables, ou tout dans la même (foreach ?). Enfin voilà la problématique, j'espère que je suis assez clair. Merci d'avance :)
    • Partager sur Facebook
    • Partager sur Twitter
      16 mai 2011 à 21:34:03

      Une table cd, une table artiste, et eventuellement une table artiste_cd si les cd peuvent avoir été faits par plusieurs artistes
      • Partager sur Facebook
      • Partager sur Twitter
        17 mai 2011 à 18:37:15

        Oui mais comment afficher la liste des artistes et des CDs comme cela :

        Citation : Drakonetom

        Artistes 1
        CD 1
        CD 2
        Artiste 2
        CD 1
        Artiste 3
        CD 1
        CD 2
        CD 3
        etc...



        • Partager sur Facebook
        • Partager sur Twitter
          17 mai 2011 à 21:46:19

          Si tu arrives à récuperer les données comme ça:
          Artiste 1 - CD 1
          Artiste 1 - CD 2
          Artiste 2 - CD 1
          Artiste 3 - CD 1
          Artiste 3 - CD 2
          Artiste 3 - CD 3

          tu arriveras surement à faire ce que te veux...

          Tracker.
          • Partager sur Facebook
          • Partager sur Twitter
            19 mai 2011 à 20:42:32

            Oui je suis d'accord mais je ne sais pas comment il faut s'y prendre pour afficher les liens comme dans mon deuxième post.
            Voici ma boucle pour afficher pour afficher toute la table :

            <?php $reponse = $bdd->query('SELECT * FROM table_artiste_lien');
            
            while ($donnees = $reponse->fetch())
            {
                echo $donnees['artiste']; ?> <br />
                <?php echo $donnees['lien'];
            }
            
            $reponse->closeCursor(); ?>
            


            J'ai pensais à faire une deuxième boucle à l'intérieur qui affiche les liens en fonction du champ artiste, mais je pense qu'il y a mieux à faire :)
            • Partager sur Facebook
            • Partager sur Twitter
              19 mai 2011 à 21:57:49

              Réfléchis encore, tu n'as pas besoin de boucle en plus, et rapelle toi que tu peux stocker des infos dans des variables, t'en servir ensuite pour faire des comparaisons...

              Tracker.
              • Partager sur Facebook
              • Partager sur Twitter
                20 mai 2011 à 18:40:43

                J'ai réussi ! Mais j'ai fait une boucle en plus :-° Je ne vois pas comment faire autrement :euh:

                <?php $reponse = $bdd->query('SELECT DISTINCT artiste FROM matable');
                while ($artiste = $reponse->fetch())
                {
                    echo $artiste['artiste']; ?> <br /> <?php
                    $req = $bdd->prepare('SELECT lien FROM matable WHERE artiste = ?');
                    $req->execute(array($artiste['artiste']));
                    while ($lien = $req->fetch())
                    { echo $lien['lien']; ?> <br /> <?php }
                } ?>
                
                • Partager sur Facebook
                • Partager sur Twitter
                  20 mai 2011 à 18:41:18

                  Citation : Tracker

                  rapelle toi que tu peux stocker des infos dans des variables, t'en servir ensuite pour faire des comparaisons...

                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 mai 2011 à 18:51:27

                    Il y a quelque chose qui m'échappe c'est obliger, stocker les infos dans une variable OK, sa je sais faire, mais comparer quoi avec quoi ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 mai 2011 à 18:53:02

                      Dans ta boucle, tu traites tes lignes de résultats

                      Si l'artiste d'une ligne est le même que celui de la ligne précédente, tu n'affiche pas l'artiste, seulement le titre du CD.

                      Donc faut comparer l'artiste à l'artiste de la ligne précédente.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 mai 2011 à 19:23:54

                        Citation

                        Si l'artiste d'une ligne est le même que celui de la ligne précédente


                        Ce n'est pas une condition ? Ou alors c'est une fonction que je ne connais pas... Je suis un zéro je le rappel ;)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          20 mai 2011 à 22:54:30

                          Hein ???

                          Une comparaison, ça peut être une condition...
                          • Partager sur Facebook
                          • Partager sur Twitter
                            21 mai 2011 à 8:01:27

                            Pas faux xd, donc si je comprend bien il faudrait tester quelque chose du genre :
                            $artiste['artiste']; == $artiste['artiste_precedent'];
                            Mais quelle est la formule magique pour récupérer l'artiste précédent ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 mai 2011 à 9:43:16

                              Citation : Taguan

                              Citation : Tracker

                              rapelle toi que tu peux stocker des infos dans des variables, t'en servir ensuite pour faire des comparaisons...

                              • Partager sur Facebook
                              • Partager sur Twitter
                                21 mai 2011 à 9:59:18

                                Vous êtes sur qu'avec les connaissances que j'ai il est possible de faire cela ? Est-ce plus rapide que ma proposition 8 posts avant celui là ?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  21 mai 2011 à 23:50:14

                                  Je pense que je me rapproche, mais il y a toujours une boucle en plus :

                                  <?php $reponse = $bdd->query('SELECT * FROM francolive ORDER BY artiste');
                                  $artiste_precedent = NULL;
                                  
                                  while ($donnees = $reponse->fetch())
                                  {
                                      if ($artiste_precedent != $donnees['artiste']) 
                                      { echo $donnees['artiste'];  ?> <br /> <?php }
                                      echo $donnees['lien']; ?> <br /> <?php
                                      $artiste_precedent = $donnees['artiste'];
                                  }
                                  
                                  $reponse->closeCursor(); ?>
                                  
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    22 mai 2011 à 8:13:03

                                    En effet, plus qu'à faire une jointure dans ta requete pour récupérer l'artiscte et le lien en même temps.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      22 mai 2011 à 14:50:15

                                      J'ai pas compris comment ni pourquoi ?
                                      Je sais je comprend pas grand chose mais j'apprends ^^
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        22 mai 2011 à 14:56:18

                                        Une seule et même table nommée francolive, avec trois champs (id, artiste, lien) pour l'instant. Créer une jointure ne me parait pas utile pour l'instant.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          22 mai 2011 à 14:57:51

                                          A ben non, je pensais que t'avais 2 tables. Ben donc t'as tout ce qu'il faut là...
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            22 mai 2011 à 15:02:04

                                            Le seul hic qui n'est pas très grave mais assez embêtant est pour mettre en forme seulement les artistes ou seulement les liens...
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              22 mai 2011 à 15:03:45

                                              ...Tu crois que j'ai assez d'explications pour t'aider là ?
                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              Table et "sous-table"

                                              × 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