Bir proje hazırlıyorsanız,dışardan kullanıcıya para birimi girdirmek istiyorsanız ve bunu nasıl yapacağınızı bilmiyorsanız; mysql veri tipi ne olacak ? dışardan para birimini , (virgüllü) mü girsek . (noktalı) mı girsek veya girdirsek mi vs diyorsanız bu makale tam size göre.
Aşağıdaki temizle fonksiyonu dışardan girilen değeri düzenler, şimdi satır satır inceleyelim.
function temizle($veri)bu fonksiyonu arayüz kodlarında kullanmak için;
{
$veri1=substr($veri,0,-3); //Virgülden önceki değeri veri1 değişkenine alıyoruz.
$veri2=substr($veri,-3,3); //virgül dahil son 3 karakteri veri2 değişkenine alıyoruz.
$veri1=str_replace(",","",$veri1); //veri1 deki varsa ,(virgül) karakterini sildiriyoruz.
$veri1=str_replace(".","",$veri1); //veri1 deki varsa .(nokta) karakterini sildiriyoruz.
$veri2=str_replace(",",".",$veri2); //veri2 deki varsa ,(virgül) karakterini noktaya çeviriyoruz.
$son=$veri1.$veri2; //ayarları yaptıktan sonra iki sayıyı birleştirip son değişkeninde yolluyoruz.
return $son;
}
$deger1=temizle("$deger1"); //değer1i temizle fonk. ile çağırdık.veritabanına kayıt yaparken kullanacağınız değişken $sonFiyat değişkenidir.
$sonFiyat=number_format($deger1,2,",","."); //bu format türkiye para birimi için geçerli.
1.365,96 sayisi için işlemler şu şekilde ilerleyecek
önce;
veri1=1.365
veri2=,96
daha sonra;
veri1=1365
veri2=.96 olacak
sonra bu sayılar 1365.96 olarak $son değişkeninde yollanacak.
bu değer number_format fonksiyonuna girecek sondan 2 basamak aktif olacak şekilde son 2 rakam virgül ondan öncekiler . olacak şekilde ayıracak. yani 1.365,96 olarak database e yazıcaktır.
Mysql Sutun veri tipi ise varchar(255) optimum seviyededir. Bunu kullanmanız önerilir. Decimal,float vs belli bir seviyeden sonra uçuyor.
İyi çalışmalar.
Bu iyide sql sum ile sayarken küsüratları saymıyor?
YanıtlaSilHayır, sayıyor. VARCHAR için SELECT SUM(????) FROM ??? kullanırsanız sayacaktır. Sayıyor da.
YanıtlaSil