v2.5.2
Giriş yap

Dizi İnsert İşlemi

coder
537 defa görüntülendi

Merhaba.

Aşağıdaki gibi bir kodum var.
Kayıt işleminde seçilen üründen ikişer adet ekliyor.
Bu sorunu nasıl çözebiliriz?

Stokkodu ve adet dizi olarak gidiyor.

siparis-tamamla.php

<?php

if ($_POST){

    $adet = $_POST["adet"];

    if(isset($_POST["urununstokkodu"]) && $adet > 0){

        print_r($_POST["urununstokkodu"]);
        print_r($_POST["adet"]);

            foreach($_POST["urununstokkodu"] as $stokkodu):

                $parcala = explode("|", $stokkodu);
                $urun_id = $parcala[0];
                $stok_kodu = $parcala[1];
                $stok_sayisi = $parcala[2];

                $siparisitamamla = $db->prepare("INSERT INTO siparisler SET 
                    siparis_urun_id	= :urunid,
                    siparis_urun_adet = :adet,
                    siparis_urun_stokkodu = :stokkodu
                ");

                foreach($_POST["adet"] as $x){
                    if($x > 0){

                        $siparisitamamla->execute([
                            ":urunid" => $urun_id,
                            ":adet" => $x,
                            ":stokkodu" => $stok_kodu
                        ]);

                    }
                }

            endforeach;

        if($siparisitamamla){
            echo "İşlem Başarılı";
        }else{
            echo "İşlem Başarısız";
        }
    }else{
        echo "Ürün seçimi yapılmamış";
    }

}

?>

index.php

<?php include "static/header.php"; ?>

    <form action="siparis-tamamla.php" method="POST">

        <div class="row d-flex justify-content-center  pt-5 mb-5">

            <?php
				$urunler = $db->query("SELECT * FROM urunler")->fetchAll(PDO::FETCH_ASSOC);
				foreach ($urunler as $urun):
            ?>

                <div class="col-lg-3">
                    <div class="card box-shadow mb-4">
                        <img class="card-img-top img-thumbnail border-white" src="assets/images/resim.jpg">
                        <div class="card-body">
                            <h5 class="card-title display-4" style="font-size: 24px">
                                <b><?php echo $urun["urun_adi"]; ?></b>
                            </h5>
                            <p class="card-text border-bottom text-muted pb-3">
                                Stok Sayısı : <?php echo $urun["urun_stoksayisi"]; ?>
                            </p>
                            <div class="d-flex justify-content-between align-items-center">
                                <small class="text-muted">
                                    Stok Kodu : <?php echo $urun["urun_stokkodu"]; ?>
                                </small>
                                <div class="form-group form-check">
                                    <input type="checkbox" class="form-check-input" name="urununstokkodu[]" value="<?php echo $urun['urun_id']."|".$urun['urun_stokkodu']."|".$urun["urun_stoksayisi"]; ?>">
                                </div>
                            </div>
                            <div class="form-group mt-2">
                                <hr>
                                <select class="form-control" name="adet[]">
                                    <option value="0">- Adet Seçiniz -</option>
                                    <?php for ($i = 1; $i <= 20; $i++): ?>
                                        <option value="<?php echo $i; ?>"><?php echo $i;?></option>
                                    <?php endfor; ?>
                                </select>

                            </div>
                        </div>
                    </div>
                </div>

            <?php endforeach; ?>
            <button type="submit" class="btn btn-info w-100 mt-1">Siparişi Tamamla</button>
        </div>

    </form>

<?php include "static/footer.php"; ?>
Cevap yaz
Cevaplar (1)
desrana
1042 gün önce

Ürünleri kendi içinde gruplamanız sağlıklı olacaktır.

Öyleki;

name=" product[1][stock] "
name=" product[1][count] "


name=" product[2][stock] "
name=" product[2][count] "

Bu size şöyle bir sonuç verecek;


    [
        product =>
         [
             1 => 
             [
                 stock: "XXXXX"
                 adet: X
             ],
             
             2 => 
             [
                 stock: "XXXXX XXXXX"
                 adet: X
             ]
         ]
    ]

bunu parçalarsanız seçili ürünün adedi kadar işlem yapacaksınız.