Autor | Zpráva | ||
---|---|---|---|
Daviid Profil * |
#1 · Zasláno: 19. 2. 2015, 16:23:57
Dobrý den,
v inputu zadávám datum ve formátu DD.MM.YYY, používám na to datumpicker. Do databáze se ovšem, když zadám dnešní datum 19, tak se to zapíše jako rok 2019, kvůli tomu, že v databázi se datum ukládá YYY.MM.DD, lze nějak docílit při ukládání, aby se mi datum z DD.MM.YYY převedl na YYY.MM.DD? Vím, že si to v datepickeru můžu přehodit to formátování, ale lepší je číst datum 19.02.2015 než 2015.02.19 |
||
juriad Profil |
Do databáze se ukládá jako 2015-02-19. Pokud to vezme něco jiného, máš v tom okamžiku jen štěstí.
date("Y-m-d", strtotime("19.2.2015")); Odstraněno echo. |
||
Daviid Profil * |
#3 · Zasláno: 19. 2. 2015, 16:32:09 · Upravil/a: Daviid
juriad:
Nejde mi o vypisování právě, ale o ukládání Teď mám: ... ... 'datum' => $_POST["datum"], ... ... používám dibi Aha, takže tím jak vypisuji datum, můžu i ukládat, díky zase o něco chytřejší. Ještě jeden dotaz, když chci ukládat čísla s desetinnou čárkou (místo čárky musí být tečka), tak by se asi měl používat datový typ FLOAT nebo DOUBLE? (to, ale asi umí jen s čárkou a né tečkou, ne?) Momentálně používám datový typ pro to char, tak jeslti to není konina. Díky :) |
||
Amunak Profil |
#4 · Zasláno: 19. 2. 2015, 17:27:14
Daviid:
Rozdíl mezi zápisem s čárkou a tečkou dělá jen "zvyk" (podobně jako u uvozovek). V česku je zvykem oddělovat desetinná čísla čárkou, ve většině světa (přinejmenším v anglii a americe :) se používá tečka, takže se to tak dostalo i do valné většiny programovacích jazyků. V PHP je všechno double, takže používej double i v databázi. Ona výsledná přesnost se stejně může trochu lišit, takže je lepší na to nespoléhat. Obzvlášť věci jako měna (peníze) se musí ukládat jako int, jinak to nadělá paseku (jako float obecně, to zrovna s databází jako takovou nemá moc společného). Co se vlastně pokoušíš ukládat ty? A co, proboha, ukládáš do charu? desetinná čísla? |
||
Daviid Profil * |
#5 · Zasláno: 19. 2. 2015, 17:30:40
Amunak:
ukládám kurzy... ty jsou s tečkou, takže například 1.72, 1.50, 2.00 atd |
||
juriad Profil |
Daviid:
Je-li to datum, ukládej to jako DATE. Je-li to datum s časem, ukládej to jako DATETIME. Je-li to celé číslo, ukládej to jako INT. Je-li to nepřesné desetinné číslo, ukládej to jako DOUBLE. Je-li to přesné desetinné číslo, ukládej to jako NUMERIC. Přesné/nepřesné záleží na tom, kolik cifer od toho čísla potřebuješ. Na počet metrů plotu kolem zahrady stačí DOUBLE; na cenu objednávky na fakturu NUMERIC. Je-li to krátký text (vždy krátký), ukládej to jako VARCHAR. Je-li to dlouhý text, ukládej to jako TEXT. Pokud cokoli jiného než text ukládáš jako VARCHAR, pak to děláš blbě. Dej si extra záležet, aby data v databázi měla správný formát - takový který vyhoduje databázi, ne tobě. Ty si to vždy zformátuj, jak se ti zlíbí, při výpisu. |
||
Daviid Profil * |
#7 · Zasláno: 19. 2. 2015, 17:43:58
juriad:
díky moc, ještě mě napadá myšlenka jak to bude u obrázku? Když je ukládám i s koncovkou např. 52.jpg. Používám VARCHAR(50). |
||
Amunak Profil |
#8 · Zasláno: 19. 2. 2015, 18:49:51
Daviid:
Používej to, co se ti hodí pro aplikaci. Pokud ukládáš celé jméno obrázku, možná na to celkově jdeš špatně - když máš nějaký záznam v databázi, typicky má nějaký identifikátor. Proč jako jméno obrázku rovnoou nepoužiješ tento identifikátor? A i kdybys ho použít nemohl, pokud máš pevnou délku názvů (např. vždy jsou xx.jpg), tak zaprvé .jpg můžeš úplně vyhodit, ale i kdyby tam bylo někdy .png nebo .gif, tak můžeš používat CHAR(6), ímž ušetříš asi bajt místa (a pokud jsou všechny sloupce v té tabulce fixní šířky, rapidně urychlíš cokoliv co pracuje s celou tabulkou). Na druhou stranu o moc nejde - pokud nemáš desetitisíce záznamů, takovéhle mikrooptimalizace nemá moc cenu řešit. |
||
Časová prodleva: 9 let
|
0