Hej!
Lite tankestillestånd har uppstått.
En användare ska kunna ange ett födelsedatum på sin hund. Min tanke var att göra tre formulärfält; år, månad, dag.
Det slutliga formatet ska vara 0000-00-00
Sedan kontrollerar jag så att år är 4 siffror, månad och dag 2 siffror. Sedan en kontroll med en switch så att rätt antal dagar passar in på aktuell månad.
Problem uppstår vid skottår.
Min fråga, hur löser man valideringen på smartast sätt?
nicclasMedlem sedan feb. 20001 050 inlägg Denna funktion är lite smart ;) Tyvärr funkar den bara för årtal mellan 1970 och 2038! Hur gammal kan en hund bli?
<?
function verifieraDatum($datum){
if ($datum==date("Y-m-d",strtotime($datum)))
return "ok";
else
return "ej ok";
}
echo verifieraDatum("2002-02-28")."\n";
echo verifieraDatum("2002-02-29")."\n";
echo verifieraDatum("2000-02-29")."\n";
?>
/nicclas - https://www.frisim.com
Tack nicclas, den älsta hunden jag känner till blev 17 år.
Jag försökte mig på nedanstående:
<?php
$dog_bday ="1985-10-11";
$born = (isset($dog_bday) && eregi("/^(\d{4})-(\d{2})-(\d{2})$/",$dog_bday));
if (!$born) print ("Fältet 'födelsedatum' är inte rätt ifyllt.<br>");
?>
Men den returnerar false hela tiden. :(
nicclasMedlem sedan feb. 20001 050 inlägg Bara 17 år, schyyst då kan du ju använda min funktion, den funkar ju upp till 32 år gamla (hundar)! Prova så här istället (med preg_match!)
<?
$dog_bday ="1986-02-29";
$born = (isset($dog_bday) && preg_match("/^(\d{4})-(\d{2})-(\d{2})$/",$dog_bday));
if (!$born)
echo "fel";
else
echo "ok";
?>
(PS [PHP]-taggen suger, den tar fortfarande bort backslash-tecken, skall ingen fixa den snart?)
/nicclas - https://www.frisim.com
Klockrent nicclas, bugar och tackar! :D