多列表功能无法正常运行php

时间:2014-01-15 02:35:48

标签: php mysql

我的功能:

function m_gen($n) {
    $q = mysql_query("select * from nume where parentid = '$n'");
    if (mysql_num_rows($q) > 0) {
        echo "<ul>\n";
        while ($r = mysql_fetch_assoc($q)) {
            echo "<li>".$r['title'].m_gen($r['id'])."</li>\n";
    }
    echo "</ul>\n";
    } else {
        echo "";
    }
}

调用这样的函数:

m_gen(0);

生成以下结果:

当我调用该函数时,HTML编写不正确。

结果应为:

<li>main3
    <ul>
        <li>sub main3 > main1</li>
        <li>sub main3 > main2</li>
        <li>sub main3 > main3</li>
        <li>sub main3 > main4</li>
        <li>sub main3 > main5</li>
        <li>sub main3 > main6</li>
    </ul>
</li>

但是,会发生什么是这样的:

    <ul>
        <li>sub main3 > main1</li>
        <li>sub main3 > main2</li>
        <li>sub main3 > main3</li>
        <li>sub main3 > main4</li>
        <li>sub main3 > main5</li>
        <li>sub main3 > main6</li>
    </ul>
<li>main3</li>

该功能有什么问题?

我试图找到解决方案,但我没有得到结果

MySQL source(传递:数字)

1 个答案:

答案 0 :(得分:1)

不,不应该那样,因为当你这样做时:

echo "<li>".$r['title'].m_gen($r['id'])."</li>\n";

首先它执行m_gen函数(如果有更多级别则再递归),在最后一级它回显(因为在递归函数中有一个echo),然后返回“父”,函数它叫它,那个回声,等等。

你应该这样做:

echo "<li>".$r['title'];
m_gen($r['id']);
echo "</li>\n";