lostyazilim
tr.link

Php Sepetteki Ürünleri Çoklu Olarak Veritabanına Kaydetme Problemi

5 Mesajlar 1.037 Okunma
lstbozum
tr.link

yazilimyolcusu yazilimyolcusu WM Aracı Kullanıcı
  • Üyelik 01.11.2021
  • Yaş/Cinsiyet 40 / E
  • Meslek Çalışmıyorum
  • Konum Konya
  • Ad Soyad M** Y**
  • Mesajlar 85
  • Beğeniler 0 / 1
  • Ticaret 0, (%0)
Merhabalar. Ben e-ticaret sitresi yapmaya uğraşıyorum. Konu şu: Sepetteki ürünlerimi veritabanına kaydetmek istiyorum. Sepette iki ürün varsa sadece ilk ürünü kaydediyor. Kaydetmek istediğim ürünlerin "name" değerlerinin hepsini "sepetform" şeklinde verdim. "dizicek" ile çekiyor ve bir seferde hepsini kaydedebiliyorum ama sadece ilk ürün kaydoluyor. Aşağıdaki kodlar veritabanına kaydedecek "kaydet.php" sayfasına ait. "name" değerlerinin olduğu sayfadan bir örnek hemen aşağıda. Bu sayfa çok uzun olduğu için koymadım. Kodlara bir bakabilirseniz sevinirim.

veri.php

E-Posta Adresi: *





kaydet.php
if ($_POST) {

$dizicek = $_POST['sepetform'];
list($aliciadi, $firmaadi, $sehiradi, $ilceadi, $telefon, $eposta, $siparis, $urunadi, $urunstokkodu, $urunstoksayisi, $urunfiyati, $urunadedi, $urunsipariskodu) = $dizicek;

$alicisorgulistele = "INSERT INTO sepetonaylanan (
sepetonaylanan_adisoyadi,
sepetonaylanan_firmaadi,
sepetonaylanan_sehiradi,
sepetonaylanan_ilcesemt,
sepetonaylanan_telefon,
sepetonaylanan_eposta,
sepetonaylanan_siparisnotlari,
sepetonaylanan_urunadi,
sepetonaylanan_stokkodu,
sepetonaylanan_stoksayisi,
sepetonaylanan_fiyati,
sepetonaylanan_adedi,
sepetonaylanan_sipariskodu)
VALUES ('$aliciadi', '$firmaadi', '$sehiradi', '$ilceadi', '$telefon', '$eposta', '$siparis', '$urunadi', '$urunstokkodu', '$urunstoksayisi', '$urunfiyati', '$urunadedi', '$urunsipariskodu')";
$sorgu = $db->query($alicisorgulistele);

if($sorgu) {
echo "Veriler Eklendi";
} else {
echo "Veriler Eklenemedi";
}

}
 

 

wmaraci
reklam

AhmetKarabulut AhmetKarabulut WM Aracı Kullanıcı
  • Üyelik 11.09.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İzmir
  • Ad Soyad A** K**
  • Mesajlar 1077
  • Beğeniler 361 / 361
  • Ticaret 33, (%100)
Sorgunuzda zaten sadece 1 ürün kaydediyorsunuz. Birden fazla kayıt için foreach kullanabilirsiniz, yada values satırını çoklayabilirsiniz. Fakat şunu söylemek istiyorum veritabanı yapınız biraz yanlış kurgulanmış. Her ürün için alıcının adı, firma adı şehir adı vs. gereksiz bilgileri çoklamak mantıksız. Hatta ürünün stok sayısını bile siparişte tutmanız gereksiz. Bir üst tabloda alıcı adı firma vs. bilgileri tutun. Stoklar için ayrı bir tablonuz olsun siparişler ile bir bağlantısı olmasın sipariş sırasında sadece azaltıp arttırın. Sepetteki ürünler için de sadece ürün id, fiyat, adet içeren mini bir tablonuz olsun bu sayed ebir çok gereksiz bilgiyi çoklayarak veritabanınızı şişirmezsiniz.
 

 

yazilimyolcusu yazilimyolcusu WM Aracı Kullanıcı
  • Üyelik 01.11.2021
  • Yaş/Cinsiyet 40 / E
  • Meslek Çalışmıyorum
  • Konum Konya
  • Ad Soyad M** Y**
  • Mesajlar 85
  • Beğeniler 0 / 1
  • Ticaret 0, (%0)
Dediğinizi yapacağım. Peki "telefon" ve "eposta" yı tutmalı mıyım sizce? Bir de "values" satırını çoklamak derken, ne demek istediğnizi anlayamadım. "foreach" kullandım ama veritabanında ne kadar alan varsa o kadar kayıt yaptı, "kaydet.php" nin neresinde kullanmam gerekli bilemedim.
 

 

AhmetKarabulut AhmetKarabulut WM Aracı Kullanıcı
  • Üyelik 11.09.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İzmir
  • Ad Soyad A** K**
  • Mesajlar 1077
  • Beğeniler 361 / 361
  • Ticaret 33, (%100)

$kaydetString = ";

foreach($degerlerList as $deger)
{
$kaydetString .= "VALUES ($deger[kolon1degeri], $deger[kolon2degeri]) ,";
}

$sorgu = $db->query($kaydetString);


pseudo olarak yukarıdaki şekilde values'u çoklayabilirsiniz. Bunun dışında her bir forech döngüsünde direkt aşağıdaki şekilde de ayrı insert intolar halinde kayıt atabilrisiniz.


foreach($degerlerList as $deger)
{
$kaydetString = ""INSERT INTO siparis('kolon1','kolon2') VALUES ($deger[kolon1degeri], $deger[kolon2degeri]) ";
$sorgu = $db->query($kaydetString);
}

 

 

wmaraci
wmaraci

yazilimyolcusu yazilimyolcusu WM Aracı Kullanıcı
  • Üyelik 01.11.2021
  • Yaş/Cinsiyet 40 / E
  • Meslek Çalışmıyorum
  • Konum Konya
  • Ad Soyad M** Y**
  • Mesajlar 85
  • Beğeniler 0 / 1
  • Ticaret 0, (%0)
Teşekkür ederim. İşe yarayacak galiba.
 

 

Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al