Diskon 80% terbatas! Masukkan kupon "merdeka" di kelas apa saja

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.

avatar oriewancu
@oriewancu

4 Kontribusi 2 Poin

Diperbarui 9 tahun yang lalu

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

avatar hilmanski
@hilmanski

2713 Kontribusi 2145 Poin

Dipost 9 tahun yang lalu

Saya baca-baca di stackoverflow, ada yang menyarankan dengan fungsi recursive, tapi saya gak paham-paham.

avatar oriewancu
@oriewancu

4 Kontribusi 2 Poin

Dipost 9 tahun yang lalu

Login untuk ikut Jawaban