Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menampilkan kategori dan subkategori?

Kode di bawah ini akan membantu Anda memulai. Ini adalah "fungsi rekursif" - fungsi yang memanggil dirinya sendiri. Seperti yang baru saja disebutkan @Fake51, ini tidak terlalu efisien, tetapi seharusnya berhasil.

Anda memerlukan beberapa CSS untuk menyusun daftar yang telah Anda buat.

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();

Sunting:Karena masih belum ada jawaban yang diterima, inilah kode saya yang dimodifikasi untuk melakukan semuanya dengan satu kueri SQL yang seharusnya jauh lebih efisien, meskipun berpotensi sedikit lebih membingungkan. Lihat bagaimana hasilnya.

//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. Apakah ada cara Laravel untuk mengeksekusi file .SQL untuk memuat data

  2. Kesalahan:pilih perintah ditolak untuk pengguna '<userid>'@'<ip-address>' untuk tabel '<table-name>'

  3. GABUNG Ganda dengan tabel yang sama dua kali

  4. Hubungkan MySQL melalui localhost tidak berfungsi tetapi 127.0.0.1 berfungsi

  5. Bisakah saya menjalankan file sql di instance Google Cloud Sql saya menggunakan perintah gcloud sql