Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Proste pytania do projektu
Forum PHP.pl > Forum > Bazy danych > MySQL
K_M
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 winksmiley.jpg Przykładowy kod bardzo by pomógł.
Bardzo proszę o pomoc (nawet najmniejszą) i kłaniam się nisko.
KM
Crozin
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
K_M
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 winksmiley.jpg

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 | questionmark.gif
2 | AMD | 1 | questionmark.gif
3 | Intel | 1 | questionmark.gif
4 | Core Duo | 3 | questionmark.gif
5 | Celeron | 3 | questionmark.gif

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
questionmark.gif | questionmark.gif

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 smile.gif Struktura tabeli jest podobna jak wyżej w poście. Oto zapytania :

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 smile.gif

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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.