Merhaba arkadaşlar, akşam vakti kafam durdu valla. Veritanı ve PHP kodları içinden çıkamadım.
Giriş sayfasında Select Liste Firmalar olacak. Firma seçildikten sonra, seçilen firma sayfasına marka & ürün eklensin istiyorum. Nasıl yapabilirim, yardımlarınızı bekliyorum.
Veritabanı Tabloları
Firmalar
firma_id
firma_adi
Markalar
marka_id
marka_adi
firma_id
Ürünler
id
stok_kodu
urun_adi
fiyat
stok_durumu
Veritabanı Firma Kategori Marka ve Ürün
3
●1.394
- 13-10-2012, 14:20:13$fid seçilen firma id'sine eşit
$mid seçilen markanın id'sine eşit olarak :
SELECT * FROM Markalar WHERE firma_id = '$fid'; // bu şekilde seçtiğiniz firmaya ait markaları listeleyebilirsiniz ve aynı yöntemi uygulayarak marka seçiminden sonra o markaya ait ürünleri de diğer bir sayfada listeleyebilirsiniz.
SELECT * FROM Urunler WHERE marka_id = '$mid'; // ürünler tablonuzda her ürünün markasını belirtecek marka_id sütünunu da eklemenizi öneririm.
İstek ve ihtiyacınıza göre daha farklı yöntemler de uygulanabilir. Marka ve ürün tablolarını birleştirmek isterseniz left,right,inner JOIN yöntemleri ile yapma imkanınız da var. - 13-10-2012, 21:42:30Öncelikle benim önerim tablo yapısını değiştirmen olacaktır.
Firmalar
id
firma_adi
Markalar
id
marka_adi
Ürünler
id
f_id
m_id
stok_kodu
urun_adi
fiyat
stok_durumu
Listeletmek istediğin asıl tablo ürünler tablosu olduğu için diğerleri sadece köprü görevi üstlenecek. Bu köprülerle bağlantıyı sağlamak için de ürünler tablonu diğer 2 tabloyla eşitlemen yeterli olacaktır.
Listeletmek için örnek sorgular;
Markalarına göre ürünleri listeletmek istiyorsan eğer;
SELECT * FROM urunler, markalar WHERE markalar.id=urunler.m_id GROUP BY urunler.m_id ORDER BY markalar.marka_adi ASC
group by ile array olarak çektiğimiz verilerin tek bir gruba ait olduğunu belirliyoruz. order by ile de marka adına göre listeletiyoruz. bu sorgudan alacağın değeri bir değişkene atayarak o markanın hangi firmaya ait olduğunu listelebilirsin.
mesela biz yukarıda bulunan sorgudan döndüreceğimiz değeri $markai değişkenine atayalım.
SELECT * FROM urunler, firmalar WHERE urunler.m_id=".$markai['id']." AND urunler.f_id=firmalar.id GROUP BY f_id
Yine group by ile firmaları tekrarlamaması için bir grup içerisine alıyoruz. Bu şekilde eklediğimiz ürün hangi marka yada firmada ise ona göre listeletiyoruz.
başlıkları bu şekilde listeletebilirsin. başlık listeletme işleminde kullanmayacağın tabloları çıkartmak için join işlemi işine yarayabilir.
içeriği listeletirken de yine tablolar arasındaki eşitlemeyi sağlamak yeterli olacaktır.