Datum ve formuláři - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

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 "
2001-03-21
"; pdate("2001-03-21","den","mesic","rok",0); echo "
"; pdate("2001-03-21","den","mesic","rok",1); echo "
"; pdate("dnes","den","mesic","rok",1); echo "
"; pdate("nezalezi","den","mesic","rok",1); echo "
"; ?>
2001-03-21



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

Tématické zařazení:

 » Rubriky  » PHP  

 » Rubriky  » Web  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: