2010-08-17 5 views
0

Mon code pour une raison quelconque affiche mes listes imbriquées pour mon menu arborescent tout faux quelqu'un peut me aider à corriger ce problème? Alors que mes listes imbriquées sont imbriquées correctement pour mon menu de l'arborescence.PHP menu arborescent problème des listes imbriquées

Voici mon code PHP.

function category_tree($parent = 0, $parent_url = ''){ 
    echo "<ol>"; 
    $mysqli = mysqli_connect("localhost", "root", "", "sitename"); 
    $q = "SELECT id, category, url FROM categories WHERE parent_id = '" . $parent . "' ORDER BY category asc"; 
    $r = mysqli_query($mysqli, $q); 
    while($rs = mysqli_fetch_array($r)){ 
     $url = $parent_url . $rs['url']; 
     echo '<li><a href="' . $url . '" title="' . $rs['category'] . ' Category Link">' . $rs['category'] . '</a></li>'; 
     category_tree($rs['id'], $url); 
    } 
    mysqli_free_result($r); 
    echo "</ol>"; 
} 
+0

Pourquoi utilisez-vous les interfaces mysqli de procédure? – NikiC

+0

pourquoi quel est le problème avec les utiliser? – nesta

+0

Vous pouvez rechercher d'autres stratégies de stockage pour vos données hiérarchiques. [Celui-ci] (http://articles.sitepoint.com/article/hierarchical-data-database), par exemple, pourrait remplacer vos appels de base de données récursifs avec un total de 1-2 appels. –

Répondre

-1

Très probablement, le nombre de résultats actifs est trop élevé.

Libère le jeu de résultats avant un appel récursif. Remplir toutes les lignes d'un ensemble de résultats à un tableau PHP $. Alors libérez ce resultset. Ensuite, utilisez une boucle pour imprimer les éléments de l'arborescence (comme vous le faites) et pour trouver un autre arbre enfant. Cela pourrait t'aider.

0

Sans regarder plus loin, je dirais que vous devez appeler category_tree avant faisant écho à la balise de fermeture de l'élément LI:

echo '<li><a href="' . $url . '" title="' . $rs['category'] . ' Category Link">' . $rs['category'] . '</a>'; 
    category_tree($rs['id'], $url); 
    echo '</li>'; 
+0

n'a pas fonctionné merci cependant :( – nesta

Questions connexes