Autor | Zpráva | ||
---|---|---|---|
starburst Profil |
#1 · Zasláno: 16. 7. 2008, 12:04:58
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 |
#2 · Zasláno: 16. 7. 2008, 12:12:38
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 |
#3 · Zasláno: 16. 7. 2008, 12:52:50
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 |
#4 · Zasláno: 16. 7. 2008, 13:12:16
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 |
#5 · Zasláno: 16. 7. 2008, 13:15:49
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 |
#6 · Zasláno: 16. 7. 2008, 18:51:36
to P_T_:
jo ten kalendář je uplně nejlepší asi... hodis mi sem prosim zdroj? |
||
P_T_ Profil |
#7 · Zasláno: 17. 7. 2008, 06:20:09
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 |
#8 · Zasláno: 17. 7. 2008, 09:10:47
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 |
#9 · Zasláno: 17. 7. 2008, 10:01:08
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 |
#10 · Zasláno: 17. 7. 2008, 10:04:20
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 |
#11 · Zasláno: 17. 7. 2008, 10:31:07
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 |
#12 · Zasláno: 17. 7. 2008, 11:09:56
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 |
#13 · Zasláno: 17. 7. 2008, 11:37:04
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 |
#14 · Zasláno: 17. 7. 2008, 11:52:32
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 |
#15 · Zasláno: 17. 7. 2008, 12:12:18
super... je to naprosto dokonalý - děkuji P_T_ už vše funguje jak ma...
|
||
P_T_ Profil |
#16 · Zasláno: 17. 7. 2008, 12:22:20
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 |
#17 · Zasláno: 17. 7. 2008, 13:21:04
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...
|
||
Časová prodleva: 16 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0