Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Drzewko - rozwijane menu
NoiseMc
post
Post #1





Grupa: Zarejestrowani
Postów: 398
Pomógł: 10
Dołączył: 24.11.2004
Skąd: Łódź

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


Mam sobie taka tabelkę z kategoriami:

  1. CREATE TABLE produkty_kategorie (
  2. IDKategorii int(11) NOT NULL AUTO_INCREMENT,
  3. IDRodzica int(11) NOT NULL DEFAULT '0',
  4. KolejnoscWyswietlania int(11) NOT NULL DEFAULT '0',
  5. NazwaKategorii text NOT NULL,
  6. OpisKategorii text NOT NULL,
  7. PRIMARY KEY (IDKategorii),
  8. KEY IDRodzica (IDRodzica),
  9. KEY IDModulu (IDModulu),
  10. KEY KolejnoscWyswietlania (KolejnoscWyswietlania)
  11. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


Potrafię z tego wyciągnąć pełne drzewo kategorii z rozwiniętymi wszystkimi gałęziami:

  1. <?php
  2.  
  3. function makeTree ( $intIDRodzica = 0 )
  4. {
  5. global $dbBazaDanych, $arrTree, $iTree, $intLevel;
  6.  
  7. $rsKategorie = $dbBazaDanych->Execute 
  8. ( 
  9. 'SELECT 
  10. IDKategorii, 
  11. IDRodzica, 
  12. NazwaKategorii, 
  13. KolejnoscWyswietlania 
  14. FROM ' . KLIENT . 'produkty_kategorie 
  15. WHERE IDRodzica = ' . (int)$intIDRodzica . 
  16. ORDER BY KolejnoscWyswietlania ASC' 
  17. );
  18.  
  19. while ( ! $rsKategorie->EOF ) 
  20. {
  21. $arrTree[$iTree]['IDKategorii'] = $rsKategorie->fields['IDKategorii'];
  22. $arrTree[$iTree]['KolejnoscWyswietlania'] = $rsKategorie->fields['KolejnoscWyswietlania'];
  23. $arrTree[$iTree]['NazwaKategorii'] = $rsKategorie->fields['NazwaKategorii'];
  24. $arrTree[$iTree]['Poziom'] = $intLevel;
  25.  
  26. $iTree++;
  27.  
  28. $blnHasChild = (bool)$dbBazaDanych->GetOne ( 'SELECT COUNT(*) FROM ' . KLIENT . 'produkty_kategorie WHERE IDRodzica = ' . $rsKategorie->fields['IDKategorii'] );
  29.  
  30. if ( $blnHasChild ) 
  31. {
  32. makeTree ( $rsKategorie->fields['IDKategorii'], $intLevel++ );
  33. }
  34.  
  35. $rsKategorie->MoveNext ();
  36. }
  37.  
  38. $intLevel--;
  39. }
  40.  
  41. ?>


Teraz coś z czym nie mogę sobie poradzić, z tej tablicy muszę wyciągnąć sobie menu rozwijane czyli w pierwszej chwili menu wygląda tak:

Cytat
Kategoria 1
Kategoria 2
Kategoria 3
Kategoria 4


Klikam na Kategoria 2 i przekazuję GET IDKategorii = 2 (na przykład):

Cytat
Kategoria 1
Kategoria 2
-- Podkategoria 1
-- Podkategoria 2
-- Podkategoria 3
Kategoria 3
Kategoria 4


Klikam na Podkategoria 1 i przekazuję GET IDKategorii = 7 (na przykład):

Cytat
Kategoria 1
Kategoria 2
-- Podkategoria 1
-- -- PodPodkategoria 1
-- -- PodPodkategoria 2
-- Podkategoria 2
-- Podkategoria 3
Kategoria 3
Kategoria 4


itd.

Proszę pomóżcie napisać mi funkcję, która będzie w sposób opisany na początku wyciągać mi takie drzewo na podstawie przekazanego przez GET IDKategorii.

Niestety z drzewkami i z rekurencją radzę sobie słabo (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Dzięki i pozdrawiam

Ten post edytował NoiseMc 3.08.2005, 08:41:52
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 15:53