ďťż
Podstrony
|
telcocafeWitam!Mam problem...chce stworzyć baze danych produktów sklepu komputerowego. Jak powinna wyglądać tabela produktów abym mógł pozniej przy tworzeniu menu podzielić je na kategorie np. Procesory,Płyty główne itd. ? I jak się do nich odwoływać? Bardzo prosze o pomoc! Jeżeli chcesz mieć jedną tabelę z produktami to możesz dodać jeszcze jedno pole z czym jest dany produkt. Potem kategorie to będą już kwestią odpowiednich zapytań. ps. napisz jakiej bazy danych będziesz używał :) Użytkownik reVis edytował ten post 12 listopad 2005, 12:58 robisz 2 tabele: 1 tabela 'kategorie', a w niej pola: id (int) - identyfikator kategorii name (varchar/text) - nazwa kategorii ewentualnie: desc (text) - opis //tutaj jeszcze mozesz wstawic inne pola (zalezy co ci potrzebne) 2 tabela 'produkty': id (int) - id produktu cat_id (int) - id kategorii produktu name (varchar/text) - nazwa produktu desc (text) - opis // itd... i teraz jak chcesz wyswietlic wszystkie produkty z kategorii procesory (ktora ma w tabeli id np. 3), dajesz zapytanie SQL: SELECT * FROM produkty WHERE cat_id=3 Wielkie dzięki Panowie zaraz sie zabieram do pracy!!! Tylko się zastanawiam czy nie dałoby się złączyć tych dwóch tabel w mysql??Żeby była jedna tabela i od razu w niej daklarowałbym nazwe kategori i nazwe produktu,opis itd? Np. Baza produkty : id_produktu : id_kategori : nazwa_kategori : nazwa_produktu : opis_produktu : cena_produktu : Jeśli moze tak być to czy mógłby mi ktoś to rozpisac w mysql? $produkty ="CREATE TABLE produkty ( id_produktu int(?) not null auto_increment, id_kategorii int(?) not null. nazwa_kategorii (jaki typ?) not null, opis_produktu(jaki typ do 250 znaków?) not null cena_produktu (jaki typ?) not null, primary key (produkty_id) )"; czy to jest dobrze??Bardzo prosze o pomoc chłopaki..... To by bylo niepraktyczne.. poza tym polecam jako id produktow uzywac varchar, wtedy kazdy produkt MOGLBY miec kilka kategorii oddzielonych np przecinkami [explode, implode i wsio] co mogloby sie bardzo przydac. Dlaczego niepraktyczne? Przeciez mógłbym sie tak samo odwoływać do produktów...tzn. select * from produkty whete kategoria_id=3; Czy ktos mógłby na podstawie mojego powyzszego posta stworzyc mi tabele 1 albo 2 z powyższymi informacjami? Byłbym wdzięczny za pomoc!!! Niepraktyczne zuzywanie miejsca w bazie - pomysl co by bylo jakbys chcial miec opis dla kategorii i jesli by byla jedna tabela to by bylo dodawanie produktu np nazwa_produktu, kategoria_produktu, opis_produktu, opis_kategorii_produktu ... Dla kazdego produktu za kazdym razem trzeba by dodawac opis kategorii. A co jakbys chcial miec kategorie - w kategoriach? Itp? Naprawde, lepiej zastosowac podzial na dwie tabele. Chociaz nie bede robil zadnych opisów do kategorii to ok zgadzam sie z Toba...czy mógłbyś mi to rozpisac w mysql??W 2 tabelach? create table kategorie (nazwa_kat varchar(255), opis_kat varchar(255), id int not null auto_increment, primary key(id)); insert into kategorie values ('kategoria1', 'opis kategorii 1', null); insert into kategorie values ('kategoria2', 'opis kategorii 2', null); insert into kategorie values ('kategoria3', 'opis kategorii 3', null); create table produkty (nazwa_prod varchar(255), opis_prod varchar(255), kategorie varchar(255), cena_prod varchar(255), id int not null auto_increment, primary key(id)); insert into produkty('produkt 1', 'nalezy do kategorii 1', '1', '99 zl', null); insert into produkty('produkt 2', 'nalezy do kategorii 3', '3', '99 zl', null); $zapytanie = 'select * from produkty where kategorie="'.$kat.'";'; $wynik = mysql_query($zapytanie); while ($rekord = mysql_fetch_array($wynik)) { echo '<br><br>Nazwa: '.$rekord['nazwa_prod'].' opis: '.$rekord[opis_prod].' cena: '.$rekord['cena_prod']; } Tak to moze wygladac, oczywiscie wszystko sobie musisz przystosowac. $kat to zmienna kategorii ktora ma sie wyswietlic, nie trzeba dla kazdego produktu dodawac nazwe kategorii - ta bedzie mozna wyczytac z drugiej tabeli. Wystarczy id, a potem wg tego id mozna wczytywac nazwe itp kategorii: $zapytanie = "select * from kategorie where id="'.$kat.'"'; $wynik = mysql_query($zapytanie); $rekord = mysql_fetch_array($wynik); echo 'nazwa kategorii: '.$rekord['nazwa_kat']; //Edit: Mala poprawka w kodzie, w produkt jeden jako kategoria bylo 1:2 a mialo byc 1. Użytkownik Einzeinbleth edytował ten post 12 listopad 2005, 14:32 DZIEKI WIELKIE zaraz przetestuje!!! Ok wszystko działa....ale jest jeszcze jeden problem jak zrobic linki??? Tak zeby wygladały mniej wiecej tak www.domena.pl/index?nazwa_prod=1 Tak zeby po kliknieciu na produkt w menu od razu przechodzilo do odpowiedniej kategori.... Prosze o pomoc! <? if (isset($_GET['nazwa_prod'])) { $nazwa_prod = $_GET['nazwa_prod']; $zapytanie = 'select * from produkty where nazwa_prod="'.$nazwa_prod.'"'; $wynik = mysql_query($zapytanie); while ($rekord = mysql_fetch_array($wynik)) { echo '<br> '$jakies_dane_wyczytane_z_tabeli_produkty; } } ?> Tak samo mozna wyswietlac po kilka produktow ktore pasuja do jakiejs kategorii, np bylby adres costam.php?kategoria=2 to wtedy kod: <? if (isset($_GET['kategoria'])) { $kategoria = $_GET['kategoria']; $zapytanie = 'select * from produkty where kategorie="'.$kategoria.'"'; $wynik = mysql_query($zapytanie); while ($rekord = mysql_fetch_array($wynik)) { echo '<br> '$jakies_dane_wyczytane_z_tabeli_produkty; } } ?> W ten sposob wyswietla sie wszystkie dane z tabeli produkty ktorych id jest rowne id pokazanym w pasku adresu. Polecam poczytac o poleceniach (polecenia php oraz mysql): $_GET $_POST select ... from ... ; select ... from ... WHERE ...=...; I podobnie z poleceniem mysql LIKE - wtedy bedzie wyszukiwal podobne slowa, np wpisze samoch to wyswietli samochody itp :) Dziękuję ślicznie!!!!! Zaraz wypróbuję... |
|||
Sitedesign by AltusUmbrae. |