Динамическое заполнение меню после извлечения данных из базы данных путем рекурсивного вызова функции

Я создаю веб-сайт для моего проекта колледжа и решил создать первую страницу. На нем я попытался отобразить меню, представляя родительские категории и динамически заполняя категории их подкатегориями, полученными путем рекурсивного вызова функции, которая делает то же самое, извлекая данные из базы данных. Однако результат показывает только главное или родительское меню и не показывает подкатегории. Я в растерянности. PHP-код показан ниже.

<?php
session_start();
include("connection.php");
$a=0;
if(isset($_SESSION["valid_user"]))
{
    echo "WELCOME ";
    echo $_SESSION["valid_user"];

    $name = $_SESSION["valid_user"];

    $sqllist   = "select * from category order by category_name";
    $rscatlist = mysql_query($sqllist);

    $catid1 = "";
    $opt    = "";

    while($rowcatlist = mysql_fetch_array($rscatlist))
    {
        $catid1  = $rowcatlist["category_id"];
        $catname = $rowcatlist["category_name"];
        $opt .= "<option value='$catid1'>$catname</option>";    
    }

    $sql1 = "select * from register where email_id='$name'" ;
    $rs1  = mysql_query($sql1);
    $row  = 0;
    $row1 = "";

    while($row1=mysql_fetch_array($rs1))
    {
        $row = $row1["admin"];
    }

    if($row==1)
    {
        echo "&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp<a href='admin/usermanagement/index.php'>Management Services </a> &nbsp ";
    }
    echo "<p align='right'><a href='logout.php'><font size='3'>logout</font></a></p>"."<br>" ."<br/>";
}
else
{
    echo "<p align='right'><a href='register.php'><font size='3'>Register</font></a> or <a href='login.php'><font size='3'>Login</font></a></p>"."<br/>"."<br/>";
}

$tbl = "";

$cat_id = 0;
$tbl = recursive($tbl,$cat_id);

function recursive($tbl,$cat_id)
{
    $sql = "select * from category where parent_id='$cat_id'";
    $rs  = mysql_query($sql);
    $tbl.="<ul>";
    while($row=mysql_fetch_array($rs))
    {
        $tbl .= "<li><a href='product.php?category_id=$row'[category_id]'>$row[category_name]</a>";
        $sql1 = "select * from category where parent_id=$row'[category_id]'";
        $rs1  = mysql_query($sql1);

        while($row1 = mysql_fetch_array($rs1))
        {  
            recursive($tbl,$row["category_id"]);
        }

        $tbl.="</li>";
    }  
    $tbl.="</ul>";
    return $tbl;
}


?>

person Spandan Mishra    schedule 04.12.2011    source источник


Ответы (1)


Кажется странным, что вы вызываете функцию recursive() прямо перед определением этой функции. Также кажется странным, что вы вызываете эту функцию только для $cat_id, равного 0. Не нужно ли вам перебирать все идентификаторы категорий основного уровня и также передавать их в функцию?

И, Господи, кто-нибудь когда-нибудь учил вас комментировать ваш код;)

person landons    schedule 04.12.2011
comment
спасибо, что указали на это. извините за поздний ответ, так как я некоторое время не входил в stackoverflow как пользователь. это действительно была проблема. и да, комментарии и я никогда не ладили;) - person Spandan Mishra; 10.12.2012