sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo hago para que la categoría de primer nivel se muestre solo una vez?

solo genera el catname cuando cambia También deberá ordenar su consulta por nombre_de_categoría primero.

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

Editar:solo vuelva a leer la pregunta por completo y quiero decir que cuando se trata de árboles jerárquicos, usar un padre/hijo (o categoría/sub/subsub) no es el mejor método. Aunque funciona, por lo general requiere múltiples consultas y funciones recursivas para su visualización. Un mejor enfoque es usar el conjunto anidado que está hecho exactamente para este propósito.