Voici ma table et je dois l'afficher en utilisant php?comment faire une boucle récursive pour une navigation hiérarchique en utilisant Php Codeigniter?
Et ressembler à ceci:
Y at-il un code php pour cela?
Merci!
Voici ma table et je dois l'afficher en utilisant php?comment faire une boucle récursive pour une navigation hiérarchique en utilisant Php Codeigniter?
Et ressembler à ceci:
Y at-il un code php pour cela?
Merci!
code dans votre modèle
public function getHierMenu() {
$rows = $this->db->get('table_name')->result();
$depthIndex = array('nav_hier_root','nav_hier_d1','nav_hier_d2','nav_hier_d3','nav_hier_d4');
$menu = [];
foreach($rows as $row){
$depth = $row->nav_hier_depth;
if($depth > 0)
$menu[$row->$depthIndex[0]] = [];
if($depth > 1)
$menu[$row->$depthIndex[0]][] = $row->$depthIndex[1];
if($depth > 2)
$menu[$row->$depthIndex[0]][$row->$depthIndex[1]][] = $row->$depthIndex[2];
if($depth > 3)
$menu[$row->$depthIndex[0]][$row->$depthIndex[1]][$row->$depthIndex[2]][] = $row->$depthIndex[3];
if($depth > 4)
$menu[$row->$depthIndex[0]][$row->$depthIndex[1]][$row->$depthIndex[2]][$row->$depthIndex[3]][] = $row->$depthIndex[4];
}
return $menu;
}
MISE À JOUR
Utilisez cette fonction récursive et passer le tableau retourné ($menu
) de la fonction précédente pour imprimer le menu à l'aide ul
li
.
function printMenu($menu) {
echo '<ul>';
foreach ($menu as $k => $v) {
echo '<li>';
if (!empty($v) && is_array($v)) {
echo $k;
printMenu($v);
} else {
echo $v;
}
echo '</li>';
}
echo '</ul>';
}
Il a été testé et fonctionne correctement.
Salut merci mais j'obtiens une erreur 'Correction de chaîne illégale 'doggie'' Trouvé à cette ligne: '$ menu [$ row -> $ depthIndex [0]] [$ row -> $ depthIndex [1]] = $ row -> $ depthIndex [2]; ' – howardtyler
Veuillez me laisser vérifier, je mettrai à jour mon post bientôt, si des erreurs sont trouvées. –
D'accord, je ne sais pas pourquoi c'était un décalage de chaîne illégal .... – howardtyler
Avez-vous essayé d'écrire quoi que ce soit? Si oui, s'il vous plaît partagez-le et nous serons heureux de vous aider. Vous devriez envisager d'utiliser un arbre imbriqué - https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/tree.md. Cela vous donnera des méthodes pour convertir votre table en une arborescence hiérarchique. –
@ Meezaan-ud-Din ne m'a pas donné des méthodes si jamais vous pouvez le dire ci-dessous. Merci – howardtyler