Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rysowanie dzewka
Forum PHP.pl > Forum > PHP
krzysiekX
Witam
Zabawę z php zacząłem msc temu, więc może się to pytanie wydawać śmiesznie proste ale ja nie mogę sobie z tym poradzić od dluższego czasu.
Proszę nie odsyłać do archiwum,google bo naprawde przeglądałem i nie moge znalźć odpowiedzi.
Chodzi mi o narysowanie drzewka. W bazie danych mam id_cat,nazwa,level
1 | ROWERY | 0
2 | SAMOCHODY | 0
3 | AUDI | 2
4 | TOYOTA | 2
5 | AUDI 80 | 2.4
6 | GORSKIE_R | 1
(w level jest ...id_pradziadka . id_dziadka . id_rodzica)

I teraz jak narysować menu kategorii w takiej postaci:

Samochody
- AUDI
-- AUDI 80
- TOYOTA
ROWERY

Tzn zeby rysowal tylko rozwiniete galezie i menu glowne

Dzieki serdeczne
Pozdrawiam
zYm3N
RObisz sobie listę tych na samej górze.

Do każdego z tych na samej górze, sprawdzasz, czy ma jakichs synów. Jeśli tak, to robisz sobie listę wszystkich synów..dodając do prefiksu np: "-". Dla każdego syna sprawdzasz, czy ma jakichś synów.. jeśli ma, to robisz ich listę.. dodając do prefiksu np.: "-" (czyil widoczna rekurencja)

Jeśli nie ma syna, to wypisujesz nazwę poprzedzoną prefiksem..

Przy skończeniu się listy synów wychodzisz poziom wyżej, usuwając ostatni element z prefiksu.. :-)

to w skróce :-)
bela
na wortalu jest art
krzysiekX
Dzięki, zaraz sproboje z tymi synami
... noo jest art ale niema jak narysować to drzewo sad.gif

_______________________________________________

Zrobiłem tak:
  1. <?php
  2.  
  3.  
  4. function synowie($id)
  5. {
  6.  
  7. $zapytaj = mysql_query(&#092;"SELECT * FROM `categories` 
  8.  WHERE level LIKE '%.\".$id.\"' 
  9.  OR level =&#092;".$id.\"\");
  10.  if ($zapytaj) {
  11.   
  12.  while($row=mysql_fetch_array($zapytaj)) {
  13.  $tablica = explode('.',$row['level']);
  14.  $ile = count($tablica);
  15.  
  16.  
  17.  echo str_repeat(' - ',$ile) . $row['cat_name']. '<br>';
  18.  synowie($row['category_id']);  
  19.   }
  20. }
  21. else 
  22. return false;
  23.  
  24. };
  25.  
  26.  
  27. $zapytaj = mysql_query(&#092;"SELECT * FROM `categories` 
  28.  WHERE level = 0&#092;");
  29. while($row=mysql_fetch_array($zapytaj)){
  30. echo $row['cat_name'] . '<br>' ;
  31. synowie($row['category_id']);
  32. };
  33.  
  34. ?>


Ale nie wydaje mi się żeby to było optymalne rozwiązanie
(ile kategori tyle zapytan do bazy) rolleyes.gif
ActivePlayer
id pradziadka i dziadka jest zbedne... wystarczy id_ojca... zawsze mozesz sobie potem odczytac ojca ojca i jest git tongue.gif
rzseattle
Cytat
Dzięki, zaraz sproboje z tymi synami
... noo jest art ale niema jak narysować to drzewo sad.gif


No a

  1. <?php
  2. $t =& new trees;
  3.  
  4. $arr = $t->getPart(47);
  5.  
  6. foreach($arr as $val){
  7.  
  8. print str_repeat(&#092;"____\", $val['depth']).' '.$val['id'].' '.$val['name'].\"<br />\";
  9.  
  10. }
  11. ?>



To nie przykład wykorzystania (narysowania)?
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.