Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
PHP
Datum ve formuláři
27. března 2000, 00.00 | Funkce pro tisk data ve formuláři pomocí select boxů. Možnost nastavení defaultní hodnoty, dnešního data a null hodnoty.
Tento tip se zabývá zdánlivě triviální záležitostí jako je vkládání datumu ve formuláři.
Nejjednodušší způsob je použití textového pole s poznámkou v jakém tvaru datum očekáváme (většinou DD.MM.YYYY).
Přečtení takové informace ja pak jednoduché. Má to však své ale.
Existuje nenulová množina uživatelů kteří netuší že datum má nějaký formát, místo tečky píší čárku (viz numerická klávesnice ve Windows s českou klávesnicí) ap. Výsledkem je buďto složitý parser který se snaží všechny tyto odchylky zachytit, či nepřijetí dat a následné dotazy proč danný formulář nefunguje..
Řešením je použití následující funkce která vygeneruje select nabídky, tedy bez možnosti jakéhokoliv vyplňování. Součástí je nastavení datumu jako default (např. pro editaci, očekáváme datum ve formátu z mysql databáze), či "dnes" pro dnešní datum.
Na výběr pak máme výpis měsíce v číselné či textové podobě.
'xxxx'*/
"leden",
"únor",
"březen",
"duben",
"květen",
"červen",
"červenec",
"srpen",
"září",
"říjen",
"listopad",
"prosinec");
function
pdate($date, $dname="den", $mname="mesic", $yname="rok", $use_mesic=0)
{
/* ocekavam datum ve formatu: YYYY-MM-DD (tj. z SQL) */
if($use_mesic) global $mesic;
$d=getdate(time());
$y=$d["year"]; //jaky mame rok
switch($date) {
case "nezalezi":
$ne=1;
$regs[1]=$regs[2]=$regs[3]=0;
break;
case "dnes":
$regs[2]=$d["mon"];
$regs[3]=$d["mday"];
$regs[1]=$d["year"];
break;
default:
if (!ereg("([0-9]{4}-([0-9]{1,2})-([0-9]{1,2}))",$date,$regs))
{
echo "Chybny format datumu: $date";
return;
}
}
echo "\n";
echo "\n";
echo "\n";
}
echo "";
?>
Poznámky:
- Script na této stránce není funkční, proto na výpisu dnešního data je 26. března 2000, tj. datum vzniku článku.
- Další možnost řešení je rozdělení datumu na tři textová input pole. Dosáhnete objemově menších stránek, ale select verze je dle mého názoru designově lepší.
- Nevýhodou je možnost vložení nesmyslného data. (31.2.2000 ap.) Ošetření dle potřeb, např. při vkládání omezujících podmínek to příliš nevadí..
- Praktická ukázka: www.insider.cz
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007