Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Tree Class [Optymalzacja]
Forum PHP.pl > Forum > PHP
Spirit86
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
SongoQ
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 *
Spirit86
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.
enceladus
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
Spirit86
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.