Autor Zpráva
Manny
Profil *
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
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 *
ninja:
To já vím, že ideální by bylo Date format. Ale jak mám ukládat to rozmezí od do?
Taps
Profil
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 *
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
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 *
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 *
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0