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)
{
$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;
}
bu fonksiyonu arayüz kodlarında kullanmak için;
$deger1=temizle("$deger1"); //değer1i temizle fonk. ile çağırdık.
$sonFiyat=number_format($deger1,2,",","."); //bu format türkiye para birimi için geçerli.
veritabanına kayıt yaparken kullanacağınız değişken
$sonFiyat değişkenidir.
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.