Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Menu wielopoziomowe w tablicach wielowymiarowych
piotr485
post
Post #1





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

Ostrzeżenie: (0%)
-----


Witam.

Wymyśliłem sobie, że zaciągnę dane z bazy i zapiszę do tablicy o takiej strukturze:

  1. $tab_menu_top[1][0][145] = 'O Firmie';
  2. $tab_menu_top[2][145][542] = 'podkategoria firmy1';
  3. $tab_menu_top[2][145][415] = 'podkategoria firmy2';
  4. $tab_menu_top[3][415][987] = 'podkategoria podkategorii firmy2';
  5. $tab_menu_top[2][145][478] = 'podkategoria firmy3';
  6.  
  7. $tab_menu_top[1][0][45] = 'Oferta';
  8. $tab_menu_top[1][0][451] = 'Kontakt';


Czyli [poziom][id rodzica][unikalne id]

Wyświetlam menu w taki oto sposób:

  1. foreach($tab_menu_top[1][0] AS $key => $val) {
  2.  
  3. echo '<br><b>'.$key.' - '.$val.'</b><br>'; //!WYŚMIETLAM
  4.  
  5. if($levels >= 2) {
  6. for($i=2;$i<=$levels;$i++) {
  7.  
  8. $tab_next_level_2 = $tab_menu_top[$i][$key];
  9.  
  10. if(!empty($tab_next_level_2)) {
  11. foreach($tab_next_level_2 AS $key2 => $val2) {
  12.  
  13. echo $key2.' - '.$val2.'<br>'; //!WYŚMIETLAM
  14.  
  15.  
  16.  
  17. $tab_next_level_3 = $tab_menu_top[3][$key2];
  18. if(!empty($tab_next_level_3)) {
  19.  
  20. $tab_next_level_3 = $tab_menu_top[3][$key2];
  21. foreach($tab_next_level_3 AS $key3 => $val3) {
  22.  
  23. echo $key3.' - '.$val3.'<br>'; //!WYŚMIETLAM
  24.  
  25. }
  26.  
  27. }
  28.  
  29.  
  30. }
  31. }
  32.  
  33. }
  34. }
  35. }


Wynik powyższego kodu:
  1. 145 - O Firmie
  2. 542 - podkategoria firmy1
  3. 415 - podkategoria firmy2
  4. 987 - podkategoria podkategorii firmy2
  5. 478 - podkategoria firmy3
  6.  
  7. 45 - Oferta
  8.  
  9. 451 - Kontakt


Problem w tym, że chciałbym to zrobić jakoś bardziej uniwersalnie, żeby nie musiał każdego poziomu dodawać z palca ponieważ może być nawet 20 poziomów,
czy ktoś mnie naprowadzi co robię źle ? może struktura tablicy jest zła ?





Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 15:48