Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] struktura drzewa i rozwijanie konkretnych gałęzi
grzeee
post 12.03.2012, 16:06:08
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 5
Dołączył: 24.11.2006

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


Witam,
mam pewną strukturę kategori w bazie.
Mam sposób na wyciągnięcie całej struktury i przypisanie do nich dzieci:
  1. $dbHandle -> query("SELECT * FROM `".DB_PREFIKS."category` ORDER BY displayorder ");
  2. while($wpis = $dbHandle -> fetch_row()){
  3. $wpis['children'] = array();
  4. $flat_category_data[$wpis['id']] = $wpis;
  5. }
  6.  
  7. foreach($flat_category_data as $key => $wpis){
  8. if($wpis['parent']){
  9. $flat_category_data[$wpis['parent']]['children'][] =& $flat_category_data[$key];
  10. }else{
  11. $tree[] =& $flat_category_data[$key];
  12. }
  13. }


Jedna kategoria składa się z :
  1. (
  2. [id] => 644
  3. [generation] => 3 // poziom kategori
  4. [displayorder] => 0 //kolejnosc
  5. [parent] => 630 // id rodzica
  6. [nazwa] => Nazwa Kategorii
  7. [children] =>array() // tablica z przypisanymi kategoriami
  8. )


Jednak że kategori jest blisko 2000 chciałbym żeby nie budować całego menu bo troche duzo tego jest ;/
Jak najszybszym sposobem, łatwo wyciągnąć potrzebne kategorie czyli wszystkich rodziców, i ich "rodzeństwa" gdy mamy id bieżącej kategorii?
Może ktoś mnie na to naprowadzić ?


--------------------
Polecam Jastrzębia Góra, serwis o nadmorskiej miejscowości.
Go to the top of the page
+Quote Post
cudny
post 12.03.2012, 16:33:58
Post #2





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


Zrób sobie kolumnę parents i dopisuj tam po przecinku rodziców przy dodawaniu nowej kategorii.
Potem robisz sobie select po id kategorii bierzącej pobierając samą kategorię bierzącą i jej dzieci, a następnie pobierasz sobie: $parents = select * from db where id in(select parents where id=bierzace_id);
Dzięki temu masz wszytkich rodziców, bierzącą kategorię i jej dzieci.
W innym wypadku będziesz musiał robić to rekurencyjnie zapytaniem po zapytaniu co bardzo obciąży bazę


--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
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.06.2025 - 11:22