![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 118 Pomógł: 8 Dołączył: 10.12.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam następujący problem, ponieważ stworzyłem sobie w SQLu tabele z:
0 w path oznacza że kategoria jest główną kategorią a dalej to po ID (IMG:style_emoticons/default/winksmiley.jpg) No i właśnie nie wiem czy dobrze zaprojektowałem tabele, ale chciałbym stworzyć listę kategorii czyli np:
No i ogólnie na napisać na sztywno wyświetlanie to już nie taki problem, ale gdy nie wiem ile będzie podkategorii to nie wiem jak napisać to bardziej elastycznie ? Żeby sprawdziło mi czy ta podkategoria ma dalej podkategorie i jak tak to dołączyło je do tablicy. Ma ktoś jakiś pomysł ? Czy trzeba na nowo innym sposobem zaprojektować tabelke w bazie ? Pozdrawiam Ten post edytował Damiankossek 10.12.2010, 07:40:14 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Ehh temat wałkowany już setki razy... http://www.google.pl/search?client=opera&a...-8&oe=utf-8
lub sam poszukaj -> php + drzewo kategorii |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 118 Pomógł: 8 Dołączył: 10.12.2009 Ostrzeżenie: (0%) ![]() ![]() |
No ok ... Dzięki ale mam np. http://blog.mwojcik.pl/2008/02/17/drzewa-k...-php-metoda-ip/ i zaciąłem się na jednym czyli na:
W jaki sposób zrobić taką tablice ? Aby każda tablica zawierała dzieci z takim samym rodzicem ? Może jest już tak póżno że mój mózg nie myśli (IMG:style_emoticons/default/winksmiley.jpg) ... Ale nie mogę wpaść na żaden pomysł, teoretycznie zrobiłbym to tak: 1. Pobrał z bazy rekordy o parent = 0 , odpowiednio przerobił co dałoby mi: 0 => ([1] => Unix, [2] => Windows) 2. Rozbił tablicę wyżej i znowu wykonał zapytanie do bazy o rekordy z parent = $id ($id wziełoby się z rozbitej tablicy z Unixem i Windowsem) 3. No i miałbym już drugą tablice ale teraz jak napisać tą funkcje dla reszty kategorii tak żebym zachował taką strukturę tabeli jaką bym chciał, bo to co niżej napisałem to raczej zacznie mi później robić tablicę w tablicy .. ?
Sorry jeżeli tutaj napisałem głupoty i problem jest banalny (IMG:style_emoticons/default/winksmiley.jpg) Ale ja już śpię ... Może wy mnie jutro jakoś nakierujecie (IMG:style_emoticons/default/smile.gif) Bo prawie wszystko mi działa tylko nie potrafie poprawnie drzewka zbudować ... (IMG:style_emoticons/default/winksmiley.jpg) Dobranoc (IMG:style_emoticons/default/tongue.gif) Ten post edytował Damiankossek 11.12.2010, 03:25:25 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
[0] i [1] chyba nie trzeba objaśniać ;p [2] - parent_id (IMG:style_emoticons/default/smile.gif) dalej możesz dodać IP, zagłębienie itp. Ten post edytował CuteOne 11.12.2010, 10:11:33 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 118 Pomógł: 8 Dołączył: 10.12.2009 Ostrzeżenie: (0%) ![]() ![]() |
No właśnie ale chodzi mi o to jakim sposobem mogę stworzyć taką tablice (IMG:style_emoticons/default/winksmiley.jpg)
Jak wyciągnąć dane z bazy i jakim sposobem to przerobić żebym w każdej tablicy miał dzieci tego samego rodzica ... |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Tam masz wszystko opisane (IMG:style_emoticons/default/tongue.gif) zauważyłem, że wybrali inne rozwiązanie niż ja ci opisałem tak więc postępuj zgodnie z instrukcją z tamtej strony
Ten post edytował CuteOne 11.12.2010, 11:08:01 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 118 Pomógł: 8 Dołączył: 10.12.2009 Ostrzeżenie: (0%) ![]() ![]() |
Tylko że mam mały problem (IMG:style_emoticons/default/tongue.gif) Korzystam z FrameWorka (Kohana) i tam raczej biblioteka do bazy nie obsługuje CONCAT :/ Robić to w najzwyklejszej bibliotece (tej co Ty podałeś) ? Czy może PDO ?
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Kohana OBSŁUGUJE concat, tylko trzeba wiedzieć JAK (IMG:style_emoticons/default/winksmiley.jpg) Można to zrobić na 2 sposoby. Albo piszesz zapytanie "z palca" i walisz metodą query(), albo używasz Database Expression w query builderze. Przynajmniej w wersji 2.X, bo w 3.X były zmiany drobne query buildera (kumpel biurko obok pisze to mi wspomniał), a nie wgryzałem się jeszcze w gałąź 3.X nie pisałem sam, więc tylko mówię co od niego wiem.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 118 Pomógł: 8 Dołączył: 10.12.2009 Ostrzeżenie: (0%) ![]() ![]() |
Thek, uprzedziłeś mnie (IMG:style_emoticons/default/biggrin.gif) Właśnie leciałem na forum poprawić moją głupote z tym co napisałem że nie obsługuje (IMG:style_emoticons/default/tongue.gif) Przecież DB::QUERY() jest (IMG:style_emoticons/default/winksmiley.jpg)
To chyba przez to że siedziałem do 4.00 i na dodatek dziś od 11.00 do 23.00 w robocie (IMG:style_emoticons/default/smile.gif) Heh (IMG:style_emoticons/default/tongue.gif) Dzięki, będę kombinował Czy się różni WHERE LIKE CONCAT od WHERE = ... ? Wyniki mi zwraca takie same w obydwu przypadkach (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 38 Dołączył: 1.12.2010 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
No coś tutaj ktoś nadinterpretował. CONCAT odpowiada za połączenie stringów które ma w argumentach. Zatem podanie mu jednego argumentu zawsze da ten sam wynik. CONCAT stostuje się np. gdy chcesz jako jedną kolumnę z bazy wydrukować dwie kolumny fizyczne w bazie. Np. masz kolumny imię i nazwisko, możesz je sobie CONCATować w jedno pole przy pobieraniu danych z bazy. Jest również konstrukcja GROUP_CONCAT służąca do łączenia elementów pogrupowanych przez GROUP BY. Można w taki sposób wydrukować sobie wszystkie imiona po przecinku dla zapytania grupującego dane po nazwisku.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 118 Pomógł: 8 Dołączył: 10.12.2009 Ostrzeżenie: (0%) ![]() ![]() |
Właśnie tak czytałem o tym CONCAT i coś mi nie pasowało, czyli może być poprostu WHERE LIKE cośtam ? Zamiast tego concatowania (IMG:style_emoticons/default/smile.gif) ?
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 38 Dołączył: 1.12.2010 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Tak, w zupełności WHERE LIKE wystarczy.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 08:19 |