Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como faço para que a categoria de primeiro nível seja exibida apenas uma vez?


apenas produza o catname quando muda. Você também precisará ordenar sua consulta por nome_categoria primeiro.
$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:Apenas releia a pergunta completamente e quero dizer que, quando se trata de árvores hierárquicas, usar um pai/filho (ou categoria/sub/subsub) não é o melhor método. Embora funcione, geralmente requer várias consultas e funções recursivas para exibição. Uma abordagem melhor é usar o conjunto aninhado que é feito exatamente para esse fim.