![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 21.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
racuję na dwóch grupach - tabelach : kategorie i produkty.
Kategorie to standardowe drzewko z id_kategorii, parrent_id, nazwa kategori itd. W strukturze tabeli produkt umiescilem id_produktu, nazwa, id_kategorii, cena itd Pytania: 1. W jaki sposób przypisać produkt do wielu kategorii? Przykład : Procesory -> Intel -> Core Duo. EDIT: znalazłem to : http://forum.php.pl/index.php?showtopic=40992 2. Jak skonstruować zapytanie do wyszukiwania, które po wpisaniu np. "Procesor" uwzględni wszystkie produkty z kategori procesor, a nie tylko te z nazwą "Procesor". Mój pomysł jest taki, żeby do produktu dodać pole "slowa_kluczowe" i wyszukiwać też po tym polu. Tam mozna wrzucic przetlumaczone id kategori na stringi, ale to chyba mija sie z celem relacyjnej bazy danych :/ Pomocy. EDIT: tutaj jeszcze nie nie znalazłem 3. Ostatnie, chyba najtrudniejsze... Każdy produt posiada te same pola danych jak np. tytul, cena, producent itd. Czy da sie jakos prosto dolaczyc do danej kategori, np Procesory - dodatkowe parametry dla tej grupy i jej potomków, w tym przypadku niech będzie to "FSB" i "częstotliwość"? Inna kategoria będzie posiadała inne charakterystyczne dane. Zakładam, że napiszę sobie panel do tworzenia takich dodatkowych paramertów w PHP. EDIT: patrz edit z punktu 1 ![]() Bardzo proszę o pomoc (nawet najmniejszą) i kłaniam się nisko. KM Ten post edytował K_M 21.08.2008, 17:55:20 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Ad. 1) Potrzebujesz jeszcze jedną tabele: kategoriaProduktu, w której będą dwie kolumy: produkt_id, kategoria_id (reszty się domyślisz)
Ad. 2) Nie do końca rozumiem... chcesz, aby w przypadku, gdy ktoś w szukajce wpisze nazwe kategorii (np. procesory amd) to wyswietli całą kategorię? W takim razie chyba sensowne byłoby wygenerowanie sobie listy nazw kategorii i przed przystąpieniem do właściwego szukania sprawdzić czy aby przypadkiem nie szukamy całej kategorii. Ad. 3) Tabele: product: id, title, price itp. customFields: id, name (np. częstotliwość), category jakasNazwa: fieldName, fieldValue |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 21.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Czyli muszę przebudować moją bazę. Po przeczytaniu paru postów, zwłaszcza wspomnianego w głównej wiadomości zabrałem się do pracy, nie do końca rozumiejąc jak dokładnie działał będzie ten mechanizm. Wpierw prosta struktura, od czegoś trzeba zacząć.
Tabele: Kategorie (do drzewa kategorii) id | nazwa | parent_id | GrupyCech GrupyCech to dla mnie chwilowa zagadka, ale taką strukturę proponowano w jednym z postów. Produkty id | nazwa | netto | id_miniaturki | opis i inne atrybuty ProduktyKategorie id_prod | id_kat GrupyCech id | id_cechy | nazwa Cechy id | nazwa | typ[tekst,link,plik,obrazek] CechyWartosci id | id_cechy | id_prod | wartosc Powyższa struktura ma za zadanie uporządkować dane w formie kategori i podkategori, dodatkowo, każda kategoria może mieć jakieś cechy. Np procesory i dzieci tej kategorii będą wyświetlały cechę np. FSB, zegar itp. itd. Proszę o wyrozumiałość, staram się czegoś tutaj nauczyć i przebrnąć przez pracę jaką mam do wykonania ![]() Nie do końca rozumiem co może być cechą kategorii w tabeli Cechy. Czy może to być np. wspomniana częstotliwość w nazwie FSB, ale wtedy co jest typem? Czy typ oznacza typ danych, które pole zawiera - np. może to być liczba a może to być tekst? Autor struktury z powyżej pisze tak: Cytat Przy tworzeniu nowych kategorii produktów użytkownik wybierał sobie po prostu kilka grup cech które mu były aktualnie potrzebne (select multiple) i dane o grupach cech wędrowały do pola "grupy_cech" zlączone przecinkami. Nie rozumiem co znaczą tutaj "dane o grupach cech". Sam stosowałem czasami zapis do pola typu char stringa id np. kategori rozdzielonych przecinkami. Może chodzi tutaj o id tych cech wybranych, czyli liczb, złączonych przecinkami wrzuconych w pole tekstowe? Może na przykładzie będzie prościej. Mamy takie kategorie : id | nazwa | parent_id | GrupyCech 1 | Procesory | 0 | ![]() 2 | AMD | 1 | ![]() 3 | Intel | 1 | ![]() 4 | Core Duo | 3 | ![]() 5 | Celeron | 3 | ![]() Produkty id | nazwa | netto | id_miniaturki | opis 0 | Core model X | 500.00 | 4 | "opis X" 1 | Celeron model Y | 400.00 | 7 | "opis Y" Tabela łącząca - jak ją wypełnić? id_prod | id_kat ![]() ![]() Czy taka będzie jej zawartość? Może coś zupełnie mylę? id_prod | id_kat 0 | 1 0 | 3 0 | 4 1 | 1 1 | 3 1 | 5 I ostatnia rzecz na razie - jak wyglądają zapytania do takiej struktury? Założenie jest takie, że wybierając kategorię procesory chcę zobaczyć wszystkie procesory wypisane, zarówno AMD i Intel, ale wybierając kategorię Intel - wiadomo, tylko Intel wraz z wszystkimi produktami dzieci tej kategorii. EDIT! Chciałbym pochwalić się, że udało mi się stworzyć system wyświetlania produktów przynależących do wielu kategorii ![]() 1. Wypisanie produktow w drzewie wszystkich kat SELECT SKLEP_Kategorie.id_kat AS id_kategorii, SKLEP_ProduktyKategorie.id_kat AS id_kat_produktu, SKLEP_ProduktyKategorie.id_prod AS id_produktu FROM SKLEP_ProduktyKategorie, SKLEP_Kategorie WHERE SKLEP_ProduktyKategorie.id_kat=SKLEP_Kategorie.id_kat 2. Wypisanie nazwy produktów o katid 1 SELECT SKLEP_Produkty.id AS idp, SKLEP_Produkty.nazwa FROM SKLEP_ProduktyKategorie, SKLEP_Kategorie, SKLEP_Produkty WHERE SKLEP_ProduktyKategorie.id_kat = SKLEP_Kategorie.id AND SKLEP_Kategorie.id =1 AND SKLEP_Produkty.id = SKLEP_ProduktyKategorie.id_prod 3. Wypisanie danej kategorii razem z produktami z jej podkategorii SELECT SKLEP_Produkty.id AS idp, SKLEP_Produkty.nazwa, SKLEP_Produkty.netto, SKLEP_Produkty.vat, SKLEP_Produkty.czy_promocja, SKLEP_Produkty.prom_cena, SKLEP_Produkty.prom_sztuk, SKLEP_Produkty.prom_data_do, SKLEP_Produkty.id_miniaturki, SKLEP_Produkty.ile_zdjec, SKLEP_Produkty.data_dodania FROM SKLEP_ProduktyKategorie, SKLEP_Kategorie, SKLEP_Produkty WHERE SKLEP_ProduktyKategorie.id_kat = SKLEP_Kategorie.id AND SKLEP_Kategorie.id =1 AND SKLEP_Produkty.id = SKLEP_ProduktyKategorie.id_prod Jestem pewien, że można zrobić to lepiej, ale jak na pierwszy raz to działa ![]() Teraz drugi etap, przypisanie cech do kategorii. Jeżeli ktoś ma jakieś porady, kod, cokolwiek co może mi pomóc w następnym zadaniu to bardzo proszę o posta. Wszelkie uwagi co do powyższego kodu też mile widziane. Pozdrawiam. Ten post edytował K_M 22.08.2008, 22:28:51 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 06:55 |