Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] drzewka
kłulik
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.01.2005
Skąd: Copa Cabana

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


Chcę zrobić katalog. Mam taką tabelę:

ID|Nazwa|Parent

Parent wskazuje na kategorię nadrzędną. 0 oznacza że kategoria jest kategorią główną.
Ładnie wyświetla mi kategorie główne, podkategorie i linki w kategoriach. Nie umiem zrobić, żeby wyświetlał ścieżkę w postaci:
Główna/Kategoria1/Kategoria2/Kategoria3 itd.

Do wyświetlania kategorii stosuje taki kod:

  1. <?php
  2.  
  3. $id = isset($_GET['id'])?$_GET['id']:0;
  4. $id = (int) $id;
  5. $sql = 'SELECT * FROM `atom_cat` WHERE `parent`='.$id;
  6. $rs = mysql_query($sql);
  7. while($row=mysql_fetch_assoc($rs)) {
  8. echo '
  9. <a href=\"kategoria_'.$row['id'].'.html\">'.$row['nazwa'].'</a>
  10. ';
  11. }
  12.  
  13. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
orson
post
Post #2





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

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


witam ...

musisz to zrobić rekurencyjnie ... tworzysz funkcjie która pobiera za każdym razem nazwę parenta do czasu kiedy parent wynosi 0 ... coś takiego:
  1. <?php
  2.  
  3. function getPath($cat, $array = null){
  4. if ($array != null){
  5.  $SQL = 'SELECT name, catID, parentID FROM cats WHERE parentID = '.$cat.' LIMIT 1';
  6. }else{
  7.  $SQL = 'SELECT name, catID, parentID FROM cats WHERE catID = '.$cat.' LIMIT 1';
  8. }
  9. //if = jeżeli sql nic nic nie zwraca dajesz return $array
  10.  
  11. //obrabiasz wynik (fetchrow/array/itp) i dodajesz do arraya:
  12. $array[] = <wynik zapytania>
  13. $array = getPath(<z wyniku id obecnej kategori>, $array);
  14. }
  15.  
  16. ?>

i jak funkcjia skończy to masz ładnego arraya z kolejnymi kategoriami ... całkowicie z głowy (nie chce mi się szukać na hd) ... to jest zarys ogólny ale taka jest koncepcja ...

pozdrawiam
Go to the top of the page
+Quote Post

Posty w temacie


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: 16.10.2025 - 20:58