Submenu w PHP

Witam,
Stworzyłem dynamiczne menu w php i pierwszy poziom działa, ale nie działa pobieranie podstron z drugiej tabeli. Mam dwie tabele w pierwszej są pobierane strony, a z drugiej podstrony. Kod wygląda tak:

 <ol>
<?php
  // sprawdzenie czy jest strona z kategoriami
  $get_name_categories = "SELECT  title_page, href from xpl_submenu where cat_id = id ";
  $res = $db->query($get_name_categories);
  $num_rows=$result->num_rows;
  
  
  if ($result = $db->query($get_page_link)){
			 if($result->num_rows>0){
			  while($row = $result->fetch_object()){
				  ?>
				    <li><a href="<?php echo $row->link_page;?>"><?php echo $row->name_page;?></a>
				
         <?php
        if($res->num_rows > 0){
			?>
			<ul>
			<?php
			  while($row = $res->fetch_object()){
				  ?>
				  <li><a href="<?php echo $row->href; ?>"><?php echo $row->title_page;?></a></li>
			<?php	  
			 }
			 ?> 
			  </ul>
			<?php	  
			}	 
		
		

?> 
</li>
 <?php
			  }
		  }
		}
 ?>
	 </ol>

Pobiera mi strony pod nazwą start a nie pod drugą stroną. Gdzie jest błąd? Wzorowałem się na tutorialu, który jest napisany też w php, ale z użyciem PDO, ja chcę użyć new mysqli.

Podaj jakąś przykładową tablicę z wynikami z bazy danych.

tabela xpl_menu
tabela1
tabela xpl_submenu
tabela2
Chyba że zrobię kompozycje menu, ale wolę zrobić w tradycyjny sposób. A wzorowałem się na tym tutorialu:

  1. Czemu upierasz się, by menu było w bazie?
  2. A jeśli tak, to czy rozważałeś opcję, by umieścić submenu w tej samej tabeli co menu?
  1. bo chcę, aby bylo dynamiczne. Zapiszę stronę w bazie, podam link i chciałbym, aby było w menu i tak mam, ale w pierwszym poziomie (xpl_menu). I chciałbym drugiego poziomu tak zrobić, ale nie edytować kod i ręcznie wprowadzać adresy stron.
  2. Rozważałem, ale wybrałem wariant drugi, i wzorowałem się na powyższym filmie. A co wg.Ciebie jest gorzej?

Oczywiście, że jest gorzej bo to są te same dane trzymane w dwóch tabelach, plus jak będziesz chciał dodać 3 level menu to musisz dokładać kolejną tabelę. Jak masz dobrze zaprojektowane menu zapisywane w jednej tabeli to możesz mieć nieskończoną ilość poziomów - jedyny problem to jak to potem wyświetlić by było czytelne i użyteczne.
Generalnie ten tutorial na którym bazujesz to jest chyba marnej jakości skoro ktoś w taki sposób pokazuje implementację wielopoziomowego menu.

Na początku chciałem mieć strony tylko w jednej bazie, ale myślałem, że gorzej będzie, dlatego zrobiłem na dwóch tabelach. Teraz okazuje się, że jest gorzej trzymając strony w wielu tabelach. W takim razie wracam do jednej tabeli. Spróbuje porobić, a jak nie będzie wychodzić, to wrócę do tego tematu. Chyba, że zrobię, co wyżej pisałem kompozycję menu.

Proponuję najpierw zrobić bez bazy, na zwykłej tablicy. Jak to opanujesz, to dodanie bazy będzie jak bułka z masłem.

Nie muszę na tablicach, bo wiem jak to wygląda, i dlaczego zakładasz, że nie opanowałem tablic? Na tablicach jest dużo prościej.

Spróbuj z rekurencją - będziesz w dodatku mógł zrobić dowolną ilość pod-pod-menu.

Niestety nie da się, co sprawdzam id strony w bazie, to pokazuje mi kategorie rozwijane przy start, a chce aby strony były przy id=2. Muszę rozwijane dynamiczne zrobić inaczej, przypisując numer id każdemu elementowi, czyli na sztywno lub zostać przy jednopoziomowym menu, który działa.

Pobierasz całość menu podczas ładowania strony z bazy do tablicy a potem (sam stwierdziłes że na tablicach) jest już łatwo :slightly_smiling_face:

Tylko ja nie napisałem kodu, który pobiera dane do tablicy, to raz. A po drugie, napisałem inaczej menu, dając ograniczenie do 10 stron a kolejne pokazują się, gdy tylko pokaże się strzałka z nowymi stronami.

Mieszasz dwa zagadnienia.

Pierwsze, to sposób przechowywania struktury menu. Baza danych to dobry pomysł, bo pozwala na zapisanie relacji, stanowi centralne miejsce z którego mogą czerpać strona internetowa, aplikacja mobilna itd.

Drugi temat to sposób prezentacji tych danych na stronie internetowej. To czy będą wyświetlone jako pełna lista, ograniczona i rozwijana, czy może w formie dropdowna - to już dowolna kwestia.

Oba tematy stanowią niezależne warstwy systemu i nie powinny wpływać na siebie. Menu powinieneś ściągnąć w całości i uformować strukturę albo po stronie backendu (ułożyć ja w drzewko) albo po stronie frontendu i tam na podstawie listy wpisów zbudować hierarchię i wyświetlić

Nie sądzę, abym mieszał zagadnienia, po prostu, użyłem kod php z html. I tak na początku chciałem zrobić, co widać w kodzie, który dałem w pierwszym poście, ale jak zauważyłem, był to zły pomysł. Obecnie, wystarcza mi to, co teraz zrobiłem.