Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2736 connectés 

 


Dernière réponse
Sujet : [PHP] Variable dynamique et bouclage de requête
Sh@rdar ça me fait une boucle infinie apparemment...
 
je donne mon exemple codé en dur et que je veux pouvoir boucler :
 
// Récupération des branche Parentes de l'arbre
$Query = mysql_query("SELECT Id,Nom from $Tbl_Categorie where Pere=0",$Connect);
while ($result = mysql_fetch_array($Query)) {
  echo $result["Nom"]."<br>";
 
  // Récup des enfants au niveau 1
  $Query2 = mysql_query("SELECT Id,Nom from $Tbl_Categorie where Pere=".$result["Id"]."",$Connect);
  while ($result2 = mysql_fetch_array($Query2)) {
    echo "  ".$result2["Nom"]."<br>";
 
    // Récup des enfants au niveau 2
    $Query3 = mysql_query("SELECT Id,Nom from $Tbl_Categorie where Pere=".$result2["Id"]."",$Connect);
    while ($result3 = mysql_fetch_array($Query3)) {
      echo "    ".$result3["Nom"]."<br>";
    }
  }
}
 
ici on ne peut récupérer que 2 niveaux de l'arbre, l'idéal serait de pouvoir incrémenter le nom des variables (Query1,result1) dans une boucle pour pouvoir avoir autant de niveau qu'on veut...

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Sh@rdar ça me fait une boucle infinie apparemment...
 
je donne mon exemple codé en dur et que je veux pouvoir boucler :
 
// Récupération des branche Parentes de l'arbre
$Query = mysql_query("SELECT Id,Nom from $Tbl_Categorie where Pere=0",$Connect);
while ($result = mysql_fetch_array($Query)) {
  echo $result["Nom"]."<br>";
 
  // Récup des enfants au niveau 1
  $Query2 = mysql_query("SELECT Id,Nom from $Tbl_Categorie where Pere=".$result["Id"]."",$Connect);
  while ($result2 = mysql_fetch_array($Query2)) {
    echo "  ".$result2["Nom"]."<br>";
 
    // Récup des enfants au niveau 2
    $Query3 = mysql_query("SELECT Id,Nom from $Tbl_Categorie where Pere=".$result2["Id"]."",$Connect);
    while ($result3 = mysql_fetch_array($Query3)) {
      echo "    ".$result3["Nom"]."<br>";
    }
  }
}
 
ici on ne peut récupérer que 2 niveaux de l'arbre, l'idéal serait de pouvoir incrémenter le nom des variables (Query1,result1) dans une boucle pour pouvoir avoir autant de niveau qu'on veut...
ethernal une fonciton récursive fera très bien l'affaire dans ce cas :
 
function AfficherFils($id){
  static $i=0;
  $query= "SELECT id,pere,nom from table where pere=$id";
  $res= mysql_query($query, $connexion);
  While ( $row= mysql_fetch_object($res) ){
     echo $i++. " Nom : ".$row->nom;
     AfficherFils($row->pere);
  }
}
 
AfficherFils(0);
 
je ne suis pas trop sûr du static, faudrait vérifier
Sh@rdar ok, j'ai un ptit souci qui m'a tracassé toute la journée
 
je veux faire une arborescence à partir d'un schéma de donnée simple : 3 champs de BDD nommées Id, Pere et Nom.
 
quand Pere = 0, on a une branche de base, les enfants sont les champs ayant comme Pere l'Id de la ligne parente, ainsi de suite pour pouvoir faire un arbre complet, chaque enfant ayant comme Pere la valeur de l'Id du Pere.  :pt1cable:  
 
faut ensuite que j'imbrique des requêtes du style  
SELECT Id,Nom,Pere where Pere=Id
while (...) {
  affichage du parent
  SELECT Id,Nom,Pere where Pere=Id_du_Parent {
    afifchage du fils 1 (avec incrémentation à chaque fois du numéro de fils)
 etc..
et de boucler le tout histoire de pas devoir mettre 50 requêtes..  
 
1 - j'espère que c'est clair
2 - je mets pas de code je suis parvenu à rien du tout la rigueur je peux mettre le X requêtes imbriquées mais bon..
 
Merci !!!

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)