Autor Zpráva
starburst
Profil
zdravím,
potřebuji aby mi uživatel zadal datum a potrebuji ho uložit do databaze.
problem je v tom, že do databaze se nic neulozi... radek v tabulce ma parametry date ale klasicky format je 0000.00.00 a pokud uzivatel nezada datum presne v tomto formatu tak se vlozi jenom nuly... jak udelat aby mohl zadat datum jakkoliv a ono se samo prevedlo vzdy do tohoto formatu... tzn kdyz zada dd.mm.rrrr nebo rrrr.mm.dd a nebo dokonce dd.mm.rr
děkuji za radu
Alphard
Profil
možná strtotime(), ale má své meze, a následně date()
ale lepší by mohlo být uživateli napovědět, jak to zapsat
např. Datum narození (ve formátu DD. MM. RRRR): <input type=...>
nebo Datum narození: den <input type...> měsíc <input type...> rok <input type>
Joker
Profil
starburst
Nejbexpečnější formát vložení data je: RRRR-MM-DD, například 2008-07-16

Pokud uživatel zadává třeba D.M.RRRR, není takový problém to prostě přeházet.
ninja
Profil
starburst:

1. Musite rozparsovat datum zadane uzivatelem na nejakou rozumnou hodnotu, idealne unix timestamp.
2. V databazi nastavit datovy typ sloupce podle potreb na DATE, DATETIME, TIMESTAMP, atd.
3. Vkladat datum v pozadavanem formatu (2008-07-31, atp.) nebo z unix timestampu pres sql funkci FROM_UNIXTIME().
P_T_
Profil
Já jsem to řešil s kalendářem, ze kterého uživatel vybere ( v českém formátu ) a poté ho otočím a uložím do DB.
Náhled je na adrese http://prodejvyfuku.cz/uredni_deska/admin/index.php . Není funkční vkládání, protože jsem ho promazal, ale jako mustr by ti mohl postačit.
PS: odkaz časem smáznu
starburst
Profil
to P_T_:
jo ten kalendář je uplně nejlepší asi... hodis mi sem prosim zdroj?
P_T_
Profil
starburst
Ten zdroj na kalendář si stáhni z toho odkazu ( datum.js ) . Než vložím datum do DB, tak ho přeformátuju.
vsprintf('%3$d-%2$02d-%1$02d', explode('-', DATUM));

Kdyby se ti to nedařilo, tak sem napiš.
Dranel
Profil
Joker
Takže když zadám 1.6.1995 tak ty víš, co je měsíc a co den? Myslím, že právě tohle je největší problém. Ostatní jde pořešit.

starburst
Nejlepší je opravdu uživateli sdělit, jak si to přeješ. Tzn. tak, jak napsal na úvod Alphard.
starburst
Profil
To Dranel: ja vim... ale lidi sou hloupí... takze sem usoudil ze tim kalendarem to bude nejlepsi...a taky to dobre vypada... kazdopadne je to asi nejjednodussi reseni jim napsat jak to maji dat... ale jak rikam...lidi sou hloupy a pak by byl problem...

P_T_
ten kalendar funguje suprove akorat nevim jak ho nastylovat... zobrazi se mi uplne pruhlednej jenom ten text a neni na nem videt dnesek... jinak kdyz na ten den kliknu tak se mi normalne vlozi do toho policka coz je super ale pak jeste nevim jak to preformatovat...
zkousel jsem eregreplace ale neumim s ti delat takze sem neuspel a to vsprintf mi taky nefunguje...
starburst
Profil
jestli to chcete videt jak mi to dela tak se muzete podivat tady a jako prihlasovaci udaje zadejte guest a heslo guest
pak si date pridat zakazku a tam to je... a jak se to vlozi do databaze je kdyz date prohlizet sve hodiny
Joker
Profil
Dranel
Takže když zadám 1.6.1995 tak ty víš, co je měsíc a co den? Myslím, že právě tohle je největší problém. Ostatní jde pořešit.
Ahá, na to jsem zapomněl:
Dát uživateli možnost zadat datum jakkoliv je blbost. Příklad: přijde mi datum: 08-07-01. Nebude-li systém oplývat telepatií, v životě nezjistí, o jaké datum jde.

Takže jsou dvě možnosti:
- donutit uživatele zadat nějaký pevný formát, třeba den, měsíc rok
- udělat zvláštní políčka pro den, měsíc a rok.
Str4wberry
Profil
Osobně doporučuji vyplnit pole aktuálním datem ve chtěném formátu. Plus do budoucna přidat <input>u type='date'.

vložení datumu do databaze
Vložení data do databáze.
P_T_
Profil
starburst
stáhni si styl ../css/screen.css
$DatumEN = vsprintf('%3$d-%2$02d-%1$02d', explode('-', $_POST["Nazev_policka_ve_formulari"]));
echo $DatumEN;
P_T_
Profil
ještě bych to v tvém případě udělal tak, že zrušíš tu ikonu kalendáře a dáš událost onclick na ten formulář ( viz předělaný ukázkový odkaz )
starburst
Profil
super... je to naprosto dokonalý - děkuji P_T_ už vše funguje jak ma...
P_T_
Profil
starburst
nemáš zač :-)
Ještě malinká připomínka, když dám prohlížení, tak se datum zobrazí v ang. formátu. Udělej znovu před zobrazením konverzi ( stejně ), aby to vypadalo stejně, jako při vkládání.
starburst
Profil
jj... uz jsem to udelal... ja sem to tam mel ale mel sem v tom chybu a nemohl sem ju najit... ale uz sem to odstranil a uz to vali...
Toto téma je uzamčeno. Odpověď nelze zaslat.