Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] drzewiaste menu
Maciekbjw
post 8.02.2009, 11:17:22
Post #1





Grupa: Zarejestrowani
Postów: 217
Pomógł: 23
Dołączył: 2.12.2007
Skąd: Warszawa

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


Witam,

mam taką tabele w bazie:
Kod
  
   pages
   -id_page
   -id_parent
   -title


Czyli prosta struktura drzewiasta.

Teraz wchodzę przykładowo w podstronę od id_page = 3, której id_parent wynosi 2, natomiast id_parent podstrony 2 wynosi 1, mamy więc:
Kod
   podstrona nr 1 >> podstrona nr 2 >> podstrona nr 3


Chcę zrobić taką właśnie nawigację na stronie.

Napisałem coś takiego:
  1. <?php
  2. public function getParent($i_IdPage)  
  3.      {  
  4.      
  5.         $subpages = array();  
  6.         $sql="SELECT * FROM pages WHERE id_page = $i_IdPage";  
  7.         $result = $this->db->prepare($sql);  
  8.         $result->execute();  
  9.         $row = $result->fetch();  
  10.          
  11.         if($row['id_parent'] > 0)  
  12.         {  
  13.             $subpages = array_merge($subpages,$this->getParent($row['id_parent']));  
  14.             $subpages[] = $row;  
  15.         }  
  16.         else  
  17.         {  
  18.             $subpages[] = $row;  
  19.         }  
  20.      
  21.         return $subpages;  
  22.     }
  23. ?>


Działa, tylko chciałbym zrobić tak, by pobierało mi tylko strony nadrzędne, bez tej obecnej, przykład:

  1. <?php
  2. $a = New PageModel;
  3. echo $a->getParent(3);
  4.  
  5. //dostaje cos takiego
  6. // podstrona nr 1 >> podstrona nr 2 >> podstrona nr 3 (ta ktorej ID wywolalem)
  7.  
  8. ?>


Pytanie: jak zrobić, by skrypt nie wyświetlał tej "podstrona nr3" (ta, która jest wywoływana)

Będę wdzięczny za sugestie i porady smile.gif

Pozdrawiam


--------------------
Masz swoje mieszkanie i chcesz je wynająć? Sprawdź ofertę Zarzadządzanie Najmem

WRONA.IT - pozycjonowanie stron
www.ecyklopedia.pl
Go to the top of the page
+Quote Post
patryczakowy
post 8.02.2009, 11:28:49
Post #2





Grupa: Zarejestrowani
Postów: 420
Pomógł: 44
Dołączył: 22.10.2008

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


A spóbuj tak
  1. <?php
  2. if($row['id_parent'] > 0 && $row['id_page']!=$i_IdPage )
  3. ?>

sprawdzić czy czasem $i_IdPage nie jest tym które wywołałem


--------------------
Sztuką jest widzieć to czego nie widać.
Go to the top of the page
+Quote Post
adasiu
post 8.02.2009, 11:31:08
Post #3





Grupa: Zarejestrowani
Postów: 65
Pomógł: 7
Dołączył: 18.01.2007
Skąd: Tychy

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


a id bieżącej kategorii jest pobierany getem??

Ten post edytował adasiu 8.02.2009, 11:51:54
Go to the top of the page
+Quote Post
Maciekbjw
post 8.02.2009, 11:49:14
Post #4





Grupa: Zarejestrowani
Postów: 217
Pomógł: 23
Dołączył: 2.12.2007
Skąd: Warszawa

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


tak


--------------------
Masz swoje mieszkanie i chcesz je wynająć? Sprawdź ofertę Zarzadządzanie Najmem

WRONA.IT - pozycjonowanie stron
www.ecyklopedia.pl
Go to the top of the page
+Quote Post
adasiu
post 8.02.2009, 11:52:11
Post #5





Grupa: Zarejestrowani
Postów: 65
Pomógł: 7
Dołączył: 18.01.2007
Skąd: Tychy

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


to proponuję dodać ifa
  1. <?php
  2. if($row['id_parent'] > 0)  {  
  3.  $subpages = array_merge($subpages,$this->getParent($row['id_parent']));  
  4. }
  5. if(intval($_GET['id']) != $i_IdPage) {  
  6.   $subpages[] = $row;  
  7. }
  8. ?>


Ten post edytował adasiu 8.02.2009, 11:52:41
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 Wersja Lo-Fi Aktualny czas: 24.04.2024 - 16:25