Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Znajdowanie drogi grup forum.
nekomata
post 21.04.2011, 17:33:38
Post #1





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

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


Witam , pisze sobie właśnie cms'a i mam taki problemik a mianowicie celem jest nagłowek strony z nazwami grup ( tak jak tutaj jest w nagłówku forum Forum PHP.pl > Forum > PHP ) napisałem skrypt który działa bezproblemowo .. ale zastanawiam się czy nie da się tego uprościć ponieważ za każdym odświeżeniem strony dochodziłaby liczba zapytań... opiszę teraz działanie skryptu :
tabela z grupami wygląda mniej więcej tak (wywalilem z tabeli wszystkie zbędne kolumny które nie mają związku z tematem..):
Kod

id |   name   | under_group
---+-----------+-------------------
1 |  Rules    | 0
---+-----------+-------------------
2 | Rules 2  | 1
---+-----------+-------------------
3 | Rules 3   | 2

a kod php wygląda tak :
  1. function find_path_upwards($id,$dbc,$base){
  2. $clear = array();
  3. $finder = $dbc->prepare('SELECT name,under_group FROM forum_groups WHERE id = ?');
  4. $finder-> execute(array($id));
  5. $finderx = $finder->fetch(PDO::FETCH_ASSOC);
  6. $clear[] = $finderx['name'];
  7. if($finderx['under_group']!==0){
  8. $under = $finderx['under_group'];
  9. $flag = false;
  10. while(!$flag){
  11. $finder -> execute(array($under));
  12. $finderz = $finder->fetch(PDO::FETCH_ASSOC);
  13. $clear[] = $finderz['name'];
  14. $under = $finderz['under_group'];
  15. if($finderz['under_group']==0){
  16. $flag = true;
  17. }
  18. }
  19. }
  20. $clear = array_reverse($clear);
  21. foreach($clear as $link){
  22. echo ' > <a href="'.$base.'forum/'.$link.'/">'.$link.'</a>';
  23. }
  24. return ob_get_clean();
  25. }
$dbc to jest link do klasy PDO jak można się domyśleć ... cały skrypt działa bezproblemowo niema błędów itd .. tylko zastanawiam się czy nie można uprościć całego działania.. jakieś pomysły?Z góry dzięki.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Bags_Bunny
post 21.04.2011, 18:36:40
Post #2





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


Może to Cię zainteresuje: http://forum.php.pl/index.php?showtopic=17...=0&p=852732


--------------------
rm -rf /*
Go to the top of the page
+Quote Post
nekomata
post 21.04.2011, 19:09:41
Post #3





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

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


Teraz mnie głowa boli od tego logicznego myślenia... całe te drzewa itd...chciałem uprościć a mam utrudnienie... nie da się prościej biggrin.gif?
Go to the top of the page
+Quote Post
Bags_Bunny
post 21.04.2011, 21:25:53
Post #4





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


Możesz trzymać pełną ścieżkę dla każdego elementu, ale optymalnością to nie grzeszy. Tak, siak, czy owak, przy obecnym układzie musisz trzymać coś ekstra, jeśli chcesz wykonać to jednym zapytaniem bez pobierania całej tabeli.


--------------------
rm -rf /*
Go to the top of the page
+Quote Post
nekomata
post 22.04.2011, 04:23:35
Post #5





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

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


No też doszedłem do podobnego wniosku.... i teraz zastanawiam się co wybrać : te moją smieszną funkcje która działa za pomocą liczb.. czy trzymanie pełnego adresu.. chyba jednak wartość liczbowa mniej obciąży bazę nawet przy kilku zapytaniach niż pobierać całą ścieżkę
Go to the top of the page
+Quote Post
Bags_Bunny
post 22.04.2011, 10:42:14
Post #6





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


Jaka przewidujesz ilość kategorii? Bo jeśli to jest coś w stylu 50, to możesz pobierać całość i tyle. Zresztą przy takiej ilości, kilka zapytań nie zrobiłoby na bazie żadnego wrażenia.
Nie mówię, że to ma sens, ale bazy nie zaboli wink.gif.

Inna sprawa, że nested set to fajna sprawa i warto się tego nauczyć, na pewno przyda się w innych sytuacjach. Ma też inne zalety. Zauważ, że ma "wbudowane" sortowanie, dzięki czemu nie musisz już nic dodatkowego implementować.


--------------------
rm -rf /*
Go to the top of the page
+Quote Post
nekomata
post 23.04.2011, 22:08:52
Post #7





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

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


Ja myślę raczej o ilości pod kategorii < 3 może maxymalnie 5 nie więcej , ten nested sam w sobie naprawdę fajnie wygląda ale wolę nie wyciągać machiny wojennej na psa.. albo inne małe zwierzątko biggrin.gif.
Go to the top of the page
+Quote Post
Bags_Bunny
post 23.04.2011, 23:08:22
Post #8





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


Miałem na myśli ilość wszystkich kategorii w bazie.


--------------------
rm -rf /*
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: 29.06.2025 - 15:16