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.