Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich erreichen, dass die Kategorie der ersten Ebene nur einmal angezeigt wird?

nur den catname ausgeben wenn es sich ändert. Außerdem müssen Sie Ihre Abfrage zuerst nach category_name sortieren.

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

Bearbeiten:Lesen Sie die Frage einfach noch einmal vollständig durch und möchten Sie sagen, dass die Verwendung eines Elternteils/Kinds (oder einer Kategorie/Unter/Untersub) bei hierarchischen Bäumen nicht die beste Methode ist. Obwohl es funktioniert, erfordert es normalerweise mehrere Abfragen und rekursive Funktionen für die Anzeige. Ein besserer Ansatz ist die Verwendung des verschachtelten Satzes die genau für diesen Zweck gemacht ist.