![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 12 Dołączył: 16.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli mamy tabelę mysql trzymającą drzewo IP, przy pobieraniu danych można automatycznie ułożyć z kolejnością kategorii, czyli np.
1.1.1 1.2.1 1.2.2 1.3.1 1.4.1 1.4.2 i tak dalej i tak dalej Jeżeli zrobimy na takim pojedynczym IP explode, to mamy całą jakby strukturę. I tu mam problem, bo chciałbym zrobić funkcję wrzucającą to tablic o jakimś zagłębieniu. Ma ona jako argumenty mieć podane zmienną tablicy i tablicę zawierającą klucze kolejnych wymiarów, czyli:
Nie wiem jak to zaimplementować / nie wiem czy jest domyślna funkcja, która mogła by mi pomóc. -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Może zacznij tak: Jest mi to potrzebne do...
Tak będzie łatwiej, uwierz. -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 17.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
sprawdź czy nie będzie przydatna array_unshift
pozdrawiam kowalcook Ten post edytował kowalcook 20.09.2010, 15:15:33 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 12 Dołączył: 16.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Może zacznij tak: Jest mi to potrzebne do... Tak będzie łatwiej, uwierz. Jest mi to potrzebne do stworzenia tablicy w php, która będzie odzwierciedleniem drzewa. Bo w SQL to tak naprawdę nie jest żadne drzewo, tylko łańcuchy znaków, które mają posłużyć do zbudowania. Wydawało mi się, że to było jasne. Dam następny przykład, czyli jak to miałoby wyglądać
No i print_r($tree) ma dać ładną wieeelowymiarową tablicę o kluczach zgodnych z id kategorii O to właśnie mi chodzi. @EDIT No to może czy da się zrobić jakieś generowanie klucza tablicy na kształt
Albo powiedzcie po prostu jak zrobić tablicę z ltree.. @EDIT: Spróbuję pokazać, jakby to mogło wyglądać, ale nie może być z powodu małej elastyczności:
I to można by pisać w nieskończoność... Co prawda więcej niż 10 poziomów do tablicy raczej mi się nie przyda, ale zastanawiam się czy nie ma może podobnej funkcji w php @BUMP Ten post edytował Asmox 29.12.2010, 22:19:29 -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem ciebie. Jeśli wrzucisz coś do poziomu 1 (case: 1) to automatycznie wyczyścisz dalsze poziomy przecież....
Wykonaj sobie to. ![]() -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 12 Dołączył: 16.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
tak, ale to nieistotne, bo lista węzłów drzewa będzie ułożona od najkrótszych i w dodatku klucze będą jako id z tabeli w mysql a nie dołączane przypadkowo. Zależy mi tylko, żeby dało się drzewa ip np "1.5.3.4" itd przerobić na zagnieżdżoną tablicę w php
-------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Zastanawiam mnie jeśli to jest tylko ip to czy zagnieżdżenie nie będzie stałe? Tj. zawsze 4 klucze?
-------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 12 Dołączył: 16.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ops, napisałem to trochę niezrozumiale, mój błąd już się poprawiam
Moje drzewo jest tworzone na podstawie indeksów, więc się je podaje po kropkach tworząc coś na kształt IP Przykład: Kod id | node | label -------------------- 1 | null | Strony -------------------- 2 | null | Linki -------------------- 3 | 1 | Webmastering -------------------- 4 | 2 | Download -------------------- 5 | 1 | Kuchnia -------------------- 6 | 1.5 | Kuchnia Włoska -------------------- 7 | 1.3 | PHP -------------------- 8 |1.3.7 | Tablice Node przybiera taki węzeł, z którego można wyciągnąć id rodzica, poziom zagłębienia depth itd itd... ale chodzi mi o to, żeby rozbijając ten ip node użyć nowej tablicy do stworzenia całego drzewa, jako zagnieżdżoną tablicę w PHP
Ten post edytował Asmox 30.12.2010, 19:39:11 -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Dla przykładu jak masz kuchnie. Ona kwalifikuje się do Strony a do kuchni wchodzi jeszcze włoska. Tylko, że jeśli stworzysz tak tablicę jak ty sobie ją wyobrażasz to straszi informacje o "Strona" i "Kuchnia" bo je zastąpią array("Kuchnia Włoska");
Moim zdaniem warto byłoby to zrobić że jako klucz przechowujesz "label". No i trochę dziwnie trzymasz te dane. Zróbiłbym tak że jest kolumna parent i tam id rodzica. Wtedy rekurencyjnie jesteś w stanie łatwo taką tablicę stworzyć odwołując się do całej tabeli. Pobierasz wszystko z bazy.
i teraz operujesz na tych danych odpowiednio poprzez rekurencję. -------------------- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 12 Dołączył: 16.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Bo ja tak naprawdę chciałbym to wyświetlić na stronie tak żeby było widać zagnieżdżenia, znalazłem funkcję jak z wielowymiarowej tablicy zrobić superlistę <ul> (http://algorytmy.pl/?id=2290&pp=503) mogę wkleić kod funkcji, a z tworzeniem takiej zagnieżdżonej tablicy radziłem sobie też jakoś: (http://forum.php.pl/index.php?showtopic=156096&hl=)
Po prostu chciałbym znaleźć jakieś bardziej wydajne rozwiązanie, bo taka lista drzewa ma być tylko i wyłącznie do wyświetlenia -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Więc nie przerabiaj tego na tablice. Jeśli masz to pokolei pobrane to liczysz (explode i count) jakie jest zagnieżdżenie. Jeśli jest to 1 element z takiego zagnieżdżenia to robisz <ul> i jeśli spada o zagnieżdżenie niżej to robisz </ul></ul> a menu wyświetlasz w <li> Powinno coś z tego wyjść.
-------------------- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 12 Dołączył: 16.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem za bardzo...
coś takiego? -------------------- |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Nie
![]()
Spróbuj tak Ten post edytował bim2 31.12.2010, 16:18:24 -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 10:15 |