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

PHP & Base de données Discussion :

affichage de tableau imbriqué résultant de requêtes [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Points : 7
    Points
    7
    Par défaut affichage de tableau imbriqué résultant de requêtes
    Salut tout le monde.
    voila, je bosse avec une bdd gérée avec phpmyadmin. en gros, une table rubriques composée ainsi :
    idrubrique
    titrerubrique

    et une table article composée ainsi :
    idarticle
    titre
    idrubrique

    Il y a plusieurs articles par rubrique, ainsi je voudrais afficher dans ma page php un tableau de cette forme :
    rubrique 1
    article1
    article2
    rubrique 2
    article3
    article4

    Je n'arrive pas à obtenir ce resultat. le meilleur resultat obtenu ne m'afficher que le premier article correspondant à l'idrubrique pour chaque rubrique. J'ai deja posté ce message sur un autre forum mais n'ai tjs pas de solution.
    Cela ce gere-t-il plus avec ma requete sql ou avec mon code php, sous forme de boucle foreach ou autre ?
    merci pour vos reponses et bonne journée.

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Récupérer la liste des rubriques (requête)
    TANT QUE rubriques dans la liste FAIRE
       Afficher rubrique
       Récupérer la liste des articles correspondant à la rubrique (requête)
       TANT QUE articles dans la liste FAIRE
          Afficher article
       FIN TANT QUE
    FIN TANT QUE

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Tu as plusieurs manières de faire.
    1. Tu récupères tout en une seule requête
    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
    $sql = 'SELECT r.idrubrique, r.titrerubrique, a.idarticle, a.titre FROM rubriques AS r INNER JOIN articles AS a USING(idrubrique)';
    $res = mysql_query($sql) or die(mysql_error() .'<br />'. $sql);
    if (mysql_num_rows($res)) {
       echo '<ul>';
       $old_rubrique = -1;
       while($data = mysql_fetch_assoc($res)) {
          if ($old_rubrique != $data['idrubrique']) {
             if ($old_rubrique != -1) {
                echo '</ul>';
             }
             echo '<li>'. $data['titrerubrique'];
             echo '<ul>';
          }
          echo '<li>'. $data['titre'] .'</li>';
       }
       echo '</ul>';
    }
    2. Tu récupères en n+1 requêtes, n étant le nombre de rubriques
    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
    $sql = 'SELECT * FROM rubriques';
    $res = mysql_query($sql) or die(mysql_error() .'<br />'. $sql);
    if (mysql_num_rows($res)) {
       echo '<ul>';
       while($data = mysql_fetch_assoc($res)) {
          echo '<li>'. $data['titrerubrique'];
          $sql = 'SELECT * FROM articles WHERE idrubrique = '. $data['idrubrique'];
          $res_article = mysql_query($sql) or die(mysql_error() .'<br />'. $sql);
          if (mysql_num_rows($res_article)) {
             echo '<ul>';
             while($article = mysql_fetch_assoc($res_article)) {
                echo '<li>'. $article['titre'] .'</li>';
             }
             echo '</ul>';
          }
          echo '</li>';
       }
       echo '</ul>';
    }

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Points : 7
    Points
    7
    Par défaut impekkk !
    Merci bcp pour vos reponses.
    c'est exactement ce que je souhaitais.
    Je suis tjs étonné de voir la réactivité des personnes de ce forum.
    Merci beaucoup et bonne journée

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

Discussions similaires

  1. [2008R2] Tableau Croisé résultant d'une requête ?
    Par lerorodu51 dans le forum Développement
    Réponses: 2
    Dernier message: 16/06/2014, 09h43
  2. Probleme de Jointures imbriquées dans une requête
    Par Crevin dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/04/2005, 11h05
  3. Probleme affichage dans tableau selon requête
    Par moulette85 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 01/03/2005, 15h44
  4. [W3C] affichage de tableau
    Par Anonymous dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 28/12/2004, 14h40
  5. affichage de tableau dynamique
    Par EJ dans le forum XMLRAD
    Réponses: 12
    Dernier message: 04/06/2004, 10h58

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