|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : février 2008 Messages : 45 ![]() |
Bonjour à tous,
voila mon problème, j'ai une liste de Poles d'une entreprise et je souhaiterais afficher cette liste sous la forme d'une arborescence de ce type : PoleParent1 -PoleEnfant1 -PoleEnfant2PoleParent2 -PoleEnfant1.... la table est sur un SQL Server : Pole_v2(ID,Label,PoleParent,IDAgentResp) Pour l'instant j'arrive a afficher uniquement les poles parents par exemple mais je n'arrive pas a afficher les 2 en même temps et au bon endroit. Merci par avance |
|
|
00
|
|
|
#2 | ||
|
Membre chevronné
![]() |
bonjour a toi,
Si j'ai bien compris je procèderai comme suivant : Code :
|
||
|
|
00
|
|
|
#3 | ||
|
Invité régulier
![]() Inscription : février 2008 Messages : 45 ![]() |
Bonjour,
Merci kenny.kev ton aide m'a été précieuse. Par contre le <optgroup> ne fonctionnait pas donc j'utilise un système de listes <li> et <ol>. De plus je n'avais pas précisé que le PoleParent dans la table est l'identifiant du PoleParent et non le label mais j'ai Réussi à m'en sortir. Sauf pour le fait que certains Poles n'ont pas de PoleParent ni d'Enfant et donc ils ne sont pas affichés. Voici mon code : Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() |
c'est normal car tu as fait ta requête avec un where qui te récupère tout sauf les vides.
|
|
|
00
|
|
|
#5 | ||
|
Invité régulier
![]() Inscription : février 2008 Messages : 45 ![]() |
Bonjour,
oui mais cette requête permettait de récupérer que les poles parents. Mais de toute façon j'ai réussi, merci encore kenny.kev. Voici mon code qui fonctionne : Code :
|
||
|
|
00
|
|
|
#6 | ||
|
Invité régulier
![]() Inscription : février 2008 Messages : 45 ![]() |
Bonjour,
En fait j'ai un nouveau soucis, je dois prévoir le fait qu'il peut y avoir 3 ou 4 niveaux dans l'arborescence et non 2 seulements. Donc il faut que j'adapte le code précédent, j'ai deja essayé pour un 3ème niveau mais j'ai un problème, les 2 dernieres lignes sont affichées 5 fois au lieu d'une seule. Donc j'imagine que c'est un problème avec la boucle donc si quelqu'un à une idée pour corriger mon code ou bien une meilleure façon de procéder je suis preneur. Code :
|
||
|
|
00
|
|
|
#7 | ||
|
Membre chevronné
![]() |
Au lieu de tes 'while' utilise plutot des foreach tu auras moins de problèmes.
De plus, dans ton code lorsque tu fais un echo concataine au lieu de faire 3 echo a la suite : Code :
Code :
echo '<dd>' . $result2['Label'] . '</dd>'; |
||
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : février 2008 Messages : 45 ![]() |
Bonjour,
ok pour la concaténation si tu veux même si c'est une petite popup donc rapide à charger. Mais pour le foreach, je ne l'ai utilisé qu'une fois et je ne vois pas dans le cas présent comment je peux l'utiliser, si tu peux m'aider !(mais à mon avis le foreach aura le même effet que le while) Merci par avance. |
|
|
00
|
|
|
#9 | ||||
|
Membre chevronné
![]() |
Voila un ami a fait ce bout de code. Tu va en fin de compte appeler une fonction récursive. Ainsi peut importe le nombre d'enfant pour une arborescence. J'ai pu tester et cela fonctionne.
Code :
Code :
|
||||
|
|
00
|
|
|
#10 | ||||
|
Invité régulier
![]() Inscription : février 2008 Messages : 45 ![]() |
Bonjour,
Tout d'abord, désolé pour le retard mais j'avais aussi d'autres choses à faire importantes. Donc j'ai regardé ton code et testé mais j'ai des problèmes. D'une part je ne comprends pas pourquoi $idParent = 0 dans func_rec_arbo($idParent = 0) car dans ce cas la je n'ai aucun résultat. Sinon j'ai testé avec la requete suivante : 'SELECT * from Pole_v2' à la place de 'SELECT * from Pole_v2 WHERE PoleParent="'.$idParent.'"' et dans ce cas la, la boucle tourne indéfiniment et j'ai donc une erreur. Je ne vois pas comment faire ! Peut-être que j'appel mal la fonction ou qu'elle est mal définie, je te redonne mon code inspiré du tien : Code :
Code :
|
||||
|
|
00
|
|
|
#11 |
|
Membre chevronné
![]() |
tu peux me donné le prototypage de ta table en complet car j'ai fait les testes avec '$idParent' de type int() donc c'est peut être pour ça.
|
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() Inscription : février 2008 Messages : 45 ![]() |
Pole_v2(ID,Label,PoleParent,IDAgentResp)
avec : -ID : int(4) -Label : varchar(50) -PoleParent : int(4) -IDAgentResp : int(4) Voila. |
|
|
00
|
|
|
#13 |
|
Membre chevronné
![]() |
Dans "PoleParent" quand tu n'as pas de parents la valeur est de 0 ou non ?
Car en gros voici comment fonctionne la fonction : je sélectionne tous les label qui n'ont pas de PoleParent tand que j'ai des valeurs j'affiche le libelléaussi un ou enregistrement type dans ta base pour que je puisse tester |
|
|
00
|
|
|
#14 |
|
Invité régulier
![]() Inscription : février 2008 Messages : 45 ![]() |
La valeur ,n'est pas de 0, elle est nulle.
Le problème c'est que c'est une reflexive donc il ne veut pas de PoleParent égal à 0. Voici quelques enregistrements de ma base 1 R&D - Development <null> <null> 2 Professionnal Services <null> <null> 3 Marketing and Communication 2 <null> 4 Information System 1 <null> 5 Alliances 1 <null> 6 Sales EMEA 3 <null> Merci par avance. |
|
|
00
|
|
|
#15 |
|
Membre chevronné
![]() |
Tu as bien une base de données MySQL ?
Car je ne comprend pas tu as des valeurs "NULL" avec des int() alors que moi j'ai des 0 par default meme si la valeur par default est a "NULL". Mais pour toi, il te faut changer le $idPoleParent = 0 en $idPoleParent = "" et sa devrait fonctionner pour toi |
|
|
00
|
|
|
#16 |
|
Invité régulier
![]() Inscription : février 2008 Messages : 45 ![]() |
Ma base de données est une base SQL Server.
J'ai fait des tests avec l'analyseur de requête, le seul moyen de récupérer les bons poles est de mettre 'PoleParent is null' car PoleParent=' ' ne fonctionne pas. J'ai donc adapté la requête dans le code mais même problème, la boucle est infinie. Je ne vois pas comment faire et cela commence a être urgent. Merci par avance. |
|
|
00
|
|
|
#17 |
|
Invité régulier
![]() Inscription : février 2008 Messages : 45 ![]() |
J'ai trouvé une solution, j'ai modifié ma table en supprimant la reflexive et en mettant 0 dans PoleParent pour les Pôles qui n'ont pas de parents et la ton code fonctionne.
Merci beaucoup |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com