2010-08-17 4 views
0

내 코드가 내 트리 메뉴에 대한 중첩 목록을 잘못 표시하여 누군가이 문제를 해결하는 데 도움이 될 수 있습니까? 내 중첩 목록이 내 트리 메뉴에 올바르게 중첩되도록PHP 트리 메뉴 중첩 목록 문제

여기 내 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

당신이 절차 mysqli 인터페이스를 사용하는 이유는 무엇입니까? – NikiC

+0

왜 그걸 사용하는 데 문제가 있습니까? – nesta

+0

계층 적 데이터를위한 다른 저장 전략을 살펴볼 수 있습니다. 예를 들어 [This one] (http://articles.sitepoint.com/article/hierarchical-data-database)은 재귀 데이터베이스 호출을 총 1-2 건으로 대체 할 수 있습니다. –

답변

-1

활성 결과 집합이 너무 많아서는 안됩니다.

재귀 호출 전에 결과 집합을 해제하십시오. 결과 집합의 모든 행을 PHP $ 배열로 채 웁니다. 그런 다음 그 결과를 해제하십시오. 그런 다음 루프를 사용하여 트리 요소를 인쇄하고 (u r하는 것처럼) 추가 자식 트리를 찾습니다. 너를 도울 수있어.

0

더 보지 않고, 난 당신이 LI 요소의 닫는 태그를 반향 전에 category_tree를 호출해야 말하고 싶지만 :

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

그래도 고마워. :( – nesta