ďťż

Sklep internetowy a tabele w bazie produktów :(

       

Podstrony


telcocafe

Witam!

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ę...

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.