Autor | Zpráva | ||
---|---|---|---|
Manny Profil * |
#1 · Zasláno: 8. 4. 2011, 10:25:23
Mám v db tabulce na sloupci datum:
16. - 17.Dubna 20.Dubna Pomocí date a explode zjistím datum a rozdělím měsíc a hlavně den do pole ($cast[0]). V databázi bych potřeboval vybrat 3 nejbližší položky větší než je dnešní datum. Pokusil jsem se o něco takového. Samozřejmě to nefunguje. $sql = "SELECT datum, hodina, text FROM program WHERE datum > LIKE '$cast[0]%'"; Pomohl by mi někdo s tím dotazem? |
||
ninja Profil |
#2 · Zasláno: 8. 4. 2011, 10:28:50
Máte špatně navrženou strukturu databáze. Takhle se datum neukládá, je na to speciální datový typ. Čím dříve to změníte, tím lépe, protože jinak budete stále narážet na komplikace.
|
||
Manny Profil * |
#3 · Zasláno: 8. 4. 2011, 11:22:26
ninja:
To já vím, že ideální by bylo Date format. Ale jak mám ukládat to rozmezí od do? |
||
Taps Profil |
#4 · Zasláno: 8. 4. 2011, 11:25:02
Manny:
uplně jednoduše v databázi si vytvoříš např. 2 sloupečky s názvem začátek a konec a do nich budeš ukládata patřičné datumy |
||
Manny Profil * |
#5 · Zasláno: 8. 4. 2011, 11:34:12
Taps:
„uplně jednoduše v databázi si vytvoříš např. 2 sloupečky s názvem začátek a konec a do nich budeš ukládata patřičné datumy“ Aha... To by možná šlo:-)) Ale jak teda s tím sql? |
||
ninja Profil |
#6 · Zasláno: 8. 4. 2011, 11:53:12
Jakmile budete mít datum v odpovídajících sloupcích, je to jednoduché:
SELECT * FROM tabulka WHERE datum > NOW() ORDER BY datum LIMIT 3; |
||
Kajman_ Profil * |
#7 · Zasláno: 8. 4. 2011, 12:32:52
SELECT * FROM tabulka WHERE IFNULL(datum_konec,datum_zacatek) >= CURDATE() ORDER BY datum_zacatek LIMIT 3; S tím, že místo curdate, je lepší dát datum z php, aby se dala využít sql cache. |
||
Manny Profil * |
#8 · Zasláno: 8. 4. 2011, 13:42:40
Díky všem. Už jsem použil ninjovo řešení s tím, že jsem udělal 2 sloupce od a do. Ale je fakt, že musím ještě podmínkou zjištovat, jestli $do není nulová, v případě, že není rozmezí. Kajmanův příklad už to asi řeší přímo v sql.
|
||
ninja Profil |
#9 · Zasláno: 8. 4. 2011, 14:02:37
Manny: Pokud ten dotaz pokládáte často, je opravdu lepší místo CURDATE() nebo NOW() vložít přímo konkrétní datum vytvořenév PHP. MySQL pak umí lépe cacheovat dotaz.
|
||
Časová prodleva: 13 let
|
0