![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 11.05.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Od 2 godzin siedze na rozwiazaniem dla systemu katalogow php + mysql. Mam zapisane kategorie w bazie mysql w postaci 1_2_3 (np zupy w proszku grzybowe) 1 (zupy wszystkie) 1_4 (zupy o smaku owocow lesnych) 2_3 (warzywa zielone) 2 (warzywa wszystkie) jako ID. Kazdy znak _ to przejscie do podkategorii. I teraz jak to zrobic aby skrypt wyslwietlal dane kategorie wg. glebokosci ? Prawidlowo powinno byc: 1 (zupy wszystkie) -> 1_2_3 (np zupy w proszku grzybowe) -> 1_4 (zupy o smaku owocow lesnych) 2 (warzywa wszystkie) 2_3 (warzywa zielone) itd. Prosze o pomoc poniewaz jestem w martwym punkcie. Pozdrawiam |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zablokowani Postów: 655 Pomógł: 0 Dołączył: 28.11.2003 Skąd: Zagórz Ostrzeżenie: (80%) ![]() ![]() |
z tego co zrozumialem po prostu zastosuj do kategori
Kod WHERE id='$zmienna'
Ten post edytował invx 20.07.2004, 17:37:01 -------------------- |
|
|
![]()
Post
#3
|
|
![]() Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
Moze sie przyda:
http://amnesty.scene.pl/~szacool/hwao/php/Tree/ |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 11.05.2003 Ostrzeżenie: (0%) ![]() ![]() |
hwao...DZIEKUJE BARDZO!!
Teraz wyglada to zupelnie inaczej ![]() Pozdrawiam Pawel |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 548 Pomógł: 2 Dołączył: 19.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
witam ...
mozesz tez zastosowac system ktory jest opisany w arcie na php.pl ... jestem jego wielkim zwolennikiem ... w skrocie: jako id kategorii stosujesz liczbe typu decimal z 10 miejscami po przecinku [przykladowo] i kazda kategoria ma tak: 4.1201230201 a znaczy to: 4 - zupy 12 - winiary 01 - instant 23 - zurek 02 - 200g 01 - pakowany po 100 sztuk ten sposob jest bardzo prosty w implementacji i wykozystaniu ... i praktycznie jest nie ograniczony bo: przy liczbie typy decimal o 10 miejscach po przeciunku masz 12 liczb przed kropka ... to duzo ... pozatym masz 99*99*99*99*99 podkategorii dla kazdej z kategorii .... 10 minut i mozna zmienic to na 9999*9999*9999*9999*9999 a to jest juz praktycznie nie ograniczona liczba ... pozatym zapytania sa banalnie proste .... chcesz wsyztkie zupy ![]() ![]() pozdrawiam ... -------------------- Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 21.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Z drzewkami się aktualnie ścieram. Podoa mi się art na stronie Depesha, ale nie jest to dokładnie to co potrzebuje.
Przy tworzeniu drzewek sama forma drzewka i wyciąganie wyników to jedno, ale trzeba tez rozwiązać problem dodawania nowej podkategorii, usuwania podkategorii (co z jej podkategoriami), i przeniesienia kategorii. Jeżeli nagle zdecydujesz że dana podkategoria powinna znaleźć się w innej... czy niema zbyt duzo komplikacji z tym... Wogóle czy w systemach drzewek zakładać rozwiązanie które pozwala na zmianę położenia podkategorii? to jest akurat dosyć sklomplikowane. Poza tym najlepiej chyba jeżeli osobna tabela opisuje strukturę drzewa. Prosze o dopowiedź i orson jak możesz to przedstaw rozwiązanie usuwania kategorii (co się dzieje z podkategoriami) i modyfikacji. -------------------- Untertainment - www.ut.info.pl mój wkład w Unreal Tournament i CMS.
Zainteresowania: Teaching snakes to kick. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 548 Pomógł: 2 Dołączył: 19.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
witam ...
[pod]kategorie usuwaja sie same:
wywala kategorie z wszystkimi pod kategoriami ... przesuniecie kategorii moze byc bardziej problematyczne ale trzeba pamietac ze to sa liczby ... czyli mozna na nich robic operacje matematyczne [przesuniecie o 1 to przeciez +1, o 0.001 to +0.001] nawet w poleceniu UPDATE sql ...
przesuwa all .... kwestia przemyslanych zapytan do bazy ... ps. to samo co robi sie na kategoriach trzeba zrobic na produktach ![]()
lub jezeli nie usuwasz a zmieniasz status:
a w 2:
zalatwiasz all 1 zapytaniem ![]() w ramach ciekawostki podam ze wyciagniece all kategori z podliczeniem ile produktow jest w kazdej oraz wyswietleniem glownej i 3 podkategori w dol to 1 zapytanie ![]() pozdrawiam -------------------- Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
|
|
|
![]() ![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 331 Pomógł: 1 Dołączył: 23.05.2004 Skąd: Tarnów/Londyn Ostrzeżenie: (0%) ![]() ![]() |
pozwólcie ze sie wtrące
![]() Są kategorie Dostawcy , kazdy dostawca ma kategorie towarów powiedzmy KatTowarow a w tych kategoriach Produkty. Skrypt przy dodawaniu nowej kategorii do KatTowarow znajduje najwyzsze ID dla KatTowarów ale dla danego Dostawcy i dodaje do niego 1, w ten sposob tworzone jest nowe ID dla KatTowarow. Tak że w bazie mogą być KatTowarów o identycznych ID. czy to sensowne rozwiazanie ? bo mi sie wydaje ze powinny byc rozne ID dla KatTowarow nawet jesli dostawca jest inny. -------------------- php 5.1.2 & Apache 2.0.50 & MySQL 4.1.7 @ WinXP Pro
..:: GG 6449856 ::.. www.londyn.me.uk - ogłoszenia mieszkaniowe dla Londynu |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
no ok spoko sposob orson tylko po co ta liczba przed przecinkiem (kropka)
![]() Aby odroznic rozne drzewka gdy sa trzymane w jednej tabeli ? pewnie tak ![]() pozatym mozes pokazac to zapytanie Cytat w ramach ciekawostki podam ze wyciagniece all kategori z podliczeniem ile produktow jest w kazdej oraz wyswietleniem glownej i 3 podkategori w dol to 1 zapytanie Tak o ;] -------------------- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 548 Pomógł: 2 Dołączył: 19.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
witam ...
to jest copy and paste z php ...
dla takich tabel:
i teraz male wyjasnienia: * - id przesylany po url pozwala na wyswietlanie tylko podrzednych kategorii .. czyli jak klikniemy to strona sie odswieza i tym samym zapytaniem wyciagamy tylko kategorie podrzedne ** - level jest przesylany po url i pomaga [mozna to wyliczac przez sql - chyba - ale tak jest szybciej ... sluzy do tego co wyzej ... ograniczania wyswietlanych kategorii ... wyliczany jest przez:
wyswietlanie zrobione jest w 1 przebiegu petli przez taki wiersz:
*** - dzieki level'owi nie trzeba dawac zadnych ifow/switchow ... zamiast h mozna dac class, id, array [indeks odpowiada nazwie - mainCat, 1stSubCat i inne] kolejna oszczednosc ... ![]() Cytat no ok spoko sposob orson tylko po co ta liczba przed przecinkiem (kropka) ![]() bo jakby nie bylo to to musialby byc string ... a tak jest liczba ![]() jak sa jeszcze jakies pytania/problemy to piszcie ... ps. to jest z projektu testowego ... nie chce mi sie szukac finala [ mam gdzies na cd wypalone] wiec kod moze nie dzialac i nie jestem pewien czy w finalu czegos nie zmienilem ale ten kod po wzgledem ogolnym jest dobry ... w finalu pewnie tylko kosmetyka ... pozdrawiam -------------------- Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
to czy final czy nie to akurat dla mnie malo wazne ;]
poszukuje po necie roznych sposobow na drzewka i staram sie wyciagac z nich to co najbardziej mi potrzebne i co mnie sie podoba ;] chce napisac zwykla uniwersalna klase do takich rzeczy. bo ostatnio jak cos pisalem to na 1000 rekordow robilo 2000 cos zapytan. zrobilem to nie przemyslanie i o efekt jest ;] thx za kody. -------------------- |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 21.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się, że mimo wszystko jest to zbyt skomplikowany kod i podatny na błedy.
Podałeś zapytania wykonujące cośtam... ale jak to wyglada w praktyce? Jeżeli chcem przenieść jedną gałąź (fragment innej) w inną lokację to już nie jest to takie proste... zmienia się spora część idCat: chcę przenieść instant (podkategorię winiary) do podkategorii powiedmy zielone (podkategorii Knorr ![]() Chcę mieć wyświetlone wszystkie bezpośrednie podkategorie kategorii wybranej, ale znać identyfikatory wszystkich podkategorii (żeby wyświetlić wszystkie produkty wybranej kategorii ale tylko kategorie bezpośrednie). Akcja może mieć jedynie atrybut wybranej kategorii (powiedzmy akcja PokazKategorie) idCat=3.1234. W przedstawionym rozwiązaniu sporo obliczeń i pilnowania jest w samym php. Jak wygląda generowanie ścieżki kategorii Zupy > Winiary > Instant ? Z tego co widzę to samo konstruowanie zapytań jest niebanalne więc mam wrażenie, że jest to dość skomplikowane w implementacji... Do tej pory najlepszym, najbardziej przejżystym i wygodnym wydaje mi się być patent ze stronki Depesza. Popróbuje jeszcze powalczyć z nim i zaimplementować go w takiej postaci jak mi jest potrzebny. Tam naprawde zapytania mogą być proste co zmniejsza ryzyko wystąpeniea błędów. Największy problem mam z przenoszeniem kategorii. Samo wyciąganie odpowiednich wartości jest naprawde proste, dodawanie i usuwanie też. Najgorzej jest z modyfikacją. Oczywiście jest to najmniej wykorzystywany element, ale jeżeli robić to wszystko. Zastanawiam się jeszcze jak rozwiązujecie problem z produktami kategorii usuniętych. Nie do końca odpowiada mi usuwanie produktów wraz z kategorią. W moim rozwiązaniu produkt ot tak sobie nie może być usunięty więc usunięcie kategorii, w której znajdują się produkty jest w zasadzie niedozwolone. ...ale to już jest raczej problem logiki aplikacji i przyjętego rozwiązania. -------------------- Untertainment - www.ut.info.pl mój wkład w Unreal Tournament i CMS.
Zainteresowania: Teaching snakes to kick. |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 548 Pomógł: 2 Dołączył: 19.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
witam ...
hmm ... nie wiem jaki masz problem z przenoszeniem ... jezeli bedziesz przenosil to bedziesz [juz w aplikacji finalnej] zaznaczal kategorie do przeniesienia [czyli znasz jej catID] i przeciagal/zaznaczal kategorie pod/za/obok/ponad/itp. ma sie znalesc [czyli rowniez znasz jej catID] ... wiec nie wiem w czym problem ... poprostu dodajesz do znanego ci catID jakas wartosc ... np. .01 albo .0001 i masz podkategorie ... potem szybki update tabeli z produktami i po problemie ... jezeli chcesz przenies wiecej naraz, np. kategorie i wszystkie podkategorie to przeciez w id podkategorii zmieniasz dokladnie to damo co w id kategori: [dodalem spacje zeby lepiej bylo widac] Kod 2.01 00 00 + 0.01 = 2.02 00 00 2.01 01 01 + 0.01 = 2.02 01 01 2.01 01 02 + 0.01 = 2.02 01 02 2.01 01 03 + 0.01 = 2.02 01 03 2.01 02 01 + 0.01 = 2.02 02 01 2.01 02 02 + 0.01 = 2.02 02 02 2.01 02 03 + 0.01 = 2.02 02 03 i po problemie ... wszystko mozna zalatwic zapytaniem ... w update wielu kategorii tez mozesz dodawac i zmienia sie cala struktura drzewa ... to dziala co do usunietych kategorii to mozna im przydzielic im catID = null a w zapytaniu wyswietlajacym dac ograniczenie where catID not null Cytat Chcę mieć wyświetlone wszystkie bezpośrednie podkategorie kategorii wybranej, ale znać identyfikatory wszystkich podkategorii (żeby wyświetlić wszystkie produkty wybranej kategorii ale tylko kategorie bezpośrednie). przeciez to robi zapytanie z mojego poprzedniego posta ... wlacznie z ograniczaniem widoku tylko do kliknietej kategorii i wszystkich podkategorii ... Cytat Akcja może mieć jedynie atrybut wybranej kategorii (powiedzmy akcja PokazKategorie) idCat=3.1234. W przedstawionym rozwiązaniu sporo obliczeń i pilnowania jest w samym php. ale moze tez byc akcja pokazOdDo(0.1,0.2); ... a co do pilnowania sie ... zawsze trzeba sie pilnowac ... opracujesz cos raz i masz spokoj ... pozdrawiam -------------------- Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
hmm no cos tam naskrobalem. Poniewaz jest to moje pierwsze chyba spotkanie z drzewkami to podejrzewam ze duzo tam bledow bedzie.
http://vengeance.strefaphp.net/Trees.class.php Moje uwagi: : czy oplaca sie dla przejrzystosci kodu dublowac dzialanie funkcji create_tree() i create_node() : wartosci drzewka w przykladzie sa calkowicie przypadkowe ;] : nie przerazajcie sie tym load() i parametrami. jako ze klasa ma sluzyc reszcie projektu to tak tam jest ;] jest to zwykle uzyskanie instancji obiektu. no i oceniajcie. i na prawde prosze napisac co mam tam zienic czy tez usunac cale ![]() ![]() -------------------- |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 548 Pomógł: 2 Dołączył: 19.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
witam ...
jestem aktualnie zupelnie bez czasu wiec jeszcze nie zaglebialem sie w kod zabardzo ale juz widze ze musisz udostepnic klase bazy ... inaczej trzeba przepisac zeby dzialalo na czystym mysql ... przydalby sie jeszcze jakis setup ... cos do zakladania struktury bazy ... pozdrawiam -------------------- Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
no więc:
klasa Trees: + działanie: http://vengeance.strefaphp.net/drzewka/Trees.class.php5 + kod: http://vengeance.strefaphp.net/drzewka/source.php + sql: http://vengeance.strefaphp.net/drzewka/drzewko.sql klasa Modules: + kod: http://vengeance.strefaphp.net/drzewka/lib...ules/source.php klasa DbDriver: + kod: http://vengeance.strefaphp.net/drzewka/lib...iver/source.php Wszystko działa jak powinno ale pod php5 :/ ze względu na to, że mam właśnie tę wersje, ale pisze pod php4 wynikneły różne błędy z przekazywaniem referencji obiektów. --edit-- a zapomniałem wspomnieć, że jesli ktoś wie co i jak musze zmienić w modules.class.php aby działało pod php4 (przekazywanie referencji obiektu) to prosze o podpowiedź. Bo na razie gdy zrobie
to nie otrzymam poprawnego wyniku ;] Ten post edytował Vengeance 20.10.2004, 19:45:40 -------------------- |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 30.01.2004 Ostrzeżenie: (0%) ![]() ![]() |
no dobra a jak w takim razie dodac jakis elment do drzewka bez podawania jego id znajac tylko samego rodzica bo przeciez nie zawsze wiem jakie jest poprzednie id w drzewku
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 401 Pomógł: 5 Dołączył: 14.09.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Mielismy taka dyskusje na WebHelpie, http://forum.webhelp.pl/viewtopic.php?t=49636&highlight=tree
-------------------- |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 548 Pomógł: 2 Dołączył: 19.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
witam ...
nie mialem za duzo czasu zeby sie jej przyjzec dokladnie ale widac ze dziala ... jest mala, szybka i w miare uniwersalna ... kilka uwag tak na szybko: w bazie kategori mozna dodac kolumne addBy i dodac do sortowania [przydatne - nie wiem czy akurat tobie sie przyda ale jezeli klasa ma byc uniwersalna to powinno sie znalesc ...] mozliwosc sortowania po nazwie [przy kazdym sortowaniu najpierw po id ![]() po dodaniu w configu nazwy tableli i jakis parametrow powinna zliczac produkty/itemy w powiazanej bazie ... mozesz wykozystac moj kod do pobierania i liczenia ... po swietach bede mial troche czasu [deadlines :| ] to sie rozwiaze problem z php4 ... powinno przeciez dzialac ... pozdrawiam -------------------- Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
|
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 30.01.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(orson @ 2004-10-28 20:40:12) po swietach bede mial troche czasu [deadlines :| ] to sie rozwiaze problem z php4 ... powinno przeciez dzialac ... a kto powiedzial ze nie dziala ![]() ![]() ale tak jak powieedzialem nie wiem jak rozwiazac problem tego zebym nie musial podawac id pod ktorym chce podpiac nastepny przedmiot |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.08.2025 - 03:30 |