lostyazilim
tr.link

Php Form'dan veritabanına yazdırırken dikey kayıt sorunu

6 Mesajlar 1.061 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. Arkadaşlar form'dan veritabanına çoklu veri gönderiyorum. Ama resimdeki gibi dikey kayıt yapıyor. Nerede hata yapıyorum acaba?
include("baglanti.php");

if ($_POST) {
$dizi = array(
"aliciadisoyadi" => $_POST['aliciadisoyadi'],
"alicifirma" => $_POST['alicifirma']
);

$stmt = $db->prepare("INSERT INTO sepetonaylanan
(sepetonaylanan_adisoyadi,
sepetonaylanan_firmaadi
)
VALUES (?,?)");

foreach($dizi as $row) {
/* for($i=0;$i $stmt->execute(array($row[0], $row[0]));
}
}
?>

https://www.hizliresim.com/b7gpauv
 

 

wmaraci
reklam

ikodev ikodev Developer Kullanıcı
  • Üyelik 08.05.2015
  • Yaş/Cinsiyet 28 / E
  • Meslek Developer
  • Konum Samsun
  • Ad Soyad İ** Ş**
  • Mesajlar 1020
  • Beğeniler 321 / 320
  • Ticaret 19, (%100)
Sorunun sebebi execute ederken $row dizisinden gelen [0] diyerek 0. indis değerini gönderiyorsunuz 2 sütuna'da. $row[0], $row[1] şeklinde düzeltirseniz sorununuz çözülür.

Fakat yine şüpheleniyorum ki toplu veri eklemek istediğinizde değerler düzgün gelse bile aynı veriler yazıyor diye bir sorununuz daha meydana çıkacak.

İsterseniz dediğim gibi bir düzenleme yapıp deneyin sonra tekrar belirtin son durumdan
 

 

OmerGunay OmerGunay https://omergunay.net Kullanıcı
  • Üyelik 15.05.2015
  • Yaş/Cinsiyet 33 / E
  • Meslek PHP Developer
  • Konum İstanbul Avrupa
  • Ad Soyad Ö** G**
  • Mesajlar 1207
  • Beğeniler 382 / 381
  • Ticaret 16, (%100)
yazilimyolcusu hocam for döngüsüne niye soktun execute ederken ?



$stmt = $db->prepare("INSERT INTO sepetonaylanan
(sepetonaylanan_adisoyadi,
sepetonaylanan_firmaadi)
VALUES (?,?)");

$stmt->execute(array($dizi[aliciadisoyadi], $dizi[alicifirma]));



bu şekilde yeterli olacaktır.
BEYAZMASTER

kişi bu mesajı beğendi.

Herkes yediğinden ikram eder..(Yavuz Sultan Selim)

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)
"Ömer" bey sizin kodu yazdığımda şöyle bir hata verdi.
"PHP Notice: Array to string conversion in"


"edcsmile" sizin kodları girdiğimde de şu hatayı veriyor.
"PHP Notice: Undefined offset: 1"

Yalnız kendi kodlarımla dikey kayıt yapıyor. Bu arada Ömer bey, for döngüsünü silmeyi unutmuşum. O yorum satırıydı. Kusura bakmayın. :)
Aslında ben olayı şöyle anlatayım. Mesela sepetimde 3 adet ürün var. Form'u post ettiğimde veritabanına şu şekil bir kayıt yapacak. Tek post, üç kayıt. Bu alan adlarının hepsini yazmadım kod kalabalığı olmasın diye.

Ali, Firması, Şehri, İlçesi, Telefonu, E-Postası, Aldığı 1. ürünün Stok Kodu, Aldığı 1. Ürünün Stok Sayısı, Aldığı 1. Ürünün Adı

Ali, Firması, Şehri, İlçesi, Telefonu, E-Postası, Aldığı 2. Ürünün Stok Kodu, Aldığı 2. Ürünün Stok Sayısı, Aldığı 2. Ürünün Adı

Ali, Firması, Şehri, İlçesi, Telefonu, E-Postası, Aldığı 3. Ürünün Stok Kodu, Aldığı 3. Ürünün Stok Sayısı, Aldığı 3. Ürünün Adı
 

 

wmaraci
wmaraci

OmerGunay OmerGunay https://omergunay.net Kullanıcı
  • Üyelik 15.05.2015
  • Yaş/Cinsiyet 33 / E
  • Meslek PHP Developer
  • Konum İstanbul Avrupa
  • Ad Soyad Ö** G**
  • Mesajlar 1207
  • Beğeniler 382 / 381
  • Ticaret 16, (%100)
yazilimyolcusu

o zaman foreach içinde devam edin hocam. $dizi[aliciadisoyadi] yerlerindeki $dizi yerini $row olarak değiştirip deneyin. Olmazsa uzak bağlantı ile destek verebilirim.
 

 

Herkes yediğinden ikram eder..(Yavuz Sultan Selim)

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)
Sorunu halletmeye az kaldı. Ufak bir yardım lazım. Aşağıdaki kodlari ile sadece 1. ürünü kaydedebiliyorum. 2. ürün kaydolmuyor. Döngüye nasıl sokacağız bu kodu. Bu arada form'daki input name'lerinin hepsinin adını "sepetform" koydum. "$dizi" ile hepsini tek seferde çekiyorum. "Execute" alanında ise bütün alanları yazdırıyorum. Ama sadece ilk ürünü kaydediyor. Sepetteki iki ürünü de kaydetmesi lazım. Hemen aşağıdaki şekilde. Yani tek post ile iki ürünü de kaydetmesi lazım. Galiba tek problem foreach'i nasıl kullanacağımı bilemedim.

Ali, Firması, Şehri, İlçesi, Telefonu, E-Postası, Aldığı 1. ürünün Stok Kodu, Aldığı 1. Ürünün Stok Sayısı, Aldığı 1. Ürünün Adı

Ali, Firması, Şehri, İlçesi, Telefonu, E-Postası, Aldığı 2. Ürünün Stok Kodu, Aldığı 2. Ürünün Stok Sayısı, Aldığı 2. Ürünün Adı


if($_POST) {
$dizi = $_POST['sepetform'];

$stmt = $db->prepare("INSERT INTO sepetonaylanan
(sepetonaylanan_adisoyadi,
sepetonaylanan_firmaadi,
sepetonaylanan_sehiradi,
sepetonaylanan_ilcesemt,
sepetonaylanan_telefon,
sepetonaylanan_eposta,
sepetonaylanan_siparisnotlari,
sepetonaylanan_urunadi)
VALUES (?,?,?,?,?,?,?,?)");

$stmt->execute([$dizi[0], $dizi[1], $dizi[2], $dizi[3], $dizi[4], $dizi[5], $dizi[6], $dizi[7]]);
}
 

 

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