Jo, det kan såmænd godt lade sig gøre, men formaterede datoer indtastes i følge al erfaring i de særeste formater. Derfor bruger jeg somregel denne løsning, som er velafprøvet - også ved deciderede brugertest med både video, eye tracking og efterfølgende samtale:
<?php
function datePick($years, $expectedYear=0) {
$thisYear = date('Y');
$firstYear = $thisYear-$years;
$expectedYear = $expectedYear>0 ? $thisYear-$expectedYear : false;
$aHTML = array();
echo $expectedYear.'<hr>';
$aHTML[] = '<select name="day">';
for ($i=1; $i<32; $i++) {
$aHTML[] = '<option value="'.$i.'">'.$i.'</option>';
}
$aHTML[] = '</select>';
$aHTML[] = '<select name="month">';
for ($i=1; $i<13; $i++) {
$aHTML[] = '<option value="'.$i.'">'.$i.'</option>';
}
$aHTML[] = '</select>';
$aHTML[] = '<select name="year">';
for ($i=$thisYear; $i>=$firstYear; $i--) {
$selected = ($expectedYear && $expectedYear===$i) ? ' selected' : '';
$aHTML[] = '<option value="'.$i.'"'.$selected.'>'.$i.'</option>';
}
$aHTML[] = '</select>';
return implode('', $aHTML);
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
<p><?php echo datePick(80, 30) ?></p>
</body>
</html>
Funktionen tage to argumenter. Det første angiver, hvorlangt tilbage i tiden pickeren skal begynde. Andet argument er valgfrit og angiver, hvilket år pickeren skal forudvælge. Er der f.eks. tale om et site, hvor brugere i 30-års alderen forventes at oprette sig, kan det passende være i nærheden af 30. Så slipper brugeren for at rode en masse år igennem.
Løsningen er naturligvis ikke skudsikker, da der er mulighed for 28, 29, 30 og 31 dage i en måned, men en bruger kan jo også indtaste
45-14-1955 i et tekstfelt =)
Prøv den, og se om du ønsker at bruge den. Ellers finder vi ud af noget andet.