• 13-10-2012, 01:16:58
    #1
    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
  • 13-10-2012, 14:20:13
    #2
    $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
    #3
    Ö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.
  • 15-10-2012, 02:28:04
    #4
    Çok teşekkürler arkadaşlar