Avatar billede compac Seniormester
26. juli 2004 - 19:40 Der er 8 kommentarer og
1 løsning

Intastning af dato

Jeg efterlyser en måde man kan indtaste en dato i et felt - og derefter få den valideret. Det skal naturligvis være sådan at det kun er muligt at indtaste det format af datoen som er fastsat i forvejen: 99-99-9999.
Avatar billede taskmgr Nybegynder
26. juli 2004 - 19:57 #1
Regner med at det er dd/mm/yyy.
Her bliver der tjekket om:
- Året er mellem 1 og 32767 inkl.
- Måneden er mellem 1 og 12 inkl.
- Dagen passer med antallet af dage i den angivne måned. Der bliver også taget højde for om det er skudår.

<?php
function valider_dato($dato_str){
    $expl = explode("-", $dato_str);
    if(checkdate($expl[1], $expl[0], $expl[2])){
        echo "Den er god nok.";
    }else{
        echo "Nej den går ikke.";
    }
}

// eks.
valider_dato("25-10-1984");
?>
Avatar billede compac Seniormester
26. juli 2004 - 20:59 #2
Hvordan skal koden til selve inputfeltet på formularen se ud?
Avatar billede taskmgr Nybegynder
26. juli 2004 - 21:05 #3
Det afhænger jo af hvordan din formular ser ud osv, men et hurtigt eksempel ku være:

<?php
function valider_dato($dato_str){
    $expl = explode("-", $dato_str);
    if(checkdate($expl[1], $expl[0], $expl[2])){
        return TRUE;
    }else{
        return FALSE;
    }
}

if(valider_dato($_POST['dato'])){
  // fortsæt
}else{
  echo "Datoen er ikke af rette format: dd/mm/åååå";
}
?>
Avatar billede compac Seniormester
27. juli 2004 - 14:34 #4
Denne kode i filen indtast.htm:
<html>
<head>
</head>
<body>
<form action="datoval.php" method="get">
<input type="text" name="valider_dato"><br>
<input type="submit" value="Send">
</form>
</body>
</html>

- og denne i datoval.php:

<html>
<head>
</head>
<body>
<?php
function valider_dato($dato_str){
    $expl = explode("-", $dato_str);
    if(checkdate($expl[1], $expl[0], $expl[2])){
        echo $_POST["Den er god nok."]; 
    }else{
        echo $_POST["Nej den går ikke."];
    }
}
?>
</body>
</html>
-skulle vel give noget output på skærmen. Men den er helt blank. Hvad kan årsagen være?
Avatar billede compac Seniormester
27. juli 2004 - 14:36 #5
Skal det være: method="POST" når der er tale om indtastning af data?
Avatar billede taskmgr Nybegynder
27. juli 2004 - 15:15 #6
Af sikkerhedsmæssige årsager vil jeg råde dig til at bruge post metoden.

Dvs. ret til:
<form action="datoval.php" method="post">
i indtast.htm

Og så kan din datoval.php f.eks. se sådan ud:

<html>
<head>
</head>
<body>
<?php
function valider_dato($dato_str){
    $expl = explode("-", $dato_str);
    if(checkdate($expl[1], $expl[0], $expl[2])){
        echo "Datoen er i rette format."; 
    }else{
        echo "Datoen er ikke i det rette format.";
    }
}

if(!empty($_POST['valider_dato'])){
    valider_dato($_POST['valider_dato']);
}else{
    echo "Du har ikke skrevet noget i dato-feltet.";
}
?>
</body>
</html>
Avatar billede compac Seniormester
27. juli 2004 - 15:56 #7
Nu funker det! den tager endda højde for skudår. Smid et svar
Avatar billede taskmgr Nybegynder
27. juli 2004 - 16:59 #8
Ok, det var godt :)
Avatar billede taskmgr Nybegynder
24. august 2004 - 10:35 #9
Lukketid? :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester