• 08-06-2020, 14:40:41
    #1
    Arkadaşlar merhaba, kullanıcı girişine bağlı adet kadar veri depolamak istediğimizde bu veriyi nasıl tutar ve nasıl alırız.
    Örneğin;
    Elimizde bir form var, bu formda kullanıcı ekle'ye bastıkça input eklensin. Burası basit, js ile input sayısını arttırabiliriz.
    Ancak şurada takılıyorum.
    Kullanıcı 10 kere input ekledi ve bu inputlara bazı veriler girdi.
    Bu verileri veritabanında nasıl tutabiliriz, hangi yapıda nasıl bir şemada tutabiliriz. Çekmemiz gerektiğinde nasıl çekmemizi önerirsiniz?
    PHP kodu olarak nasıl bir kod ile bu 10 ayrı inputun değerlerini ayrı yada tek bir sorgu ile vt'na göndeririz?
    Tşeekkürler.

    // HATTA BİRAZ DAHA KOMPLEKS YAPMAK İSTİYORUM

    kullanıcı eklediği inputların bir tab altına da input açabilsin.
    Aynı liste gibi.
    • INPUT 1
      • INPUT 1_1
      • INPUT 1_2
    • INPUT 2
    • INPUT 3

    gibi ve bu sıralama da tamamen kullanıcıya bağlı olsun, alt inputları da üst inputla bağıntılı şekilde nasıl tutarız?
  • 08-06-2020, 14:47:54
    #2
    json
    veya farklı tablo açsanız?
    user | input_id | input_sub_id | deger

    şeklinde
    veya
    id | user | parent_id | deger
    şeklinde de olabilir sınırsız alt değer için (sorgulamada recursive sorgu / window function kullanmanız gerekebilir karışık olur sadece SQL'de, performans fazla önemli değilse php'de yaparsınız kolayca)
  • 08-06-2020, 14:50:26
    #3
    table control
    Type : input id: 1 parentid:0
    Table control Val
    Id : 1 inputid:1 Val:”yazi”
  • 08-06-2020, 14:58:33
    #4
    hesapadim adlı üyeden alıntı: mesajı görüntüle
    json
    veya farklı tablo açsanız?
    user | input_id | input_sub_id | deger

    şeklinde
    veya
    id | user | parent_id | deger
    şeklinde de olabilir sınırsız alt değer için (sorgulamada recursive sorgu / window function kullanmanız gerekebilir karışık olur sadece SQL'de, performans fazla önemli değilse php'de yaparsınız kolayca)
    Yurtnet adlı üyeden alıntı: mesajı görüntüle
    table control
    Type : input id: 1 parentid:0
    Table control Val
    Id : 1 inputid:1 Val:”yazi”

    Hocalarım teşekkür ederim de bu veritabanı ve tablolar birbirine girince benim kafam biraz karışıyor da, ben şöyle anladım yada şöyle fikir yürüttüm yazdıklarınızdan doğrumudur?

    1. input parent'i 0 olan bir input olacak, eğer parent'i sıfırsa yada eklenen herhangi bir inputun parent'i 0'sa o input başlık inputu olacak.
    parent'i örneğin 1 olan inputlar, bu inputun altında olacak.
    Tamamdır buraya kadar her şey tamam.
    Js ile bu yapıyı kurabilirim sanırım.

    Veritabanına da parent'id si 0 olanları başlıklar tablosuna, 0 olmayanları subbaşlıklar tablosuna attım diyelim.
    • input 1 parent 0
      • input 1 parent 1
      • input 2 parent 1
    • input 2 parent 0
    • input 3 parent 0
      • input 1 parent 3
      • input 2 parent 3
    yapısı kuruluyor sanırım anladım.

    teşekkür ederim sorum olursa konuyu güncellerim sağolun



    /// GÜNCELLEME
    Arkadaşlar peki bunu geri çekerken nasıl çekeceğiz?
    2 tablomuz olduğunu düşünelim maksimum 2 alt aşağı gidiyor olalım.
    Çekerken bir başlığın alt başlığı olup olmadığını sürekli sorgulamam gerekir değil mi?

    Mesela;
    phpde select sorgusu ile çekiyorum diyelim
    basliklardan çektim tüm başlıkları, her çekim sırasında 1 başlığı çekince birde o başlığa ait sub varmı diye mi çektireceğim? yoksa bunun daha kolay bir yolu varmıdır?
  • 08-06-2020, 15:27:14
    #5
    Alt baslik tablosu diye birsey yok.
    Sadece tek tablo da olacak.

    id: 1 parentid:0 type : input value:yazi
    id:2 parentid:1. type:input value:yazi2
  • 08-06-2020, 20:12:00
    #6
    caylakgirisimci adlı üyeden alıntı: mesajı görüntüle
    Hocalarım teşekkür ederim de bu veritabanı ve tablolar birbirine girince benim kafam biraz karışıyor da, ben şöyle anladım yada şöyle fikir yürüttüm yazdıklarınızdan doğrumudur?

    1. input parent'i 0 olan bir input olacak, eğer parent'i sıfırsa yada eklenen herhangi bir inputun parent'i 0'sa o input başlık inputu olacak.
    parent'i örneğin 1 olan inputlar, bu inputun altında olacak.
    Tamamdır buraya kadar her şey tamam.
    Js ile bu yapıyı kurabilirim sanırım.

    Veritabanına da parent'id si 0 olanları başlıklar tablosuna, 0 olmayanları subbaşlıklar tablosuna attım diyelim.
    • input 1 parent 0
      • input 1 parent 1
      • input 2 parent 1
    • input 2 parent 0
    • input 3 parent 0
      • input 1 parent 3
      • input 2 parent 3
    yapısı kuruluyor sanırım anladım.

    teşekkür ederim sorum olursa konuyu güncellerim sağolun




    /// GÜNCELLEME
    Arkadaşlar peki bunu geri çekerken nasıl çekeceğiz?
    2 tablomuz olduğunu düşünelim maksimum 2 alt aşağı gidiyor olalım.
    Çekerken bir başlığın alt başlığı olup olmadığını sürekli sorgulamam gerekir değil mi?

    Mesela;
    phpde select sorgusu ile çekiyorum diyelim
    basliklardan çektim tüm başlıkları, her çekim sırasında 1 başlığı çekince birde o başlığa ait sub varmı diye mi çektireceğim? yoksa bunun daha kolay bir yolu varmıdır?

    select baslik, parent from tablo where id=3 or parent=3;
    şu şekilde çekersiniz

    baslik | parent
    deneme | 0
    altbaslik | 3
    altasdas | 3

    gibi bir sonuç döner

    eğer 2 den fazla, belirsiz sayıda alt olacaksa recursive sql sorgusu veya window function ları incelemeniz gerekli
    veya php'de daha basit ypaabilirsiniz:

    function baslikgetir($id){
    // sql'den çek. yukarıdaki verdiğim sorguya benzer kullanın.
    // dönecek değerler: id, baslik, parent
    while($sonuc){
    if($sonuc['id'] == $id){
    echo "başlık: " . $sonuc['baslik'];
    }
    baslikgetir($sonuc['id']);
    }
    }

    gibi
    bu mantığın kategori versiyonunu şöyle yaptım php ile
    https://gist.github.com/sh4dowb/1af5...44760d8615d84c
    tüm kateogrileri çekip php tarafında işliyor bu, belki fikir verir recursive fonksiyon kısmı
  • 08-06-2020, 21:41:30
    #7
    hesapadim adlı üyeden alıntı: mesajı görüntüle
    select baslik, parent from tablo where id=3 or parent=3;
    şu şekilde çekersiniz

    baslik | parent
    deneme | 0
    altbaslik | 3
    altasdas | 3

    gibi bir sonuç döner

    eğer 2 den fazla, belirsiz sayıda alt olacaksa recursive sql sorgusu veya window function ları incelemeniz gerekli
    veya php'de daha basit ypaabilirsiniz:

    function baslikgetir($id){
    // sql'den çek. yukarıdaki verdiğim sorguya benzer kullanın.
    // dönecek değerler: id, baslik, parent
    while($sonuc){
    if($sonuc['id'] == $id){
    echo "başlık: " . $sonuc['baslik'];
    }
    baslikgetir($sonuc['id']);
    }
    }

    gibi
    bu mantığın kategori versiyonunu şöyle yaptım php ile
    https://gist.github.com/sh4dowb/1af5...44760d8615d84c
    tüm kateogrileri çekip php tarafında işliyor bu, belki fikir verir recursive fonksiyon kısmı
    Hocam çok teşekkür ederim backend bilgim pek iyi değilde;
    $categories[$data['category_id']] = ["name"=>$data['category_name'], "parent"=>$data['category_parent']];
    şu kısımda tam olarak ne demek istediniz ben anlayamadım bu kodun açık hali nedir acaba?
  • 09-06-2020, 00:00:17
    #8
    caylakgirisimci adlı üyeden alıntı: mesajı görüntüle
    Hocam çok teşekkür ederim backend bilgim pek iyi değilde;
    $categories[$data['category_id']] = ["name"=>$data['category_name'], "parent"=>$data['category_parent']];
    şu kısımda tam olarak ne demek istediniz ben anlayamadım bu kodun açık hali nedir acaba?
    kategori array'ına kategori adını ve üst kategorisini ekliyor