Bonjour
vu que grafikart à crée un tuto l'a dessus, j'en profite pour poser ma question, sait on jamais ^^
J'essaie d'afficher mes catégories à l'aide des <ul> <li> en html mais pas moyen de la rendre valide w3c. Je sais pourquoi mon code généré n'est pas valide mais je n'arrive pas à modifier l'algo pour que ce soit ok *_*
Si quelqu'un a une idée, voici le bout de code :
$levelPrevious = 0;
$html = "<ul>";
foreach ($arrayCat As $pc) {
if ($levelPrevious < $pc->level) {
$html .= str_repeat('<ul>', $pc->level - $levelPrevious);
$levelPrevious = $pc->level;
$html .= "<li> {$pc->get_tf('name')}</li>";
} elseif ($levelPrevious > $pc->level) {
$html .= str_repeat('</ul>', ++$levelPrevious - $pc->level);
$levelPrevious = $pc->level;
$html .= "<ul><li>{$pc->get_tf('name')} </li>";
} else {
$html .= "<li> {$pc->get_tf('name')} </li>";
}
}
$html .= '</ul>';
Merci d'avance et bonne aprem :)
Bien sur :)
<ul>
<li> 1 </li>
<ul>
<li> 1.1</li>
<ul>
<li> 1.1.1</li>
<ul>
<li> 1.1.1.1</li>
<ul>
<li> 1.1.1.1.1</li>
<ul>
<li> 1.1.1.1.1.1</li>
<ul>
<li> 1.1.1.1.1.1.1</li>
<li> 1.1.1.1.1.1.2 </li>
<li> 1.1.1.1.1.1.3 </li>
</ul>
</ul>
<ul>
<li>1.1.1.1.1.2 </li>
<li> 1.1.1.1.1.3 </li>
</ul>
</ul>
<ul>
<li>1.1.1.1.2 </li>
<li> 1.1.1.1.3 </li>
</ul>
</ul>
</ul>
<ul>
<li>1.1.2 </li>
</ul>
</ul>
<ul>
<li>1.2 </li>
<li> 1.3 </li>
<li> 1.4 </li>
<ul>
<li> 1.4.1</li>
<li> 1.4.2 </li>
</ul>
</ul>
</ul>
<ul>
<li>2 </li>
</ul>
Ok ça marche mais effectivement ul>ul n'est pas valide, il faut insérer le ul dans un nouveau li
<ul>
<li> 1 </li>
<li> <ul>.......</ul> </li>
</ul>
Oui je sais pourquoi elle n'est pas valide c'est juste que je n'arrive pas à modifier l'algo pour qu'il génère le bon html, je m'y prend peut être pas de la bonne façon x)
Voici mes données actuelle :
Array
(
[id] => 1
[name] => Computer Sience
[left] => 1
[right] => 38
[level] => 0
)
Array
(
[id] => 2
[name] => Computer
[left] => 2
[right] => 27
[level] => 1
)
Array
(
[id] => 3
[name] => Ordinateur fixe
[left] => 3
[right] => 24
[level] => 2
)
Array
(
[id] => 4
[name] => 1.1.1.1
[left] => 4
[right] => 23
[level] => 3
)
Array
(
[id] => 5
[name] => 1.1.1.1.1
[left] => 5
[right] => 18
[level] => 4
)
Array
(
[id] => 6
[name] => 1.1.1.1.1.1
[left] => 6
[right] => 13
[level] => 5
)
Array
(
[id] => 7
[name] => 1.1.1.1.1.1.1
[left] => 7
[right] => 8
[level] => 6
)
Array
(
[id] => 8
[name] => 1.1.1.1.1.1.2
[left] => 9
[right] => 10
[level] => 6
)
Array
(
[id] => 9
[name] => 1.1.1.1.1.1.3
[left] => 11
[right] => 12
[level] => 6
)
Array
(
[id] => 10
[name] => 1.1.1.1.1.2
[left] => 14
[right] => 15
[level] => 5
)
Array
(
[id] => 11
[name] => 1.1.1.1.1.3
[left] => 16
[right] => 17
[level] => 5
)
Array
(
[id] => 12
[name] => 1.1.1.1.2
[left] => 19
[right] => 20
[level] => 4
)
Array
(
[id] => 13
[name] => 1.1.1.1.3
[left] => 21
[right] => 22
[level] => 4
)
Array
(
[id] => 14
[name] => Ordinateur portable
[left] => 25
[right] => 26
[level] => 2
)
Array
(
[id] => 15
[name] => Réseaux
[left] => 28
[right] => 29
[level] => 1
)
Array
(
[id] => 17
[name] => Stockage
[left] => 30
[right] => 35
[level] => 1
)
Array
(
[id] => 18
[name] => Disque dur interne
[left] => 31
[right] => 32
[level] => 2
)
Array
(
[id] => 19
[name] => Disque dur externe
[left] => 33
[right] => 34
[level] => 2
)
Array
(
[id] => 16
[name] => Conssomable
[left] => 36
[right] => 37
[level] => 1
)
Il faut utiliser la récursivité pour avoir un tableau bien organisé pour ensuite écrire l'HTML simplement
Bonjour,
non je n'ai pas trouvé de solution à mon soucis.
Utilisez la récursivité serait quand même "idiot" vu que une des force de cette méthode est de justement ne pas utiliser la récursivité pour obtenir ce que l'on veut ;)
@grafikart --> la récursivité en se basant sur les champs left et right ? Ce n'est vraiment pas facile, aurais tu sous la main un exemple ?
La récursivité se fait au niveau PHP au lieu de MySQL avec cette méthode (d'où le gain), de plus vu que les données sont organisé par left DESC c'est très simple de produire un tableau organisé :)