herbatniczek
5.11.2004, 20:16:55
Witam.
Mam różne produkty z różną ilością cech char. Chce to jakoś sensownie umieścić w bazie. Mam taki pomysł, żeby np przy umieszczeniu nowego opisu w bazie używać takiego znaku :: to oznaczałoby przejscie do nastepnej cechy. czyli np przekątna - 17'' :: czas reakcji - 16ms :: itd. Teraz explodem to wszystko do tablicy, i na ekran kazda cecha. Jak Wy sobie poradziliście z opisem produktów? czy uwazacie, ze wpisywanie danych w takim formacie jest sensownym rozwiazaniem? jesli tak, to co powiecie na <b>przekatna</b> - 17'' :: itd...
zeby nazwa cechy byla wytluszczona. jesli to tez ma sens, to jakiej funkcji uzyc, zeby <b> zadzialalo jak znacznik a nie tekst, przy wypisywaniu na ekranie?
THX
Parti
5.11.2004, 20:35:27
Cytat(herbatniczek @ 2004-11-05 21:16:55)
czy uwazacie, ze wpisywanie danych w takim formacie jest sensownym rozwiazaniem?
Nie. Najlepiej zrobić tabele z kolumnami dla każdej możliwej cechy produktu. Raz będziesz chciał wyświetlić przekątną w bold, a raz italik. Innym razem możesz chcieć posortować wg. przekątnej albo wyświetlić tylko te produkty, które mają czas reakcji większy od 17ms.
herbatniczek
5.11.2004, 21:19:50
dobrze, więc powiem może dokładniej co już mam:
jest drzewo kategorii i podkategorii. i podkategoriami - dlatego drzewo, żebym mógł mieć nieskończoną ilość tych kat i podkategorii. moje drzewo nadaje czy to kategorii, czy podkategorii unikalne ID. czyli
.................1
............2........3
..........4..5
i teraz obok id produktu w bazie (jak rozumiem sugerujesz, żeby każdy produkt miał oddzielną tabelę), mialbym id tej podkategorii, czy tez kategorii.
Teraz moje kategorie wyglądają tak, ze mam
przodek - id przodka
nazwa
potomek - true/false
katID.
I co dalej proponujesz? jeśli oddzielne pola - cechy to i oddzielne tabele dla monitorów, drukarek itd, więc nie mając jednej tabeli produktów chyba musze dodac nazwe tabeli produktu do tabeli kategorii?
ActivePlayer
5.11.2004, 23:39:52
Partiemu chodzilo chyba bardziej o to zeby tabela z danymi o produktach zawierała tyle pól, ile maksymalnie moze posiadac produkt np.
Id nazwa .... cecha1 cecha2 itd.
I potem jak masz cos wpisane w danym polu to to wyswietlasz a jak nie to pomijasz... pomaga to w tym ze mozesz potem sortowac np wg. cecha1 itp... proponuje nazewnictwo takie ze pola w nazwie są nazwą cechy a wartosc tym co ma byc w zalozeniu Twoim po myslniku... potem mozesz w kodzie php w roznych miejscach strony roznie pokazywac dane...
kociou1
6.11.2004, 00:00:39
Hmmm...
A może tak:
wpis w bazie: <i>NazwaCechy1</i>::Cecha1||<b>NazwaCechy2</b>::Cecha2||....
odczyt z bazy i explode:
<?php
$cechy=@explode('||', $dane_z_bazy);
?>
W efekcie dostajemy tablicę:
<?php
$cechy[]='<i>NazwaCechy1</i>::Cecha1';
$cechy[]='||<b>NazwaCechy2</b>::Cecha2';
?>
i dalej już chyba wiadomo o co chodzi
zYm3N
6.11.2004, 09:00:22
w polu text bazy:
<nazwa>xx</nazwa>
<wielkosc>532</wielkosc>
<koszt>523</koszt>
itp. idt. Podobno dla dużej ilości danych wolne, ale ja sprawdziłem to w jednym ze swoich skryptów i działa wyśmienicie :-)
Gdzieś miałem kod do rozwalania ciągu na tag + zawartość, ale ni mogę szybko znaleźć :|
ActivePlayer
6.11.2004, 10:55:30
gorzej jak potem sobie chcesz sobie posortowac wg jakiejs cechy
zYm3N
6.11.2004, 13:20:56
tak. Masz rację. jednakże myślę, że dla stron z niewielką ilościa odwiedzin dziennie wystarczy napisanie odpowiedniego interfejsu i wszystko powinno smigać sprawnie.
pzodr.
A gdyby zrobic 3 tabele:
produkty:
id_prod|nazwa_produktu|id_kategorii|cena1|cena2|ile_w_magazynie|itpitd
cechy
id_cechy|nazwa_cechy
wlasciwosci
id_wl|id_cechy|id_prod|wartosc
I wtedy np masz w tabeli prodykty monitor.
Dodajesz mu ceche 'przekatna', a we wlasciwosci dajesz '17ms'.
Tak mozesz dodac nieskonczenie wiele (bez przesady) cech oraz zmieniac jednostki.
Warto przyporzadkowac cechy odpowiedzniej grupie produktow (dyski twarde nie maja przekatnych monitora).
komar07
6.11.2004, 20:28:15
Sprawdz gotowe rozwiązania
http://oscommerce.coma jak juz tak bardzo upierasz sie przy cechach w jednym polu to poprostu stworz tablice cech jakie ma produkt zapisujac do bazy uzyj serialize() wyciagajac unserialize() i obrabiaj do woli tresc.
herbatniczek
7.11.2004, 01:52:04
dzięki za posty. narazie chce mieć połączenie tego wszystkiego o czym mówiliście. czyli możliwość sortowania i i nie bawienie sie w 20 tablic dla różnych produktów. czyli będzie opis, i pola, po których będzie można sortować - wspólne dla all produktów takie jak cena, nazwa producemt. przekątna, czas reakcji, - to moge zawrzeć przecież w moim drzewku kategorii. kto sortowałby po przekątnej ;-)
rogrog
7.11.2004, 08:57:57
reguły normalizacji baz danych mówią o czymś takim że jedna kolumna w tabeli powinna przechowywać tylko jedną informację. Zgodnie z tymi regułami Twoja baza powinna wyglądać mniej więcej tak jak podał Lisu. To nie jest 20 tabel, tylko 3. I daje Ci to ogromne możliwości. Tak się robi.
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.