0

问题:

我正在尝试使用 ul 和 li 元素将 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>
4

1 回答 1

0

在您的PHP 代码(第一级)中:您需要<li>在 while 循环中关闭您的代码。

$ctree .= '<ul>';

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

$ctree .= '</ul>';
于 2012-06-19T07:30:54.550 回答