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
abc:
Děkuji MOC, výpis datumu funguje výborně, ještě dělám nějakou chbu v SQL.
abc
Profil
Blížkovský:
sloupec zacatek je typu datetime?
Blížkovský
Profil
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");
a WHERE stejné
Blížkovský
Profil
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);

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: