Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] wyswietlanie danych z bazy
Forum PHP.pl > Forum > Przedszkole
andixxx
witam... chcialbym sie dowiedziec, czy jest mozliwe aby wykorzystac baze mysql jako menu tzn chodzi mi o to, ze zalozmy mam w bazie tabele o nazwie "menu" w niej dwa pola "glowne menu" i "smieci". teraz w kazdym z tych pol mam po 3 rekordy kolejno nazwane "podmenu 1, 2 i 3"... moje pytanie jest takie czy da rade wyswietlic cala ta struktore w php tzn aby to wygladalo mniejwiecej tak jak ponizej a wszystkie podmenu podlinkowac na jakis adres?:

MENU GLOWNE
- podmenu 1
- podmenu 2
- podmenu 3
SMIECI
- podmenu 1
- podmenu 2
- podmenu 3

...chyba dobrze sie wyrazilem i zrozumiecie o co chodzi... chyba ze macie jakies inne pomysly i rady dotyczace tworzenia menu w panelu administratora mojej strony i wyswietlania stworzonego menu na stronie guitar.gif
mdco
Na przykład tak:
id | nazwa | parent_id

1 | MENU GLOWNE | 0
2 | podmenu 1 | 1
3 | podmenu 2 | 1
4 | podmenu 3 | 1
5 | SMIECI | 0
6 | podmenu 1 | 5
7 | podmenu 2 | 5
8 | podmenu 3 | 5
mario
ja proponuje inny uklad bazy, a w niej 2 tabele "MENU" i "PODMENU".

Tabela "MENU"

id|nazwa

Tabela "PODMENU"

id|menu|nazwa

I teraz masz proste, wyciągasz najpierw w pętli dane z tabeli "MENU" i sprawdzasz w tej pętli czy są podmenu w tabeli "PODMENU" po polu "menu" ktory jest identyczny jak "id" z tabeli "MENU". Jeżeli jest to masz podmenu :-)

Jest to proste, i dzieki takiemu rozwiazaniu mozesz w panelu w prosty sposob zarzadzac menu oraz podmenu, np. dodajac podmenu dajesz powyzej SELECT'a dzieki czemu klient moze z pola wyboru wybrac sobie menu do ktorego odnosi wstawiane podmeny. Zreszta.... jak zrobisz sobie to jest Twoja sprawa.

  1. <?php
  2. $query = "SELECT * FROM menu";
  3. $result = mysql_query($query,$baza);
  4.  
  5. while ($r= mysql_fetch_array($result))
  6.  {
  7. $menu_id = $r [id];
  8. $menu_nazwa = $r [nazwa];
  9.  
  10. echo "<a href='strona.php?menu=$menu_id'>$menu_nazwa</a><br>";
  11.  
  12. $query = "SELECT * FROM podmenu WHERE menu='$menu_id'";
  13. $result2 = mysql_query($query,$baza);
  14. $podmenu_istnieje = mysql_num_rows ($result2);
  15.  
  16. If (!empty($podmenu_istnieje))
  17.  {
  18. while ($r= mysql_fetch_array($result2))
  19.  {
  20. $podmenu_id = $r [id];
  21. $podmenu_nazwa = $r [nazwa];
  22.  
  23. echo "<a href='strona.php?podmenu=$podmenu_id'>$podmenu_nazwa</a><br>";
  24.  } 
  25.  }
  26.  }
  27. ?>
mike
Cytat(mario @ 16.06.2006, 09:49 ) *
ja proponuje inny uklad bazy, a w niej 2 tabele "MENU" i "PODMENU".

Tabela "MENU"

id|nazwa

Tabela "PODMENU"

id|menu|nazwa

(...)


Ale po co dwie tabele, przecież to jest wbrew zasadom projektowania baz danych.
Jak masz dział linki, to też robisz oddzielne tabele: LINKI_FAJNE, LINKI_ŚMIESZNE, LINKI_INNE ?
(to tylko przykład)

Najlepszym rozwiązaniem jest to, które podał ~mdco, czyli jedna tabela a w niej menu.
babejsza
Poza tym co napisał @mike_mech to powstaje jeszcze problem gdy będziesz chciał rozbudowywać menu o kolejne poziomy. Przecież nie będziesz w tym celu tworzył następnych tabel i następnych zapytań. smile.gif
andixxx
i co wtedy?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.