$fiyat = 100; // 1₺ olarak gidiyor ve bu fiyat bilgisiyle ödeme başarılı tamamlanıyor. $fiyat = isset($_POST['fiyat']) ? $_POST['fiyat'] : null; // Fiyat verisini böyle çekiyorum, int olarak post etmeme rağmen string oluyor. $fiyat = (int) $fiyat; $fiyat = intval($fiyat); settype($fiyat, 'integer'); // Bu üç yolu da tek tek denedim. echo gettype($fiyat)."-> $fiyat"; // Çıktısı : integer -> 100 Fakat banka bu veri ile işlem yapılmaya çalıştığında hata veriyor. Aynı işlemi ilk satırdaki gibi $fiyat = 100 olarak tanımlarsam işlem gerçekleşiyor.Veriyi Session'dan çekerek de denedim, sonuç yine aynı. Neden kaynaklanıyor, nasıl çözeceğim bir fikrim yok bilgisi olan varsa yardımcı olabilirse teşekkür ederim.
PHP Veri tipi hakkında
7
●87
- 23-12-2021, 15:52:12Kimlik doğrulama veya yönetimden onay bekliyor.Merhaba, sanal pos entegrasyonu sırasında basit ama saçma bir hata ile karşılaştım. Bankaya sorgu gönderilirken fiyat değeri integer olarak gönderilmeli. Fiyat verisini ödeme sayfasına post ediyorum. Fiyatlar veritabanında 99,90 tarzı kayıtlı olduğu için veritabanından çekerken string olarak alıp virgülü siliyorum ve int haline getirip post ediyorum. ( Banka 1.00₺'lik ödeme için gönderilen fiyatın 100 olmasını talep ediyor. ) Sorun şu ki ben fiyatı ne yaparsam yapayım kabul etmiyor. Şöyle örnek vereyim.
- 23-12-2021, 15:54:53Üyeliği durdurulduVeritabanında string olarak değil de float olarak tutun düzelir sanırım hocam
- 23-12-2021, 15:59:17DB'deki fiyat tipini VARCHAR olarak belirtmişim, onu floata çevirip deneyeceğimPolat adlı üyeden alıntı: mesajı görüntüle
- 23-12-2021, 16:01:31başta bunu yapman hatalı zaten. double(x,2) || float(x,2) tipinde tutmalısın fiyatlarını hangisi varsa iştepetri adlı üyeden alıntı: mesajı görüntüle
mysql kullanmayalı çok oldu
- 23-12-2021, 16:11:25
$fiyat = (int) $fiyat; $fiyat = (int)number_format($fiyat,2,"","");
Bu şekilde bir dener misin - 23-12-2021, 18:40:13Denedim olmadı.salihbey24 adlı üyeden alıntı: mesajı görüntüle
Polat adlı üyeden alıntı: mesajı görüntüle$araToplam = (float)$araToplam; if ( $araToplam < 0 ) { $araToplam *= 10; } elseif ( $araToplam > 0 ) { $araToplam *= 100; } echo gettype($araToplam)."-> $araToplam"; settype($araToplam, "integer"); echo gettype($araToplam)."-> $araToplam"; /* ÇIKTI: double -> 90 float -> 90 */Hala hata veriyor, integer'a çevirmeden direk float gönderdim yine aynı.
mysql kullanmayalı çok oldu