Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql i php] menu
-Gość_ares-
post
Post #1





Goście







mam taki kod


  1. <?php
  2. function display_menu($PAR1)
  3.  {
  4. // pobierz parametry glownego wezla
  5. $r = mysql_query(&#092;"SELECT * FROM 
  6. drzewko WHERE parent='0'&#092;");
  7.  
  8.  while($row = mysql_fetch_array($r)) // wszytkie glowne kategorie
  9.  {
  10.  $name =$row[&#092;"nazwa\"];
  11.  $parent =$row[&#092;"parent\"];
  12.  $id =$row[&#092;"id\"];
  13.  
  14. $ri = mysql_query(&#092;"SELECT * FROM 
  15. drzewko WHERE parent='$PAR1'&#092;");
  16.  
  17.  while($rowi = mysql_fetch_array($ri)) // podkategorie
  18.  {
  19.  $pname =$rowi[&#092;"nazwa\"];
  20.  
  21.  $w .= &#092;"$name <BR><b>$pname</b>\";
  22. }
  23. }
  24.  return $w;
  25.  } // end display_menu();
  26. ?>


końcowym wynikiem tego czegoś powinno byc spis kategorii w takim stylu

kategoria 1
kategoria 2
kategoria 3
kategoria 4
- pod kategoria 1.4
kategoria 5
- podkategoria 1.5

Z tym ze coś nie tak jak wejde np do działu gdzie jest podkategoria to on ja tyle razy pokazuje ile razy petla while zlicza rekor .... i jest zle ....


[CODE]

  1. CREATE TABLE `drzewko` (
  2. `id` int(8) NOT NULL AUTO_INCREMENT,
  3. `nazwa` varchar(32) DEFAULT NULL,
  4. `parent` int(8) NOT NULL DEFAULT '0',
  5. `right` int(8) NOT NULL DEFAULT '0',
  6. PRIMARY KEY (`id`),
  7. KEY `parent` (`parent`),
  8. KEY `right` (`right`)
  9. ) TYPE=MyISAM AUTO_INCREMENT=9 ;
wyzej napisalem rzut bazy danych

PS jak sie kliknie na kategorie to wtedy pojawiaja sie podkategorie tak na margiinesie ale to wiem jak zrobic jeden IF tylko mam klopot z prawidlowym wyswetleniem ...
Go to the top of the page
+Quote Post
SongoQ
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Cytat
Z tym ze coś nie tak jak wejde np do działu gdzie jest podkategoria to on ja tyle razy pokazuje ile razy petla while zlicza rekor .... i jest zle ....

Chcesz wycaignac 1 raz kategorie czy zliczyc ilosc kategori?

Bo do liczenia ilosci rekordow albo dajesz zapydanie COUNT albo sprawdzasz ilosc rekordow mysql_num_rows.


--------------------
Go to the top of the page
+Quote Post
-Gość_ares-
post
Post #3





Goście







1 raz wyciagnac kategorie i pod kategorie .. tak jak wyzej przedstawielm
Go to the top of the page
+Quote Post
Marcin_m
post
Post #4





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 1.06.2005

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


Proponuję ci zobaczyć mój skrypt struktury drzewiastej.

Drzewo

Najlepiej do wyświetlania struktur drzewiastych stosowac funkcje rekurencyjne, gdzie
jako główny argument przekazujesz ID rodzica, a potem kierujesz zapytanie o
jego potomków i tak zwrócony ID potomka znowu dajesz do funkcji. W ten sposób możesz dowolnie wyświetlać sobie drzewo, w skrócie wygląda to tak:

funkcja drzewo($IDRODZICA)
{
->zapytaj o osobników mających jako rodzica IDRODZICA
for($i=0;$i<ilosc_potomków;$i++)
{
->wyswietl informacje o potomku
->pobierz ID potomka do $IDPOTOMKA
drzewo($IDPOTOMKA;
}
}

W ten sposób można także kierować potomków do tablic i potem ich wyświetlać
Zauważ że nie ma potrzeby stosować żadnych przerwań, ponieważ jeżeli nie ma już potomków dla danego osobnika to petla for nie wykonuje sie, a zatem wracamy do pierwotnej fukncji rekurencyjnej.

No i jeżeli chcesz mieć rozwijaną listę to zastosuj skrypt java z mojego przykładu, lub też utwórz zmienną sesji w której będziesz zapisywał czy wyświetlać danego
potomka. Aczkolwiek zastosowanie java script wydaje mi się szybszym sposobem.
Go to the top of the page
+Quote Post

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: 19.08.2025 - 13:22