v2.5.2
Giriş yap

FOREACH

t00000001
635 defa görüntülendi ve 1 kişi tarafından değerlendirildi

şu kodu yazıyorum

if (isset($_POST['siparistamam'])) {
       $isimsy=$_POST['isimsoyisim'];
       $sirket=$_POST['sirket'];
       $adres=$_POST['adres'];
       $sehir=$_POST['sehir'];
       foreach ($_POST['alan'] as $key => $value) {
        $db->query("insert into siparis(alan_kadi) values ('$value')");
       }
       foreach ($_POST['veren'] as $key => $value) {
        $db->query("insert into siparis(veren_kadi) values ('$value')");
       }
       foreach ($_POST['fiyat'] as $key => $value) {
        $db->query("insert into siparis(toplam_tutar) values ('$value')");
       }
       foreach ($_POST['urunid'] as $key => $value) {
        $db->query("insert into siparis(urun_id) values ('$value')");
       }
       $db->query("insert into siparis(isimsoyisim,adres,sirket,sehir) values('.$isimsy.','.$adres.','.$sirket.','.$sehir.')");
 
}

//gelen değerlerin hepsi array eminim

Warning: foreach() argument must be of type array|object, string given in C:\Program Files\Xampp\htdocs\htdocs\Kitapkap\islem.php on line 25

şu hatayı alıyorum nerede hata yapıyorum acaba kurduğum algoritma mı sıkıntılı

Cevap yaz
Cevaplar (3)
tayfunerbilen
1255 gün önce

burada aldığın hata post değerinin array olmamasıyla alakalı dolayısı ile foreach'e sokmadan önce şu şekilde kontrol etmen daha doğru olacaktır;

if (isset($_POST['siparistamam'])) {
   $isimsy=$_POST['isimsoyisim'];
   $sirket=$_POST['sirket'];
   $adres=$_POST['adres'];
   $sehir=$_POST['sehir'];
   if (isset($_POST['alan']) && is_array($_POST['alan'])){
       foreach ($_POST['alan'] as $key => $value) {
        $db->query("insert into siparis(alan_kadi) values ('$value')");
       }
   }
   if (isset($_POST['veren']) && is_array($_POST['veren'])){
       foreach ($_POST['veren'] as $key => $value) {
        $db->query("insert into siparis(veren_kadi) values ('$value')");
       }
   }
   if (isset($_POST['fiyat']) && is_array($_POST['fiyat'])){
       foreach ($_POST['fiyat'] as $key => $value) {
        $db->query("insert into siparis(toplam_tutar) values ('$value')");
       }
   }
   if (isset($_POST['urunid']) && is_array($_POST['urunid'])){
       foreach ($_POST['urunid'] as $key => $value) {
        $db->query("insert into siparis(urun_id) values ('$value')");
       }
   }
   $db->query("insert into siparis(isimsoyisim,adres,sirket,sehir) values('.$isimsy.','.$adres.','.$sirket.','.$sehir.')");
}

ayrıca print_r() ile dump ederek gelen değerlerini kontrol etmen gerek, sen eminsin ama öyle geliyor mu bir kontrolün yok gibi, en basit olarak şöyle bakıp karar ver doğruluğuna;

print_r($_POST);
t00000001
1254 gün önce

aynen tayfun abi kontrol edince hata vermedi geriye bir değer dönmedi gettype ile bakınca string yazıyor ama print r ile yazdırılıyordu aldığım değerleri değiştirerek çözdüm. Teşekkür ederim

qplot
1255 gün önce

4 tane foreach değil 1 tane kullanacaksın