Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Tworzenie mapy kategorii
Damiankossek
post
Post #1





Grupa: Zarejestrowani
Postów: 118
Pomógł: 8
Dołączył: 10.12.2009

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


Witam, mam następujący problem, ponieważ stworzyłem sobie w SQLu tabele z:

  1. id name path
  2. 1 Windows 0
  3. 2 Linux 0
  4. 3 Ms.Office 1
  5. 4 OpenOffice 2
  6. 5 Word 3
  7. 6 Writer 4
  8. 7 Excel 3
  9. 8 Access 3
  10. 9 Costam 5
  11. 10 CosTam2 6


0 w path oznacza że kategoria jest główną kategorią a dalej to po ID (IMG:style_emoticons/default/winksmiley.jpg)

No i właśnie nie wiem czy dobrze zaprojektowałem tabele, ale chciałbym stworzyć listę kategorii czyli np:

  1. Windows
  2. - Ms.Office
  3. - Word
  4. -Costam
  5. -Execl
  6. -Access
  7.  
  8. Linux
  9. - OpenOffice
  10. - Writer
  11. - CosTam2


No i ogólnie na napisać na sztywno wyświetlanie to już nie taki problem, ale gdy nie wiem ile będzie podkategorii to nie wiem jak napisać to bardziej elastycznie ? Żeby sprawdziło mi czy ta podkategoria ma dalej podkategorie i jak tak to dołączyło je do tablicy.

Ma ktoś jakiś pomysł ? Czy trzeba na nowo innym sposobem zaprojektować tabelke w bazie ?

Pozdrawiam

Ten post edytował Damiankossek 10.12.2010, 07:40:14
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Damiankossek
post
Post #2





Grupa: Zarejestrowani
Postów: 118
Pomógł: 8
Dołączył: 10.12.2009

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


No ok ... Dzięki ale mam np. http://blog.mwojcik.pl/2008/02/17/drzewa-k...-php-metoda-ip/ i zaciąłem się na jednym czyli na:

  1. [0] => ([1] =>Unix, [2] => Windows)
  2. [1] => ([3] =>Linux, [4] =>BSD)
  3. [2] => ([5] =>Windows XP, [6] =>Windows 98)
  4. [3] => ([7] =>Ubuntu, [8] => Slackware)


W jaki sposób zrobić taką tablice ? Aby każda tablica zawierała dzieci z takim samym rodzicem ? Może jest już tak póżno że mój mózg nie myśli (IMG:style_emoticons/default/winksmiley.jpg) ... Ale nie mogę wpaść na żaden pomysł, teoretycznie zrobiłbym to tak:

1. Pobrał z bazy rekordy o parent = 0 , odpowiednio przerobił co dałoby mi: 0 => ([1] => Unix, [2] => Windows)
2. Rozbił tablicę wyżej i znowu wykonał zapytanie do bazy o rekordy z parent = $id ($id wziełoby się z rozbitej tablicy z Unixem i Windowsem)
3. No i miałbym już drugą tablice ale teraz jak napisać tą funkcje dla reszty kategorii tak żebym zachował taką strukturę tabeli jaką bym chciał, bo to co niżej napisałem to raczej zacznie mi później robić tablicę w tablicy .. ?

  1. public function buildTree($id = 0)
  2. {
  3. $query = DB::SELECT('*') -> FROM('categories') -> WHERE('parentid','=',$id) -> execute() -> as_array();
  4.  
  5. $query = (array) $query;
  6.  
  7. if(count($query) == 0) return FALSE;
  8.  
  9. for($i = 0; $i < count($query); $i++)
  10. {
  11. $result[$query[$i]['id']] = $query[$i]['subject'];
  12. }
  13.  
  14. $array[] = $result;
  15.  
  16. $values = array_values($result);
  17.  
  18. for($i = 0; $i < count($values); $i++)
  19. {
  20. if(self::buildTree($values[$i]) != FALSE)
  21. {
  22. $array[] = self::buildTree($values[$i]);
  23. }
  24. }
  25.  
  26. return $array;
  27. }


Sorry jeżeli tutaj napisałem głupoty i problem jest banalny (IMG:style_emoticons/default/winksmiley.jpg) Ale ja już śpię ... Może wy mnie jutro jakoś nakierujecie (IMG:style_emoticons/default/smile.gif) Bo prawie wszystko mi działa tylko nie potrafie poprawnie drzewka zbudować ... (IMG:style_emoticons/default/winksmiley.jpg)

Dobranoc (IMG:style_emoticons/default/tongue.gif)

Ten post edytował Damiankossek 11.12.2010, 03:25:25
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: 4.10.2025 - 00:59