Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Generowanie menu z bazy danych
Kas
post 12.07.2010, 14:14:49
Post #1





Grupa: Zarejestrowani
Postów: 425
Pomógł: 0
Dołączył: 28.05.2005
Skąd: Warszawa

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


Szukam optymalnego algorytmu generowanie menu na podstawie bazy danych. Każda pozycja menu ma swojego rodzica (0 to root). Jak zrobić to optymalnie? Ważna jest dla mnie mała złożoność obliczeniowa i pamięciowa dlatego rekurencja jest niemile widziana.

Edycja: napisałem taki kod:

  1. <?php
  2. $link = mysql_connect('localhost', 'root', 'baza1baza');
  3. mysql_select_db('niebo', $link);
  4. mysql_set_charset('utf8',$link);
  5.  
  6. function menu($parent)
  7. {
  8. $query = mysql_query('SELECT * FROM `pages` WHERE `parent` = '.(int)$parent.' ORDER BY `sort` ASC');
  9. if(mysql_num_rows($query))
  10. {
  11. echo '<ul>'."\n";
  12. while($dane = mysql_fetch_array($query, 1))
  13. {
  14. echo '<li>'."\n";
  15. echo $dane['title']."\n";
  16. lev($dane['id']);
  17. echo '</li>'."\n";
  18. }
  19. echo '</ul>'."\n";
  20. }
  21. }
  22.  
  23. menu(0);
  24.  
  25. ?>


Jednak coś nie działa. Co może być źle?

Ten post edytował Kas 12.07.2010, 16:21:28


--------------------
nospor, jestem z Wami.
Alpha IT
Go to the top of the page
+Quote Post
gothye
post 12.07.2010, 14:16:38
Post #2





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


może na początku pokażesz co do tej pory zrobiłeś w tym kierunku np strukturę bazy danych ?


--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
Kas
post 12.07.2010, 14:24:06
Post #3





Grupa: Zarejestrowani
Postów: 425
Pomógł: 0
Dołączył: 28.05.2005
Skąd: Warszawa

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


Oczywiście, już pokazuję. smile.gif

  1. <?php
  2. $link = mysql_connect('localhost', 'root', 'baza1baza');
  3. mysql_select_db('niebo', $link);
  4. mysql_set_charset('utf8',$link);
  5. $result=mysql_query('SELECT * FROM pages');
  6. while ($row = mysql_fetch_array($result))
  7. {
  8. echo('<li>'.$row[1].'</li>');
  9. }
  10. ?>

  1. id | title | parent | description
  2. 1 | Wiola | 0 | -
  3. 2 | Ola | 0 | -
  4. 3 | Jola | 0 | Duży biust
  5. 4 | Mariola | 0 | -
  6. 5 | Basia | 1 | -
  7. 6 | Kasia | 1 | Ładna
  8. 7 | Ania | 2 | Niska
  9. 8 | Frania | 2 | Wysoka


Oczywiście, dane przykładowe. winksmiley.jpg

Obecnie skrypt pobiera wszystkie rekordy i drukuje na ekran, ale w posortowane po id.

Edycja: Dodam jak chcę żeby to wyglądało:

Jola
Ola
Ania
Frania

Mariola
Wiola

Basia
Kasia


Ten post edytował Kas 12.07.2010, 14:33:14


--------------------
nospor, jestem z Wami.
Alpha IT
Go to the top of the page
+Quote Post
flashdev
post 12.07.2010, 14:58:34
Post #4





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Cytat(Kas @ 12.07.2010, 15:14:49 ) *
Szukam optymalnego algorytmu generowanie menu na podstawie bazy danych. Każda pozycja menu ma swojego rodzica (0 to root). Jak zrobić to optymalnie? Ważna jest dla mnie mała złożoność obliczeniowa i pamięciowa dlatego rekurencja jest niemile widziana.


Jeśli menu będzie nieczęsto odświerzane to może warto je cachować np przy pomocy var_export + fwrite, a ładować przy użyciu include.


--------------------
Go to the top of the page
+Quote Post
Kas
post 12.07.2010, 15:37:00
Post #5





Grupa: Zarejestrowani
Postów: 425
Pomógł: 0
Dołączył: 28.05.2005
Skąd: Warszawa

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


Dokładnie tak będzie zrobione. Generator ma generować statyczną stronę XHTML, która będzie dołączana poprzez include().


--------------------
nospor, jestem z Wami.
Alpha IT
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: 14.08.2025 - 14:05