![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 319 Pomógł: 4 Dołączył: 7.02.2009 Skąd: pless Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
stworzyłem pewną funkcję która pobiera dane z bazy i na ich podstawie buduje menu, jak zrobić żeby zwracała mi kod gdy użyję jej np. tak:
funkcja:
Tak mi zwraca tylko 1 pozycję... Ten post edytował patryk9200 27.08.2009, 19:33:56 |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Powiem tylko 2 słowa: nadpisywanie zmiennych
Wywalasz do bazy wiele zapytań, ale skrypt szybko działa bo w każdej pętli do zmiennej $result i $rek wpisujesz wyniki kolejnych podzapytań oraz przebiegów pętli, co sprawia, że dochodzi do najgłębszego podzapytania, wykonuje je i we wszystkich nadrzędnych do niego WHILE następuje wyjście z pętli. Wystarczy, że zmienne $result i $rek ponazywasz jak tam chcesz, byle na różnych poziomach zagłębień były inne i wszystko zadziała jak trzeba. Ten post edytował thek 27.08.2009, 00:39:26 |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Oraz to co powiedział, kolega wyżej. Ten post edytował wookieb 27.08.2009, 07:49:03 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 675 Pomógł: 286 Dołączył: 15.06.2009 Skąd: Wieliczka Ostrzeżenie: (0%) ![]() ![]() |
eee
co to jest?
nie można tak? ? edit: nadpisywania nie komentuje, nie będę cię dołował, masz to @up (IMG:style_emoticons/default/winksmiley.jpg) Ten post edytował Pawel_W 27.08.2009, 08:23:24 |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Czyszczenie $result nie jest wymagane (IMG:style_emoticons/default/smile.gif) To zmienna widoczna tylko w zasięgu funkcji, więc przy każdym nowym jej wywołaniu jest tworzona na nowo, a więc automatycznie się "resetuje".
Ja się tylko zastanawiam jaki jest sens Tworzenia tylu list... Nie lepiej było zrobić otwarcie listy PRZED pętlą a jej zamknięcie PO? W tej chwili bowiem, nawet gdy nie ma się nic więcej niż menu główne, to tworzy coś takiego: Ten post edytował thek 27.08.2009, 08:25:00 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 568 Pomógł: 192 Dołączył: 7.03.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zainteresuj się opcją http://nospor.pl/grupowanie-wynikow-n35.html ~nospora, zamiast tworzyć wiele zapytań.
|
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Przy okazji... Jeśli miałbym się bawić w budowanie wielokrotnie zagnieżdżonych menu to raczej bym tabelę w bazie zmienił. Jedna tabela z polami: id_węzła, nazwa, root (domyślnie 0) i inne jakie Ci potrzebne. Dlaczego?
Bo wszystko co ma root = 0 jest elementem głównego menu, a to co ma tam liczbę jest submenu podpiętym do pola o id równym id_węzła. Można więc zrobić nie wiem jak głębokiee zagnieżdżenia. Co prawda odbywa się to kosztem pisania kodu nieco bardziej skomplikowanego (rekurencja), ale kto powiedział, że życie jest łatwe? (IMG:style_emoticons/default/tongue.gif) Ten post edytował thek 27.08.2009, 09:17:45 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 319 Pomógł: 4 Dołączył: 7.02.2009 Skąd: pless Ostrzeżenie: (0%) ![]() ![]() |
Przy okazji... Jeśli miałbym się bawić w budowanie wielokrotnie zagnieżdżonych menu to raczej bym tabelę w bazie zmienił. Jedna tabela z polami: id_węzła, nazwa, root (domyślnie 0) i inne jakie Ci potrzebne. Dlaczego? Bo wszystko co ma root = 0 jest elementem głównego menu, a to co ma tam liczbę jest submenu podpiętym do pola o id równym id_węzła. Można więc zrobić nie wiem jak głębokiee zagnieżdżenia. Co prawda odbywa się to kosztem pisania kodu nieco bardziej skomplikowanego (rekurencja), ale kto powiedział, że życie jest łatwe? (IMG:style_emoticons/default/tongue.gif) jeśli chodzi o tabelę root, to taką samą funkcję spełnia submenu, domyślnie ma wartość 0, a menu jest tak skonstruowane, że moge zrobić maksymalnie 3 zagnieżdżenia dlatego submenu może mieć tylko wartości 1,2 lub 3. tabela pid to id rodzica submenu. poprawiłem trochę funkcje bo jak ktoś wcześniej zwrócił uwagę zawierała błąd, próbowałem zrobić tak, że każdy stopień miał swoje zmienne z których na koniec wartości zwracała funkcja, ale mi to nie działało. Teraz mam coś takiego:
ale nie wiem dlaczego ale żadne pętle sie nie wykonują, strukturę bazy mam taką: id pid page link name submenu parent position 1 1 1 # Treść 0 0 1 2 1 1 # Artykuły 1 1 1 3 2 1 # Najnowsze 2 1 1 4 1 1 newsy.php News 0 0 1 |
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
Proszę poprawić tytuł na bardziej sensowny.
|
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
bo return konczy działanie funkcji...
|
|
|
![]()
Post
#11
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Jak byk napisałem... zmień nie tylko $result, ale i $rek... Co pętlę bowiem wiersze masz wpisywane do $rek... Je też musisz odróżnić od siebie bo one także się nadpisują.
Ja w przykładzie nie mam tabeli root. To tylko jedna kolumna na podstawie jakiej ustalam jaki węzeł z jakim węzłem się łączy. Nie potrzebuję do tego 3 kolumn (IMG:style_emoticons/default/smile.gif) 1 główna 0 2 Forum 0 3 Galeria 0 4 Galeria Ani 3 5 Galeria Basi 3 Jak widzisz taki układ oznacza dla mnie tyle, że węzły 4 i 5 są dziećmi węzłe 3 i mam z nich dla węzła 3 zrobić submenu. W ten sposób mogę zagnieżdżać na dowolną głębokość submenu, tworząc z rekordów drzewo. Czyli mam o wiele mniejszym kosztem objętości bazy to co Ty o ile dobrze widzę. Return jak wspomniano kończy działanie funkcji więc nic nie zwrócisz w zasadzie poza tagiem otwierającym listę (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 319 Pomógł: 4 Dołączył: 7.02.2009 Skąd: pless Ostrzeżenie: (0%) ![]() ![]() |
napisałem funkcję od nowa i teraz zwraca mi tylko "1" i nic więcej co jest źle?
czy dobrze zrobiłem z tymi zmiennymi? |
|
|
![]()
Post
#13
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
No a CO ZWRACASZ?
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 319 Pomógł: 4 Dołączył: 7.02.2009 Skąd: pless Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#15
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
widać ze nie dociera do ciebie co pisali koledzy wyżej więc powstawiaj sobie echo w każdą pętlę, która wyświetli ci aktualna zawartość menu, aż dotrzesz do rozwiązania.
|
|
|
![]()
Post
#16
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Błąd 1: czemu nadal i namiętnie nadpisujesz zmienną $result?
Błąd 2: czemu w bezsensowny sposób tworzysz menu PO wykonaniu wszystkich pętli? W pierwszym swoim kodzie z łączeniem na bieżąco kodu w zmiennej $return było robione to tak jak chciałeś. Na dogłębne szukanie błędów nie mam teraz głowy, bo za śpiący jestem (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 13:40 |