Avatar billede straszek Praktikant
07. januar 2006 - 21:30 Der er 10 kommentarer og
1 løsning

validering af dato

Jeg har i en form et felt hvor brugere kan indtaste en dato i format ddmmåå f.x. 010106.

Jeg mangler en funktion/kode til at tjekke at der indtastet en gyldig dato, og som udskriver en fejl meddelelse hvis den indtastede dato er i et ugyldigt format


Søren
Avatar billede cronaldo Nybegynder
07. januar 2006 - 22:27 #1
$dato = $_POST['dato'];

$datodag = substr("$dato", 0, 2);
$datomaaned = substr("$dato", 2, 4);
$datoaar = substr("$dato", 4, 6);

if($datomaaned == "01"){
  if($datodag > "32"){
    echo "Der er altså ikke over 32 dage i januar!";
  } else {
    echo "$datomaaned";
} else if($datomaaned == "02"){
  if($datodag > "28"){
      if($datoaar == "2004" OR $datoaar == "2000" OR $datoaar == "1996" (OSV!!!)){
        echo "$datomaaned";
      } else {
        echo "Der er ikke over 28 dage i februar i dét år!";
      }
  } else {
  echo "$datomaaned";
} else if($datomaaned == "3"){
... og sådan kan vi jo blive ved? :) Det var mit princip, ved ikke om du forstår det? :)
Avatar billede nielle Nybegynder
07. januar 2006 - 22:42 #2
if (isset($_POST['dato']))
{
    $dato = $_POST['dato'];

    if (strlen($dato) != 6)
    {
        echo "Ulovlig dato.";
    }
    else
    {
        $datoDag = (integer) substr("$dato", 0, 2);
        $datoMaaned = (integer) substr("$dato", 2, 4);
        $datoAar = (integer) ("20" . substr("$dato", 4, 6));

        $dato = mktime(0, 0, 0, $datoMaaned, $datoDag, $datoAar);

        if ($dato == -1)
        {
            echo "Ulovlig dato.";
        }
        else
        {
            echo "Lovlig dato: " . date("j/n-Y", $dato));
        }
    }
}
Avatar billede cronaldo Nybegynder
07. januar 2006 - 23:01 #3
if (isset($_POST['dato']))
{
    $dato = $_POST['dato'];

<< no offense, men jeg ville da nok bytte de to rundt, så der stod mindre = mindre kode at læse = mindre load tid? B)


$dato = $_POST['dato'];
if (isset($dato))
{
 

- Jeg ved godt det er minimalt; men lidt har vel også ret?
Avatar billede nielle Nybegynder
07. januar 2006 - 23:06 #4
Ja, jeg har i hvertfald ikke nogen seriøse indvendinger imod sådan en lille opimering. :^)
Avatar billede erikjacobsen Ekspert
07. januar 2006 - 23:26 #5
mktime kan ikke bruges til validering.
mktime(0, 0, 0, 12, 32, 1997)  giver 1. januar 1998 - se http://php.net/mktime.
Og man skal bruge nielles måde med isset - lidt bøvlet, men det eneste korrekt.
Avatar billede hmortensen Nybegynder
08. januar 2006 - 01:02 #6
Kan bruge checkdate()
if (checkdate($maaned, $dag, $aar))
{
  //ok
} else {
  //invalid dato
}
Avatar billede nielle Nybegynder
23. januar 2006 - 19:50 #7
Lukketid?
Avatar billede straszek Praktikant
13. marts 2006 - 15:51 #8
ja
Avatar billede nielle Nybegynder
13. marts 2006 - 19:27 #9
Hvem vil du have et svar af?
Avatar billede straszek Praktikant
13. marts 2006 - 19:50 #10
cronaldo
Avatar billede straszek Praktikant
25. marts 2006 - 15:06 #11
lukker
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