Postingan lainnya
Buku Ini Koding!
Baru!
Buku ini akan jadi teman perjalanan kamu belajar sampai dapat kerjaan di dunia programming!
Bagaimana cara membuat fungsi menu dengan kedalaman level sampai dengan N level atau Tak Terhingga?
Saya memiliki tabel menu seperti ini:

Kemudian dengan code php:
// sql_query menu level 0
$query_menu = mysqli_query($con, "SELECT * FROM menu WHERE parent is null ORDER BY `parent`, `urut`");
$tag = "-";
while ($k = mysqli_fetch_array($query_menu)) {
echo "$tag $k[menu]";
echo "<br>";
// sql_query menu level 1
$query_menu_lev1 = mysqli_query($con, "SELECT * FROM menu WHERE parent = $k[id] ORDER BY `parent`");
while ($l = mysqli_fetch_array($query_menu_lev1)) {
echo "$tag$tag $l[menu]";
echo "<br>";
// sql_query menu level 2
$query_menu_lev2 = mysqli_query($con, "SELECT * FROM menu WHERE parent = $l[id] ORDER BY `parent`");
while ($m = mysqli_fetch_array($query_menu_lev2)) {
echo "$tag$tag$tag $m[menu]";
echo "<br>";
// sql_query menu level 3
$query_menu_lev3 = mysqli_query($con, "SELECT * FROM menu WHERE parent = $m[id] ORDER BY `parent`");
while ($n = mysqli_fetch_array($query_menu_lev3)) {
echo "$tag$tag$tag$tag $n[menu]";
echo "<br>";
}
}
}
}
Namun saya terkendala jika kedalaman level ini lebih dari tiga, atau bahkan 10, maka akan menambah panjang baris kode pemrograman dan tidak efisien. Jadi saya mohon bantuannya jika ada yang bisa membuat fungsi dari case ini serta penjelasan dari fungsi tsb, Terima kasih.
2 Jawaban:
biasanya kita misahin antara table parent dan table anaknya, coba belajar relation di kelas kelas ini [link]https://sekolahkoding.com/kelas/mengenal-sql-join[/link] https://sekolahkoding.com/kelas/design-database-101
Saya baca-baca di stackoverflow, ada yang menyarankan dengan fungsi recursive, tapi saya gak paham-paham.