![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 13.07.2017 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam dość spory problem, a dokładniej dostałem tak wyglądające drzewo kategorii: CODE ... Dom i Ogród/Narzędzia/Klucze Dom i Ogród/Narzędzia/Lutownice Dom i Ogród/Narzędzia/Piły i pilarki Dom i Ogród/Narzędzia/Pozostałe Dom i Ogród/Narzędzia/Przyrządy miernicze/Miary i taśmy Dom i Ogród/Narzędzia/Przyrządy miernicze/Pozostałe Dom i Ogród/Ogród/Narzędzia ogrodnicze/Kosy i podkaszarki Dom i Ogród/Ogród/Narzędzia ogrodnicze/Noże ogrodnicze ... Teraz zależy mi aby zbudować z tej struktury drzewo w pliku .csv: CODE "nazwa";"id";"rodzic" "Kategoria Główna 1";"101";"100" "Kategoria Główna 2";"102";"100" "Podkategoria 1";"103";"101" "Podkategoria 2";"104";"102" "Podkategoria 3";"105";"102" "Podkategoria 4";"106";"102" "Podkategoria 5";"107";"102" "Podkategoria 6";"108";"107" ... Kiedyś przyznam się robiłem coś takiego, ale to było X lat temu i nie potrafię tego przeskoczyć, po prostu nie wiem czy to czasowe czy trwałe zaćmienie umysłu ![]() W każdym razie jestem otwarty na wskazówki, bo raczej ręczna obróbka kilku tysięcy rekordów to nieciekawa sprawa. --- Z góry dziękuję za odpowiedź oraz cenne wytyczne ![]() Ten post edytował 010100000100100001010000 13.07.2017, 17:48:46 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Wskazówka:
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 13.07.2017 Ostrzeżenie: (0%) ![]() ![]() |
Ta cześć jest mniej więcej mi znana, jednak problemem jest to że nie dostaję kategorii w piramidzie, tylko jak widać dostaję ścieżkę do głównej domyślnej końcówki - czyli muszę tutaj dla pierwszych elementów głównych nadać ID i muszę też pamiętać że pod tym rekordem jest też początek zawierający ponownie to samo... - w zasadzie nie wiem czy dobrze przekazałem moją myśl
![]() Ten post edytował 010100000100100001010000 13.07.2017, 18:08:17 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
1. Rozbijasz ścieżkę (np. według sposobu podanego wyżej).
2a) Jeśli jest to kategoria główna i nie ma takiej w bazie, to wstawiasz. 2b) Jeśli jest to podrzędna, to sprawdzasz po całej ścieżce czy istnieje taka podkategoria w bazie. Przy braku wstawiasz (z id ostatniego rodzica sprawdzanej ścieżki). Ten post edytował trueblue 13.07.2017, 18:24:45 -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 13.07.2017 Ostrzeżenie: (0%) ![]() ![]() |
1. Rozbijasz ścieżkę (np. według sposobu podanego wyżej). 2a) Jeśli jest to kategoria główna i nie ma takiej w bazie, to wstawiasz. 2b) Jeśli jest to podrzędna, to sprawdzasz po całej ścieżce czy istnieje taka podkategoria w bazie. Przy braku wstawiasz (z id ostatniego rodzica sprawdzanej ścieżki). Tak dokładnie wiem i chyba tak zrobię opierając się o bazę danych, bo chciałem to załatwić na pliku .csv jednak tutaj mi to wygląda dość ciężką kwestią, a tak kiedyś to wykonałem na bazie i potem wyeksportowałem sobie gotowy plik, jednak fajnie byłoby mieć gotowe takie rozwiązanie bez opierania się o dodatkowe technologie. Ten post edytował 010100000100100001010000 13.07.2017, 18:28:35 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Czyli nie chcesz w ogóle wstawiać tego do bazy nawet po obróbce?
Jeśli tak, to przetwarzane dane przechowuj w tabeli PHP (do niej wrzucaj i ją przeszukuj), a na koniec wygeneruj z niej plik. -------------------- |
|
|
![]() ![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 13.07.2017 Ostrzeżenie: (0%) ![]() ![]() |
I tutaj pojawia się problem z tabelami, czy możesz podpowiedzieć coś więcej? jak to ugryźć, trochę się gubię akurat w tej kwestii
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Wstawianie elementu: $kategorie[] = array('nazwa' => 'Kategoria Główna 1', 'id' => 100, 'rodzic' => 101);
http://php.net/manual/en/language.types.array.php http://php.net/manual/en/ref.array.php Czego nie wiesz? -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 13.07.2017 Ostrzeżenie: (0%) ![]() ![]() |
Mam coś takiego:
i problem staje mi już tutaj, jak zlikwidować powtarzające się kategorie i wiązać z nimi podkategorie |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
To co zrobiłeś, można nazwać parsowaniem pliku. Nie traktuje tego co masz jako dane wynikowe, ale źródłowe i postępuje z nimi jak opisałem wyżej (punkty 1 i 2).
-------------------- |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 13.07.2017 Ostrzeżenie: (0%) ![]() ![]() |
Powiedzieć łatwo, natomiast zrealizować już gorzej ;/
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Może Ci posłuży: https://stackoverflow.com/questions/7498119...e-with-csv-file
Nie ma tam chyba sprawdzania czy nazwa podkategorii się powtarza (a może tak się zdarzyć w przypadku podkategorii w innej ścieżce). No i jest założenie do 5 poziomów. -------------------- |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
W moim kodzie był błąd. Explode w array_map powinien rozdzielać na podstawie "/" a nie "\n";
-------------------- |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 13.07.2017 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 14:04 |