| Autor | Zpráva | ||
|---|---|---|---|
| Blížkovský Profil |
Mám kalendář akcí (www.webtrziste.cz) a v tomto kalendáři si chci zpbrazit POUZE akce, keré budou o následujícím víkendu.
v databázi je zapsán "zacatek" jako začátek vložené akce. Jak si vytvořit WHERE, která mi z databáze vypíše jen akce o následijícím víkendu (velikonoční pondělí neřeším) Děkuji za rady. |
||
| abc Profil |
Blížkovský:
Ve zkratce Datum příští soboty: $sobota = date("Y-m-d H:i:s", strtotime("next saturday"));
Datum příští neděle: $nedele = date("Y-m-d H:i:s", strtotime("next sunday 23:59"));
Porovnat, zda je $nedele > $sobota, pokud ne pricist k $nedeli tyden a potom SQL: WHERE zacatek BETWEEN($sobota AND $nedele)
resp. raději než kontrolu $nedele > $sobota bych to udělal asi takto: $nedele = date("w") == 6 ? date("Y-m-d H:i:s", strtotime("next week sunday 23:59")) : date("Y-m-d H:i:s", strtotime("next sunday 23:59")); |
||
| Blížkovský Profil |
#3 · Zasláno: 9. 3. 2013, 17:09:04
abc:
Děkuji MOC, výpis datumu funguje výborně, ještě dělám nějakou chbu v SQL. |
||
| abc Profil |
#4 · Zasláno: 9. 3. 2013, 17:18:41
Blížkovský:
sloupec zacatek je typu datetime? |
||
| Blížkovský Profil |
#5 · Zasláno: 9. 3. 2013, 17:25:44
UNIX_TIMESTAMP(A.zacatek) zacatek,
|
||
| abc Profil |
aha, v tom případě pouze:
$sobota = strtotime("next saturday");
$nedele = date("w") == 6 ? strtotime("next week sunday 23:59") : strtotime("next sunday 23:59"); |
||
| Blížkovský Profil |
#7 · Zasláno: 9. 3. 2013, 17:39:47
nejde, vypisuji celý SQL:
$sobota = strtotime("next saturday");
$nedele = date("w") == 6 ? strtotime("next week sunday") : strtotime("next sunday");
$result = mysql_query('SELECT SQL_CALC_FOUND_ROWS A.id, A.uzivatel, A.obr, UNIX_TIMESTAMP(A.zacatek) zacatek, UNIX_TIMESTAMP(A.konec) konec, A.jazyk, A.misto, A.nazev, A.popis_kratky,A.adr_mapa,T1.nazev typ1Nazev, T1.obr typ1Obr, T2.nazev typ2Nazev, T2.obr typ2Obr
FROM trziste_kalendar_akci A
LEFT JOIN trziste_typy_akci T1 ON A.typ1=T1.id
LEFT JOIN trziste_typy_akci T2 ON A.typ2=T2.id
WHERE zacatek BETWEEN('.$sobota.' AND '.$nedele.') ') ; |
||
| abc Profil |
1) na konci má být A.zacatek
2) okolo dotazu můžeš použít normální uvozovky, ne jednoduché (" vs. ') 3) doporučuji to dělat ve 2 krocích: $sql = "SELECT SQL_CALC_FOUND_ROWS A.id, A.uzivatel, A.obr, UNIX_TIMESTAMP(A.zacatek) zacatek, UNIX_TIMESTAMP(A.konec) konec, A.jazyk, A.misto, A.nazev, A.popis_kratky,A.adr_mapa,T1.nazev typ1Nazev, T1.obr typ1Obr, T2.nazev typ2Nazev, T2.obr typ2Obr FROM trziste_kalendar_akci A LEFT JOIN trziste_typy_akci T1 ON A.typ1=T1.id LEFT JOIN trziste_typy_akci T2 ON A.typ2=T2.id WHERE A.zacatek BETWEEN($sobota AND $nedele)"; echo $sql; //vyzkoušet samostatně v např. mysql query browseru / admineru / phpmyadminu $result = mysql_query($sql); |
||
|
Časová prodleva: 13 let
|
|||
0