17. februar 2006 - 18:40Der er
5 kommentarer og 2 løsninger
Validering af beløbsfelt, MySql og PHP
Jeg har en form, hvor der indtastes nogle beløb. Jeg vil gerne sikre mig, at der indtastes med korrekt dansk format - altså med punktum som tusindtalsseparator og komma til decimaler. (hvis der ikke indtastes tusindtalsseparator, må den gerne blive sat), når der springes til næste felt. Tallene skal så gemmes i Mysql, men det er vel med engelsk formatering, da der skal regnes på tallene. Endelig skal tallene vises i et udtræk med dansk format. Udtrækket er lavet i PHP. Nogen der har en opskrift?? Skal I se koden??
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Nedenstående løser første del af dit problem. Kald 'validateNumber' med talstrengen der skal tjekkes; hvis tallet er korrekt returneres dette, evt. tilføjet tusindtalsseparatorer, ellers kastes en fejl som du så kan fange med en 'try-catch':
function validateNumber(str) { var re0 = new RegExp("^([0-9]{0,3})((\\.[0-9]{3})*)(,\\d+)?$","i"); var re1 = new RegExp("^([0-9]{0,3})(([0-9]{3})*)(,\\d+)?$","i"); var arr; if (arr = re0.exec(str)){ return arr[0]; } else { if (arr = re1.exec(str)){ return arr[1]+"."+insertDots(arr[2])+arr[4]; } else { throw "Invalid number"; } } }
function insertDots(str){ var newStr = ""; while (str.length>3){ newStr += str.substr(0,3)+"." str = str.substr(3) } newStr += str; return newStr; }
Ups - denne her er smuttet for mig. Jeg har klaret sagen med "replace" kommandoen og lidt inspiration fra jer. Kan ikke begge sende et svar - så fordeler jeg point mellem jer. På forhånd tak for inspirationen.
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.