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

Я создаю веб-сайт для своего проекта колледжа и решил создать первую страницу. В нем я попытался отобразить меню, представляя родительские категории и динамически заполняя категории их подкатегориями, полученными путем рекурсивного вызова функции, которая делает то же самое, выбирая данные из базы данных. Однако результат показывает только главное или родительское меню и не показывает подкатегории. Я в растерянности. Код 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;
}


?>

1 Ответ

0 голосов
/ 04 декабря 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...