12. december 2004 - 00:37Der er
8 kommentarer og 1 løsning
Korrekt dato / dato validering - ASP/MySQL
Jeg har et html-form-inputfelt med plads til 10 char. I dette felt skriver man en dato, men da brugeren kan anvende disse 10 char yderst kreativt kan de finde på at angive datoen på mange forskellige formater "2004-12-11", "11-12-2004", "20041211" osv osv.
Yderligere skal datoen gemmes/hentes i et MySQL felt af typen Date, dvs MySQL vil have værdien "2004-12-11" for a kunne omdanne til en SQL date.
Er der en sikker måde at teste og omforme brugerens input, så datoen altid læses korrekt (uanset input format) ?
Regulære udtryk er godt. Men der er et problem mellem dansk og udansk skrivemåde. Betyder "11-12-2004" nu 11. december eller 12. november? Hvis du kan bestemme dig for det, kan det nok grejes ;)
Du kan jo lege lidt med dette eksempel. Det kunne nok laves en anelse smarter, men regulære udtryk i stenalder-ASP er ret kluntede, desværre.
<%
function two(s) if len(s)=1 then two="0" & s else two=s end if end function
function datotjek(dato) dim regex,matches,match set regex = new regexp regex.pattern = "^ *([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) *$" regex.global = false regex.ignorecase = false
set matches = regex.execute(dato)
if matches.count>0 then set match=matches(0) datotjek=match.submatches(0) & "-" & two(match.submatches(1)) & "-" & two(match.submatches(2)) set matches=nothing exit function end if set matches=nothing
if matches.count>0 then set match=matches(0) datotjek=match.submatches(0) & "-" & two(match.submatches(1)) & "-" & two(match.submatches(2)) set matches=nothing exit function end if set matches=nothing
if matches.count>0 then set match=matches(0) datotjek=match.submatches(2) & "-" & two(match.submatches(1)) & "-" & two(match.submatches(0)) set matches=nothing exit function end if set matches=nothing
Ups, den sidste skal ikke være regex.pattern = "^ *([0-9]{1,2})-?([0-9]{1,2})-([0-9]{4}) *$" men regex.pattern = "^ *([0-9]{1,2})-([0-9]{1,2})-([0-9]{4}) *$"
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.