• 28-12-2021, 16:19:45
    #10
    index.php
    <!doctype html>
    <html lang="tr">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            table,
            td,
            th {
                border: 1px solid black;
            }
    
            table {
                width: 100%;
                border-collapse: collapse;
            }
            #result {
                margin-top: 30px;
                padding: 20px;
            }
        </style>
    </head>
    <body>
    
    <form id="contactForm1" action="ajax.php" method="post">
        <input type="text" name="kod[]" value="01"> <br>
        <input type="text" name="cinsi[]" value="Köşelik"> <br>
        <input type="text" name="fiyat[]" value="1.5"> <br>
        <hr>
        <input type="text" name="kod[]" value="02"> <br>
        <input type="text" name="cinsi[]" value="Perde"> <br>
        <input type="text" name="fiyat[]" value="1.2"> <br>
        <hr>
        <input type="text" name="kod[]" value="03"> <br>
        <input type="text" name="cinsi[]" value="Tabure"> <br>
        <input type="text" name="fiyat[]" value="1.1"> <br>
        <button type="submit" style="margin-top: 15px;">Yolla</button>
    </form>
    
    <div id="result"></div>
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script>
    
        $("#contactForm1").on("submit", function(e) {
            e.preventDefault();
    
            $.ajax({
                type: $(this).attr('method'),
                url: $(this).attr('action'),
                data: $(this).serialize(),
                error: data => {
                    console.log('Hata');
                    console.log(data);
                }
            }).done(e => {
                $("#result").html(e)
            })
        })
    </script>
    </body>
    </html>
    ajax.php
    <?php $p = $_POST;
    
    $data = json_encode($p, JSON_UNESCAPED_UNICODE);
    // $data değişkenini direkt olarak veri tabanına kaydedin. Tablo göstermek istediğiniz yerde veri tabanından çekerek json_decode edin ve aşağıdaki gibi tablo oluşturun
    ?>
    
    <table>
        <tr>
            <th>Kod</th>
            <th>Cinsi</th>
            <th>Fiyat</th>
        </tr>
        <?php foreach ($p['kod'] as $k => $v) { ?>
            <tr>
                <td><?= $v ?></td>
                <td><?= $p['cinsi'][$k] ?></td>
                <td><?= $p['fiyat'][$k] ?></td>
            </tr>
        <?php } ?>
    </table>
  • 28-12-2021, 16:32:54
    #11
    Abdullahx adlı üyeden alıntı: mesajı görüntüle
    index.php
    <!doctype html>
    <html lang="tr">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            table,
            td,
            th {
                border: 1px solid black;
            }
    
            table {
                width: 100%;
                border-collapse: collapse;
            }
            #result {
                margin-top: 30px;
                padding: 20px;
            }
        </style>
    </head>
    <body>
    
    <form id="contactForm1" action="ajax.php" method="post">
        <input type="text" name="kod[]" value="01"> <br>
        <input type="text" name="cinsi[]" value="Köşelik"> <br>
        <input type="text" name="fiyat[]" value="1.5"> <br>
        <hr>
        <input type="text" name="kod[]" value="02"> <br>
        <input type="text" name="cinsi[]" value="Perde"> <br>
        <input type="text" name="fiyat[]" value="1.2"> <br>
        <hr>
        <input type="text" name="kod[]" value="03"> <br>
        <input type="text" name="cinsi[]" value="Tabure"> <br>
        <input type="text" name="fiyat[]" value="1.1"> <br>
        <button type="submit" style="margin-top: 15px;">Yolla</button>
    </form>
    
    <div id="result"></div>
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script>
    
        $("#contactForm1").on("submit", function(e) {
            e.preventDefault();
    
            $.ajax({
                type: $(this).attr('method'),
                url: $(this).attr('action'),
                data: $(this).serialize(),
                error: data => {
                    console.log('Hata');
                    console.log(data);
                }
            }).done(e => {
                $("#result").html(e)
            })
        })
    </script>
    </body>
    </html>
    ajax.php
    <?php $p = $_POST;
    
    $data = json_encode($p, JSON_UNESCAPED_UNICODE);
    // $data değişkenini direkt olarak veri tabanına kaydedin. Tablo göstermek istediğiniz yerde veri tabanından çekerek json_decode edin ve aşağıdaki gibi tablo oluşturun
    ?>
    
    <table>
        <tr>
            <th>Kod</th>
            <th>Cinsi</th>
            <th>Fiyat</th>
        </tr>
        <?php foreach ($p['kod'] as $k => $v) { ?>
            <tr>
                <td><?= $v ?></td>
                <td><?= $p['cinsi'][$k] ?></td>
                <td><?= $p['fiyat'][$k] ?></td>
            </tr>
        <?php } ?>
    </table>

    Çok teşekkürler hocam. İnanmazsınız konuyu saat 2 de açtım hala aynı şeyle uğraşıyordum. Veritabanındaki tablo yapısı nasıl olmalı? $data değişkenini direkt kayıt edeceğim fakat o kısmın tablo yapısını anlayamadım.

    Kaydettim hocam tüm inputlar gelmedi. Şöyle oldu:
  • 28-12-2021, 17:17:34
    #12
    Hocam şimdi bu veriyi nereye kaydedeceğiniz sizin tablo yapınız ile alakalı. Müşteriler sayfaya girdiğinde onlara benzersiz bir kimlik ataması yapmanız gerekiyor, bunu session (üyelik veya anlık) veya kendi belirlediğiniz bir algoritma ile oluşturduğunuzu düşünüyorum. Ya bu benzersiz kimlik ile ilişkilendirilen bir `siparis` tablosuna ya da direkt olarak müşteri/kullanıcı kimliğinin oluşturulup saklandığı tabloya ekleme yapmanız gerek. Daha sonra kullanıcı farklı bir sayfaya geçiş yaptığında bu verileri yine bu benzersiz kimliği baz alarak bir SQL sorgusu ile çekip işlem yapmanız gerekir diye düşünüyorum.

    Dediğim gibi, öncelikle verileri işleyebilmek için nasıl bir tablo yapısına sahip olmanız gerektiğini bir düşünmeniz gerekiyor. Nispeten geniş çaplı bir sistem ise bu siparişleri atıyorum `siparisler` isimli bir tabloda saklamanız daha mantıklı gibi, çünkü belki bununla beraber daha farklı bilgileri de (sipariş tarihi, kullanıcı bilgileri gibi) saklamak isteyebilirsiniz.
  • 28-12-2021, 17:26:56
    #13
    Abdullahx adlı üyeden alıntı: mesajı görüntüle
    Hocam şimdi bu veriyi nereye kaydedeceğiniz sizin tablo yapınız ile alakalı. Müşteriler sayfaya girdiğinde onlara benzersiz bir kimlik ataması yapmanız gerekiyor, bunu session (üyelik veya anlık) veya kendi belirlediğiniz bir algoritma ile oluşturduğunuzu düşünüyorum. Ya bu benzersiz kimlik ile ilişkilendirilen bir `siparis` tablosuna ya da direkt olarak müşteri/kullanıcı kimliğinin oluşturulup saklandığı tabloya ekleme yapmanız gerek. Daha sonra kullanıcı farklı bir sayfaya geçiş yaptığında bu verileri yine bu benzersiz kimliği baz alarak bir SQL sorgusu ile çekip işlem yapmanız gerekir diye düşünüyorum.

    Dediğim gibi, öncelikle verileri işleyebilmek için nasıl bir tablo yapısına sahip olmanız gerektiğini bir düşünmeniz gerekiyor. Nispeten geniş çaplı bir sistem ise bu siparişleri atıyorum `orders` isimli bir tabloda saklamanız daha mantıklı gibi, çünkü belki bununla beraber daha farklı bilgileri de (sipariş tarihi, kullanıcı bilgileri gibi) saklamak isteyebilirsiniz.
    Teşekkürler hocam,

    Aslında sorduğum şey tablo yapısı derken şöyle; orders isimli bir tablo oluşturup içerisine id ve data alanlarını ekledim. Data kısmının veri tipini JSON olarak belirledim. Şu an buraya gelen veriyi direkt kayıt ediyorum.

    Ben bunu ilk başta anlamamıştım yani her inputa ayrı sütun açmak şeklinde düşünmüştüm. Örneğin: Müşteri - Ürün vs. şeklinde. Sonra anladım ki tek hücreye JSON olarak yazmak gerekiyormuş.
  • 28-12-2021, 17:39:38
    #14
    Rica ederim;

    Sizin dediğiniz şekilde de olur aslında, olmaz değil. Fakat o şekilde çok karışık bir veri yığını oluşur. Kayıt esnasında bir döngüye sokmamız gerekirdi, ve diyelim bir müşterinin tek bir seferde yaptığı siparişleri diğer yaptığı siparişlerden ayırt edebilmek için ekstra bir sütuna daha ihtiyacımız olabilirdi. (Yine lazım olabilir ama bu değer çok fazla tekrarlanırdı) JSON formatında kayıt desteği de var zaten, bence en sağlıklısı ve kolayı böyle yapmak. Bu arada sadece id ve data sütunlarının yeterli olup olmayacağını iyi düşünün. Bu id değeri Auto increment olan mı yoksa müşteri ile ilişkilendirilmiş id mi? Eğer tablonun AI değeri ise bir tane de Foreign key ile müşteri kimliğini ilişkilendireceğiniz `musteri_id` sütunu eklemek iyi olabilir. Eğer bu id müşteriye aitse bu sefer de siparişleri birbirinden ayırt edeceğiniz `siparis_id` değeri de lazım olabilir. Tabii bunlara nihayetinde siz karar verin, hangisi uygun ise sizin için.

    Kolay gelsin.
  • 28-12-2021, 17:48:16
    #15
    Abdullahx adlı üyeden alıntı: mesajı görüntüle
    Rica ederim;

    Sizin dediğiniz şekilde de olur aslında, olmaz değil. Fakat o şekilde çok karışık bir veri yığını oluşur. Kayıt esnasında bir döngüye sokmamız gerekirdi, ve diyelim bir müşterinin tek bir seferde yaptığı siparişleri diğer yaptığı siparişlerden ayırt edebilmek için ekstra bir sütuna daha ihtiyacımız olabilirdi. (Yine lazım olabilir ama bu değer çok fazla tekrarlanırdı) JSON formatında kayıt desteği de var zaten, bence en sağlıklısı ve kolayı böyle yapmak. Bu arada sadece id ve data sütunlarının yeterli olup olmayacağını iyi düşünün. Bu id değeri Auto increment olan mı yoksa müşteri ile ilişkilendirilmiş id mi? Eğer tablonun AI değeri ise bir tane de Foreign key ile müşteri kimliğini ilişkilendireceğiniz `musteri_id` sütunu eklemek iyi olabilir. Eğer bu id müşteriye aitse bu sefer de siparişleri birbirinden ayırt edeceğiniz `siparis_id` değeri de lazım olabilir. Tabii bunlara nihayetinde siz karar verin, hangisi uygun ise sizin için.

    Kolay gelsin.
    Değerli tavsiyeleriniz için teşekkürler hocam.

    Tablonun son hali şöyle: AI olarak artan otomatik bir id değeri var bu standart zaten. Data sütununda gelen JSON verisi var, birde musteri_id kısmı ekledim tavsiyeniz ile. Yalnız kayıt esnasında döngüye sokmak kısmını anlayamadım.
  • 28-12-2021, 18:02:03
    #16
    Döngü işlemi yok hocam. Döngü işlemi ,her inputa ayrı sütun açma fikrinizi yapmış olsaydık lâzım olabilirdi.
  • 29-12-2021, 14:11:04
    #17
    @Abdullahx; Hocam kusura bakmayın, direkt yazmıyorum uğraştım fakat yapamadım. Söylediğiniz gibi $data değişkenini olduğu gibi veritabanına yazdırdım sonradan çektim ben bu veriyi. Veri de geliyor buraya kadar sorun yok. Json Decode kısmında başarısız oldum.

    Alt kısımda $gelen değişkenine aldığım veri sizin data olarak gönder dediğiniz değişken. Echo halini de ekleyeyim.

    echo $gelen;


    Kodlar:



    Bu veriler geliyor decode ediyorum fakat decode sonrası $gelen->kod şeklinde veriye ulaşmaya çalıştığımda array dönüyor.


    Yaptım hocam:
  • 29-12-2021, 17:05:09
    #18
    json_decode fonksiyonuna sadece $json datasını parametre olarak verirseniz geriye obje döndürür. obje içerisindeki verilere de bildiğiniz üzere '->' işareti ile erişebiliriz. Bu fonksiyona json datası ile beraber ikinci parametre olarak true veya JSON_OBJECT_AS_ARRAY verildiğinde geriye bir dizi döner. Sonuca ulaşmanıza sevindim