Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да покажа категория и подкатегория?

Кодът по-долу трябва да ви помогне да започнете. Това е "рекурсивна функция" - функция, която се извиква. Както @Fake51 току-що спомена, не е много ефективен, но трябва да работи.

Ще ви трябва малко CSS, за да структурирате списъка, който сте създали.

function showItems($parent = 0) {
    $q = "SELECT id, name FROM category WHERE parent_id = $parent";
    $q = mysql_query($q);
    if(mysql_num_rows($q)) {
        echo "<ul>";
        while($r = mysql_fetch_row($q)) {
            echo "<li>";
            echo "<a href=\"page.php?id=".$r[0]."\">".htmlentities($r[1])."</a>";
            showItems($r[0]);
            echo "</li>"\n;
        }
        echo "</ul>\n";
    }
}
showItems();

Редактиране:Тъй като все още няма приет отговор, ето моят код, модифициран, за да направя всичко с една SQL заявка, която трябва да бъде много по-ефективна, макар и малко по-объркваща потенциално. Вижте как ще ви върви.

//Recursive function to show menu items from a passed in array
function showItems(&$menu, $parent = 0) {
    if(is_array($menu[$parent]) && sizeof($menu[$parent])) {
        echo "<ul>";
        foreach($menu[$parent] as $num=>$name) {
            echo "<li>";
            echo "<a href=\"page.php?id=".$num."\">".htmlentities($name)."</a>";
            showItems($menu, $num);
            echo "</li>\n";
        }
        echo "</ul>\n";
    }
}

//Create a multi-dimensional array of ALL menu items, separated by parent
$menu = array();
$q = "SELECT id, name, parent_id FROM category ORDER BY order";
$q = mysql_query($q);
while($r = mysql_fetch_row($q)) {
    $menu[$r[2]][$r[0]] = $r[1];
}

//Call the function
showItems($menu);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. крайните нули не влизат в базата данни

  2. Как да промените НАБОР ОТ СИМВОВЕ (и СЪБОРЯВАНЕ) в цялата база данни?

  3. Как мога да добавя ограничение ON DELETE към таблицата?

  4. Как да свържете Android с MySQL с помощта на Mysql JDBC драйвер

  5. Прочетете огромни текстови файлове и съхранявайте всеки ред в базата данни