FORUM Tom's Hardware » Programmation » PHP & MySQL & ASP » Hiérarchie pour un menus dynamique
 

Hiérarchie pour un menus dynamique

Il y a 304 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
 
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : Hiérarchie pour un menus dynamique
 
Plus d'informations

Bonjour à tous,
je souhaiterait reprendre un sujet abandonné, KangOl m'avait déja parler d'une solution, comme je reprend le projet je l'est réétudier, sans succès car il y a beaucoup de choses dont je ne comprend pas la signification.
 
Les bases, un tableaux MySQL nommés cats qui contient 3 champs (id, nom et idparent), en tenant compte que le niveau 0 de la hiérarchie est idparent=0.
 
Quelqu'un peut retravaillez avec moi la proposition de KangOl?

Citation :

bon !
avant toute chose, il te faut une méthode pour obtenir les enfant directs d'une catégorie
 

Code :
  1. array getDirectChildrendOf($id) {
  2. faire requete : SELECT * from cats where idparent = $id
  3. renvoyer les élément sous forme de tableau
  4. }


 
ensuite il te faut une méthode récursive de mise en page
 

Code :
  1. string getHierarchy($id) {
  2. $result = '';
  3. $arr = getDirectChildrenOf($id);
  4. pour chaque élément de $arr {
  5. $result += '<li>';
  6. $result += getHierarchy( nième élément de $arr);
  7. $result += '</li>';
  8. }
  9. si $result est non vide
  10. return '<ul>' + $result + '</ul>';
  11. sinon return $result;
  12. }


 
ensuite suffit d'appeler la méthode getHierarchy avec 0 comme param (en considérant que les cats qui n'ont pas de parents ont 'idparent' à 0)
 
note que c'est du pseudo code, a retravailler (ajout de control ...)
 
l'avantage d'avoir une méthode getDirectChildrendOf c'est que tu peux créer une autre méthode que getHierarchy mais qui au lieu de renvoyer ca sous forme de <ul><li>, le renverrais sous une autre forme ...
l'inconvéniant c'est que ca fait plusieurs requetes (et donc que c'est lent)...
pour contrer cela, tu peux faire une seule requetes et stocker toutes tes cats dans un tableau globale que tu lira dans getDirectChildrendOf
 
edit: tab owned  [:kangol:1]
edit 2: fermage de balise [code] :o


 
Merci à tous

Profil : Pointeur
Plus d'informations

tu peux me dire exactement ce que tu ne comprend pas ?

Plus d'informations

en fait je ne comprend pas le fonctionnement de ces quelques lignes. je comprend bien qu'il y a un tableaux et apres le noir.
 
J'ai éssayé au cas ou de faire fonctionner ces quelques lignes (même sans comprendre, ce qui n'est pas bien du tout à mon goût) voila ce que j'ai mis  

Code :
  1. array getDirectChildrendOf($id) {
  2.     $db = "SELECT * FROM cats WHERE idparent='$id' ORDER BY nom ASC";
  3.     $req = mysql_query($db) or die('Erreur SQL !<BR>'.$db.'<BR>'.mysql_error());
  4.     while($cat = mysql_fetch_assoc($req)) {
  5.     echo ''.$cat['nom'].'('.$cat['id'].')';
  6.     }
  7. }
  8. string getHierarchy($id) {
  9.     $result = '';
  10.     $arr = getDirectChildrenOf($id);
  11.     pour chaque élément de $arr { //*je ne comprend pas pour chaque élément de $arr?
  12.         $result += '<li>';   
  13.         $result += getHierarchy( nième élément de $arr);
  14.         $result += '</li>';
  15.     }
  16.     if ($result!='') {
  17.         return '<ul>' + $result + '</ul>';
  18.     }
  19.     else {
  20.         return $result;
  21.     }
  22. }

Profil : Pointeur
Plus d'informations

au fait, getDirectChildrendOf doit renvoyer un tableau avec les objets ...


Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » PHP & MySQL & ASP » Hiérarchie pour un menus dynamique
 

Annonces Google
Publicité