简体   繁体   中英

nav bar using sql and php

hi have two database tables :

category (contains category name) sub_cats (contains sub categories)

im trying to show sub cats for each cat ie:

  • cat 1
    • sub cat
    • sub cat
    • sub cat
    • sub cat
  • cat 2
    • sub cat
    • sub cat
    • sub cat
    • sub cat

im using this query but its doesnt seems to work. what to do ?

$sql = mysql_query("SELECT category.dname AS dname, sub_cats.dname AS sdname
                   FROM category
                   LEFT JOIN sub_cats
                   ON category.id = sub_cats.catid
                   ORDER BY category.id");

while ($row = mysql_fetch_array($sql)) {

    $cats .= '<li><a href="?'.$row['dname'].'">'.$row['dname'].'</a></li>
    <li> - - - <a href="?'.$row['sdname'].'">'.$row['sdname'].'</a></li>';
}

Try separating your queries

$sql = mysql_query("SELECT category.dname AS dname
                   FROM `category`
                   ORDER BY category.id");

while ($row = mysql_fetch_array($sql)) {

    $cats .= '<li><a href="?'.$row['dname'].'">'.$row['dname'].'</a></li>';

        $sql2 = mysql_query("SELECT sub_cats.dname AS sdname
                           FROM `sub_cats`
                           WHERE sub_cats.catid = " . $row['id']);

        while ($row2 = mysql_fetch_assoc($sql2)) {

            $cats .= '<li> - - - <a href="?'.$row['sdname'].'">'.$row['sdname'].'</a></li>';
        }
}

This is how you should do the printing with your current query:

$cats .= '<ul>';
$currentCat = null;
while ( $row = mysql_fetch_array($sql) ) {
    if( $row[ 'dname' ] !== $currentCat ) {
        if( $currentCat !== null ) $cats .= '</ul>';
        $currentCat = $row[ 'dname' ];
        $cats .= '<li><a href="?'.$row['dname'].'">'.$row['dname'].'</a></li>';
        $cats .= '<ul>';
    }
    $cats .= '<li><a href="?'.$row['sdname'].'">'.$row['sdname'].'</a></li>';
}
if( $currentCat !== null ) $cats .= '</ul>';
$cats .= '</ul>';

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM