23. august 2009 - 16:05Der er
15 kommentarer og 1 løsning
Beløbsformatering - Fra dansk til engelsk og modsat
Jeg har nogle inputfelter, hvor der skal angives beløb i danske kroner. Men da jeg gemmer i MySQL's decimal-type, skal jeg konvertere tallet til engelsk, når jeg gemmer. Og når jeg på en tilpasningsside skal give mulighed for at rette beløbene, henter jeg fra MySQL og konverterer derfor fra engelsk til dansk.
Nogen der har nogle effektive funktioner.
Jeg har disse, men specielt dansk-engelsk virker ikke perfekt. Fx vil indtastning 9.00 resultere i 900,00
Fra Dansk til engelsk function da_en($konverter_da_en){ $konverter_da_en = str_replace(".", "", $konverter_da_en); $konverter_da_en = mysql_real_escape_string(str_replace(",", ".", $konverter_da_en)); return $konverter_da_en; }
Og fra engelsk til Dansk: $timeloen = number_format($timeloen, 2, ',', '.');
Jeg tror vi misforstår hinanden. Jeg fjerner jo netop tusindtalsseperatoren og bytter om på . og ,. Se min funktion ovenfor, hvor jeg gør det. Problemet er, at hvis der fx. skrives 9.00, så vil det resultere i 900.
#3 Jeg fjerner jo tusindtalsseperatoren, inden jeg bytter om på komma og punktum.
Hvis der fx. er indtastet dette beløb: 14.255,45
Så fjerner jeg først punktum, så det er: 14255,45 Derefter ændrer jeg komma til punktum, så det er 14255.45 Herved har jeg ændret fra dansk til engelsk og kan gemme korrekt i MySQL.
Hvis jeg ikke fjerner punktum først, så vil tallet være 14.255.45 Og det er jo ikke valid.
Synes godt om
Slettet bruger
23. august 2009 - 17:07#6
Jeg er helt enig med dig i at vi misforstår hinanden ;-) Og nu er jeg tydeligvis MEGET forvirret.
Du siger: "hvis der fx. skrives 9.00, så vil det resulterer i 900"
Og så tænker jeg, det er da forkert at skrive 9.00, når du fortæller det man skriver i input feltet er dansk format, altså ville det rigtige være 9,00 hvis det er 9kr du mener. Det du gør lige nu er at du kører 9.00 igennem din funktion, først fjerner du alle punktummer og bagefter udskifter du kommaerne med punktummer. Så 9.00 bliver til 900, og så sker der ikke mere.
#6 Koden til at konvertere fra dansk til engelsk virker perfekt, så længe der indtastes efter danske regler. Fx 12.455,45 eller 900,45 eller 900 virker fint.
Jeg vil bare gerne have mit script til at fange nogle fejlmuligheder, hvis der indtastes forkert fra brugerens side.
Fx hvis brugeren indtaster efter engelske regler vil 9.00 resultere i 900, og 900.00 vil resultere i 90000. Eller ved en simpel indtastningsfejl, vil 9.000.00 resultere i 900000.
Jeg kan selvfølgelig fange nogle fejl med noget php-validering. -Hvis der er sat et punktum, så skal der altid være 3 tal bagefter. -Der må ikke være 2 punktummer i tallet -Osv.
Jeg vil bare høre jeres erfaringer. Jeg har nok ikke beskrevet det tydeligt nok, da tråden har fået en hel anden drejning end ønsket. Beklager forvirringen.
Evt. lade formularen dele sig over to felter, hele beløb og komma beløb, og derfor INGEN punktum eller komma
Synes godt om
Slettet bruger
23. august 2009 - 19:34#10
Quote "Jeg har nogle inputfelter, hvor der skal angives beløb i danske kroner."
Når jeg læser ovenstående quote så forstår jeg ikke helt hvorfor du overhovedet gider bekymrer dig om de problemer du beskriver :) Men hvis du vil have systemet til at virke med 'engelske' beløb også, så ville jeg også lave nogle forholdsregler under valideringen af beløbet ligesom showsource og du selv har nævnt.
#10 Jeg vil gerne eliminere fejlmulighederne, og da jeg ikke er 100% befaren i PHP, kunne det være, at der fandtes nogle andre oplagte løsninger.
Systemet skal IKKE virke med engelske beløb, men jeg er nødt til at konvertere dem fra dansk til engelsk, når jeg gemmer i MySQL.
Jeg konkluderer nu, at jeg kan lave nogle ekstra valideringer. Har I et bud på, hvordan jeg sikrer, at der ikke er 2 punktummer i beløbet, og hvis der er sat et punktum, så skal der være 3 cifre efter det.
Jeg kan oplyse, at jeg har lavet en løsning med javascript, som tilpasser det indtastede, når feltet forlades. Jeg anvender dog fortsat PHP.
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.