Mysql
 sql >> Database >  >> RDS >> Mysql

Come faccio a visualizzare la categoria di primo livello una sola volta?

emette solo il catname quando cambia. Dovrai anche ordinare prima la tua query per nome_categoria.

$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>";

Modifica:rileggi completamente la domanda e voglio dire che quando si tratta di alberi gerarchici, l'utilizzo di un genitore/figlio (o categoria/sottotitoli/sottotitoli) non è il metodo migliore. Sebbene funzioni, di solito richiede più query e funzioni ricorsive per la visualizzazione. Un approccio migliore consiste nell'usare il insieme nidificato che è fatto proprio per questo scopo.