01. juli 2011 - 08:39Der er
7 kommentarer og 1 løsning
Brug af komma i forms bliver ikke overført til databasen
Hej
Jeg er ved at lave en database, der har mange indtastninger af beløb fra brugerens side. Disse beløb er oprettet, som decimal(10,2) og vises sådan her; xxx.xx
Mit problem er, at særligt danske brugere ville skrive xxx,xx når de skal bruge decimalerne, men tallet der overføres til DB'en er xxx.00 i alle tilfælde.
P.t. opfordres brugerne til at bruge "." i stedet for ",", men det synes jeg ikke er en ret god løsning.
Jeg tror svaret ligger lige foran mig, men kan ikke rigtig finde det nogen steder. Har også prøvet at søge google og forskellige fora igennem, men har ikke fundet et tilfredsstillende svar.
Det kan altså også give problemer. Hvad nu, hvis brugeren indtaster værdien "7.551,00". Så vil din kode blive til "7.551.00" og det vil jeg mene, at MySQL vil opfatte som "7.51" - altså en helt anden værdi.
Derfor vil jeg starte med at fjerne punktum fra inputtet med str_replace() og derefter udskifte komma med punktum, som du selv foreslår.
Men det giver også problemer, hvis der indtastes i engelsk format, fx. "500.75". Så vil koden ændre sig til "50075".
Med andre ord - så er det næsten umuligt at lave kode, der skal tage højde for både engelske og danske beløbsformatter.
Jeg vil foreslaa: 1) skriv paa siden i hvilket format data skal indtastes 2) valider at data faktisk er i det format (f.eks. med regex) 3) hvis ikke ok saa faar bruger en fejl lige i sylten 4) hvis ok saa gemmer man
Løsningen kan også være noget javascript, som konverterer til korrekt format, når feltet forlades. Jeg bruger fx. i mine danske tal-felter et lille script, som konverterer inputet til dansk format. Fx. 900 = 900,00 9999 = 9.999,00 20,2 = 20,20
Men så skal alle skrive i dansk format - og ingen i engelsk :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.