webForumDet fria alternativet

Kontrollera datum

4 svar · 305 visningar · startad av bassebhu

bassebhuMedlem sedan nov. 20014 028 inlägg
#1

Hej!

Jag vill att användarna ska kunna lägga in datum i databasen, men det blir fel om man inte anger enligt rätt datumform.

Jag vill att man endast ska kunna skriva enligt:
"2004-01-01 12:00"

Just nu kör jag bara med:

  if(document.matcher.datum.value.length != 16)
 {
  alert('Fyll i korrekt datum!');
  document.matcher.datum.focus();
  return false;
 }

Vilket inte är så hippt :l

Hur är bäst att kontrollera detta? kan man ange att fyra första ska vara siffror, sen streck, sen två siffror, sen streck, sen två siffror till, sen mellanslag, sedan två siffror, kolon och två siffror till hehe?

Tacksi :)

tydalMedlem sedan juni 20033 788 inlägg
#2

Det är ingenting som säger att användern måste fylla i datumet på det viset. Bara att du ska fylla i det så i databasen.

Du kan ju ha två rutor, en för datum och en för tid t.ex.

Själv har jag så att om man fyller i 1 på datum så betyder det i morgon, 2 i övermorgon och -1 i går, -2 i förrgår osv upp till 99. Vid 100 övergår den till att anta att första siffran är månaden och de andra två dagen.

Även för mig måste det läggas in som YYYY-MM-DD HH:MM:SS i databasen, men det är ju absolut inget som säger att användaren måste mata in det så.

bassebhuMedlem sedan nov. 20014 028 inlägg
#3

ok. har du en liten färdig kodsnutt att bjussa på månne? det här med 1 för i morgon osv låter smidigt..

jag använder asp till just det här, men php kan jag översätta lätt. kör du utan javascript-kontroll då? finns alltid sabotörer och klantskallar ju ;) inkl mej själv :D

tydalMedlem sedan juni 20033 788 inlägg
#4

Jag tror inte det hjälper så mycket eftersom jag inte tror asp har lika flexibla datumfunktioner, men här är i alla fall koden:

<?php
  if (isset($_GET['datum'] && strlen($_GET['datum']))
  {
    $datum = $_GET['datum'];
    if (strlen($datum) == 4)
      $datum = date("y") . $datum;
    elseif (strlen($datum) < 3 || strlen($datum == 3 && substr($datum, 0, 1) == "-")
      $datum = date("Y-m-d", strtotime(date("Y-m-d")) + $datum * 86400);
    elseif (strlen($datum) == 3)
      $datum = date("y") . "0" . $datum;
  }
  else
    $datum = date("Y-m-d");
?>
J.N.Medlem sedan apr. 20031 660 inlägg
#5

HEJ!

Vaför krångla till det?

Använd dropdown-rutor, en för respektive dag, månad, år, timme och lämpligt minutintervall.

För de skojare som väljer 31/11 räknar jag om datumvärdet med DateValue i VBscript till 1/12.

hid_pa = Request.Form("hid_pa")
array1 = split(hid_pa,"-")
datum = DateValue(DateSerial(array1(0),array1(1),array1(2)))
Genererad på 368 ms · cache AV · v20260730165559-full.f96bc7eb