Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment faire en sorte que la catégorie de premier niveau ne s'affiche qu'une seule fois ?

afficher uniquement le catname quand ça change. Vous devrez également classer d'abord votre requête par category_name.

$row = mysql_fetch_array($result);
$catname = $row["category_name"];
$subcatname = $row["subcategory_name"];
$last = $catname;

echo "<li>$catname</li><ul>"

while($row = mysql_fetch_array($result)) {
    $catname = $row["category_name"];
    $subcatname = $row["subcategory_name"];
    if($last != $catname){
        echo "</ul><li>$catname</li><ul>"
    }
    echo "<li>$subcatname</li>";
    $last = $catname;
}
echo "</ul>";

Edit :Il suffit de relire la question dans son intégralité et de dire qu'en ce qui concerne les arbres hiérarchiques, l'utilisation d'un parent/enfant (ou d'une catégorie/sous-sous-sous-sous) n'est pas la meilleure méthode. Bien que cela fonctionne, il nécessite généralement plusieurs requêtes et fonctions récursives pour l'affichage. Une meilleure approche consiste à utiliser le ensemble imbriqué qui est fait exactement dans ce but.