Partage
  • Partager sur Facebook
  • Partager sur Twitter

Boucle while : requete avec incrémentation

[PHP/MySQL] Sous-requête

    12 avril 2011 à 14:55:58

    Bonjour,

    Aujourd'hui j'arrive à récupérer des informations grâce à plusieurs requêtes dans plusieurs while, et ce n'est pas propre du tout !
    Ca va en rendre fou certains... :-°

    <?php
    
    $var1=mysql_query("SELECT C.champX1, P.champY1, P.champY2 FROM cInfos C INNER JOIN pDossier P ON C.ID=P.ID WHERE P.emplacement=0 AND P.presence=1") or die ("ERREUR1");
    while($variables = mysql_fetch_array($var1)){
    //paramètres récupérés
    
        $var2=mysql_query("SELECT C.champX1, P.champY1, P.champY2 FROM cInfos C INNER JOIN pDossier P ON C.ID=P.ID WHERE P.emplacement=1 AND P.presence=1") or die ("ERREUR2");
    while($variables = mysql_fetch_array($var2)){
    //paramètres récupérés 
    
           $var3=mysql_query("SELECT C.champX1, P.champY1, P.champY2 FROM cInfos C INNER JOIN pDossier P ON C.ID=P.ID WHERE P.emplacement=2 AND P.presence=1") or die ("ERREUR3");
    while($variables = mysql_fetch_array($var3)){
    //paramètres récupérés
     
    $varX...      
          }//fin $var X
        }//fin $var3
      }//fin $var2
    }//fin $var1
    



    Comme vous le remarquez, le champ P.emplacement de ma table pDossier a un incrément de +1.

    Malheureusement je ne maitrise pas tout à fait les sous-requêtes pour ce genre de situation, pourriez vous me donner un coup de pouce s'il vous plait ?



    PS: Pour ceux qui se poserait la question d'un tel script, je travail sur un projet qui consiste à afficher des dossiers et sous dossiers (le tout orienté en base de donnée bien sur), j'identifie chaque dossier par un identifiant qui est une clé primaire. Tout mes "dossiers" sont dans la table pDossier.
    Mon but est d'afficher dans un premier temps le premier dossier d'emplacement 0 (dossier racine) puis ensuite tout les dossiers qu'il contient et ainsi de suite.

    Pour vous faire un dessin :
    -
     --
      ---
      ---
     --
      ---
    
    -
     --
    
    -
     --
      ---
       ----
     --
     --
      ---
     --


    Donc, mon script marche, mais ce n'est pas très propre.

    Merci

    EDIT : dessin console
    • Partager sur Facebook
    • Partager sur Twitter
      12 avril 2011 à 15:21:52

      Salut

      Il n'y a pas une clé étrangère dans ta table pDossier sur l'id afin de voir les liens de parentés ?
      Si la réponse est non , peux tu modifier la structure de ta table ?

      Autre chose : je ne comprend trop ton script : tu fais des boucle dans des boucles mais tu n'utilises même pas les résultats précédent. Autant mettre une seule requête avec des or / and
      • Partager sur Facebook
      • Partager sur Twitter
        12 avril 2011 à 15:53:18

        Salut Angelo,

        L'organisation des tables n'est pas très compliquée, j'ai deux tables qui entrent en jeu : cInfos qui contient mes infos concernant les comptes d'utilisateur et la table pDossier qui contient les informations des dossiers.
        Je relie les deux table avec une jointure grâce à un champs ID des deux tables qui contient l'identifiant de l'utilisateur. Cela sert à ce que chaque compte ne puisse pas avoir accès au dossier d'un autre utilisateur ( l'affichage se joue au niveau des paramètres récupérés :p).

        ||||||||||           ||||||||||||||
        | cInfos |---------->|  pDossier  |
        |--------|           |------------|
        |ID_cPrim|           | ID_pDossier|
        |champX1 |           | ID_cSecond |
        ||||||||||           | champY1    |
                             | champY2    |
                             ||||||||||||||




        Les boucles while dans des boucles while servent à organiser l'affichage (echo) des dossiers et sous-dossiers de manière bien organisée (comme j'ai essayé de le représenter avec les traits dans la fenêtre console de mon premier post).

        Merci de ton aide.


        EDIT : orthographe "l'affichage se joue"
        • Partager sur Facebook
        • Partager sur Twitter
          13 avril 2011 à 9:15:18

          Je pense que tu as une arborescence complexe donc je te conseil ce tuto : http://sqlpro.developpez.com/cours/arborescence/
          • Partager sur Facebook
          • Partager sur Twitter
            13 avril 2011 à 9:20:49

            C'est exacte, c'est une requête de sélection sur une arborescence assez complexe que j'ai là (Boucle / Conditions + Affichage organisée), le lien semble convenir à mon problème (autrement je ne vois pas comment je pourrais faire).

            Je te remercie Angelo.
            • Partager sur Facebook
            • Partager sur Twitter

            Boucle while : requete avec incrémentation

            × 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