Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Budowanie drzewa przy użyciu zagnieżdżonych nieuporządkowanych list

Hmm, uważam, że w Internecie muszą być dostępne przykłady, jak można to osiągnąć. Niektóre z nich mogą nawet mówić o nowych sposobach przechowywania danych hierarchicznych, a odczyty będą dla Ciebie interesujące.

W każdym razie ten fragment kodu, oparty na rekursji, może pomóc w uzyskaniu kodu HTML.

<?php
// recursive function to generate the category HTML
function generateTree ($parent) {
    global $arrPCat, $arrCat;
    if (array_key_exists($parent, $arrPCat)) {
        echo '<ul' . ($parent == 0 ? ' class="tree"' : '') . '>';
        foreach ($arrPCat[$parent] as $arrC) {
            echo '<li>' . $arrC['name'] . '</li>';
            generateTree($arrC['id']);
        }
        echo '</ul>';
    }
}

// read all categories from the DB
$rs = mysql_query('SELECT  `cl`.`id`, `cl`.`name`, `c`.`position`, IFNULL(`c`.`parent_id`, 0) AS `parent_id`
    FROM  `categories_locale`  `cl`
    LEFT JOIN  `categories`  `c` ON  `cl`.`id` =  `c`.`id`
    ORDER BY  `c`.`parent_id` ,  `c`.`position`');
while ($r = mysql_fetch_assoc($rs)) {
    // store parent and its children into the $arrPCat Array
    $arrPCat[$r['parent_id']][] = Array (
                                    'id' => $r['id'],
                                    'name' => $r['name']
                                  );
}
generateTree (0); // now generate the HTML for the category tree
?>

Mam nadzieję, że to pomoże!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wynik echa sumy PHP w locie (trudny)

  2. Wygeneruj następny identyfikator zgodnie z maksymalnym identyfikatorem w bazie danych za pomocą Javy

  3. Jak przywrócić z polecenia drop database za pomocą dziennika binarnego mysql?

  4. Używanie TIMESTAMP MySQL vs bezpośrednie przechowywanie znaczników czasu

  5. MySQL:błąd w składni SQL... w pobliżu klucza...?