2012-06-19 32 views
0

問題:組SQL崗位相互在列表中使用遞歸函數

我使用的是UL和李元素試圖從SQL組相關的帖子對方。然而,我卡住了,因爲我無法得到正確的輸出。

PHP碼(第一級):

$query = "SELECT CID, Item AS Name, Parent, Weight FROM betyg_category"; 
$result = mysql_query($query) or die ('Error (' . mysql_errno() . ') ' . mysql_error()); 

$ctree .= '<ul>'; 

while ($row = mysql_fetch_assoc($result)) 
{ 
    $ctree .= '<li class="category">'.$row['Name'] . ''; 
    $ctree .= getLowerRanks($row['CID'], 1, true); 
} 

$ctree .= '</li></ul>'; 

echo $ctree; 

遞歸函數在PHP:

function getLowerRanks($id, $level, $option = false) 
{ 
    if ($option) 
    { 
     $response = ''; 
     $query = "SELECT CID, Item AS Name, Parent, Weight FROM betyg_category WHERE Status = 1 AND Parent= " . $id . " ORDER BY CID ASC"; 
     $result = mysql_query($query) or die ('Error (' . mysql_errno() . ') ' . mysql_error()); 

     $response .= '<ul>'; 

     while ($row = mysql_fetch_assoc($result)) 
     { 
      for ($i = 0; $i < ($level-1); $i++) $response .= '&nbsp;'; 
      $response .= '<li class="category">&nbsp;'.$row['Name'] . '</li>'; 
      $response .= getLowerRanks($row['CID'],$level+1, true); 
     } 

     $response .= '</ul>'; 
    } 

    return $response; 
} 

希望的輸出:

<ul> 
    <li class="category">Litteratur 
     <ul> 
      <li class="category">&nbsp;Integration av källorna</li> 
      <li class="category">&nbsp;Belysning av egna resultat</li> 
      <li class="category">&nbsp;Referenser</li> 
     </ul> 
    </li> 
    <li class="category">Validitet 
     <ul> 
      <li class="category">&nbsp;Huvudsyfte</li> 
      <li class="category">&nbsp;Oberoende och beroende variabler</li> 
      <li class="category">&nbsp;Analysmetoderna</li> 
     </ul> 
    </li> 
    <li class="category">Reliabilitet 
     <ul> 
      <li class="category">&nbsp;Metodval</li> 
      <li class="category">&nbsp;Metodbeskrivning</li> 
      <li class="category">&nbsp;Databearbetning</li> 
     </ul> 
    </li> 
    <li class="category">Språk, stil och struktur 
     <ul> 
      <li class="category">&nbsp;Språk och stil</li> 
      <li class="category">&nbsp;Struktur</li> 
     </ul> 
    </li> 
    <li class="category">Arbetssätt 
     <ul> 
      <li class="category">&nbsp;Försvar och opposition</li> 
      <li class="category">&nbsp;Etiska och samhälleliga aspekter</li> 
     </ul> 
    </li> 
</ul> 
+0

您的意思是第一個顯示父類別,然後顯示其子類別? – baig772

+0

正確,這是我的意圖。 – kexxcream

回答

0

在您的PHP代碼(第一級)中:您需要在while循環中關閉<li>

$ctree .= '<ul>'; 

while ($row = mysql_fetch_assoc($result)) 
{ 
    $ctree .= '<li class="category">'.$row['Name'] . ''; 
    $ctree .= getLowerRanks($row['CID'], 1, true); 
    $ctree .= '</li>'; 
} 

$ctree .= '</ul>'; 
+0

謝謝,但它不能解決問題。問題是我在遞歸函數中以錯誤的方式使用了ul元素。它應該是第一個ul元素,然後是所有的li元素,然後關閉ul元素。那現在不會發生。 – kexxcream