Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Tree Class [Optymalzacja]
Spirit86
post
Post #1





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


Witam, mam do Was prośbę o pomoc w optymalizacji klasy, którą napisałem do tworzenia drzewka.

  1. <?php
  2. Class Tree
  3. {
  4. var $Output = '';
  5.  
  6.  
  7. function Tree($cat=0, $what, $prefix = '&nbsp;&nbsp;', $selectedItem=0, $forbiden=false)
  8. {
  9. global $db;
  10.  
  11. $qu = $db->query('SELECT * FROM tabela WHERE costam='.$cat.' AND what=''.$what.''');
  12. while($row = $db->fetch_rows($qu))
  13. {
  14.  if($row['id']<>$forbiden) $this->Output .= '<option value="'.$row['id'].'" '.(($selectedItem==$row['id']) ? 'SELECTED' : '').'>'.$prefix.$row['title'].'</option>';
  15.  
  16.  $this->Tree($row['id'], $what, $prefix.'&nbsp; &nbsp; &nbsp;', $selectedItem, $forbiden);
  17.  
  18. }
  19. }
  20.  (...)
  21. }
  22. ?>


Problem polega na tym, że klasa zadaje za dużo pytań, jak dla mnie, przy tworzeniu drzewka. Wydaje mi się, że można raz zapytać bazę danych, a później niech się interpreter php męczy z segregacją. Ha, tylko jak winksmiley.jpg.
Pozdrawiam


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
SongoQ
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Cytat
Wydaje mi się, że można raz zapytać bazę danych, a później niech się interpreter php męczy z segregacją. Ha, tylko jak

Jesli bedziesz mial 1GB danych to co zamierzasz je 1 zapytaniem wyciagnac i trzymac w sesji?questionmark.gif To jest bezmyslne rozwiazanie. Nie unikniesz ciaglego mielenia bazy. Mozesz ewentualnie keszowac glowne drzewo.

2. Wyciagaj to co CI jest potrzebne nie ma potrzeby stosowania *


--------------------
Go to the top of the page
+Quote Post
Spirit86
post
Post #3





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


no i wyciągam to co jest tylko potrzebne, tylko wyciągam to dużą ilością pytań.

A można przecież zapytać raz:
podaj mi wszystkie rekordy, gdzie cat=10 i costam='costam';

Pobieram rekordy i tworzę z nich tablicę.

Problem polega na tym, aby poukładać tablicę wg. znaczników:
id i cat.
jeżeli cat = 0 - kategoria główna
cat >0 - id parenta.


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
enceladus
post
Post #4





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 19.11.2003
Skąd: Poznań

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


Temat stary jak struktury danych smile.gif - stosujesz złą implementację drzewa - właściwie to najgorszą z dostępnych sad.gif Na forum było o tym wiele razy. Ja osobiście jestem zwolennikiem tzw. "metody Depesza" http://www.depesz.com


--------------------
Enceladus
Warsztat: bez warsztatu
Aktua
Go to the top of the page
+Quote Post
Spirit86
post
Post #5





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


Cytat(enceladus @ 2005-10-18 15:50:08)
z dostępnych

Hehe, ja pisałem ją sam, a wiadomo, że pierwsza wersja nie jest najlepsza winksmiley.jpg,
Dlatego piszę, że trzeba ja zoptymalizować. Podpsunełem też pomysł z filtracją tablicy powstałej przy pobieraniu rekordów z bazy danych .
Pozdrawiam


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
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 Aktualny czas: 22.08.2025 - 07:54