php - 使用递归函数在列表中将 SQL 帖子相互分组

标签 php html sql css list

问题:

我正在尝试使用 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>

最佳答案

在您的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>';

关于php - 使用递归函数在列表中将 SQL 帖子相互分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11096043/

相关文章:

javascript - 无法与 javascript 中的 php echo 输出进行比较(jquery-post)

javascript - html 图像何时开始下载数据?

sql - 无法创建我的第一个Hive表

php - 在jquery函数中使用php的正确方法

php - 防止重复提交表单

php - 在代理后面运行 PHP SoapServer

css - float div 100%不影响外层div

javascript - html中动态生成超链接

sql - ActiveRecord:从控制台列出表中的列

sql - 如何使用SQL对postgresql中最后一条记录中的数据求和