Dizi İnsert İşlemi
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"; ?>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (1)
Ü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.