PDA

View Full Version : Objavljivanje vijesti u zadanom datumu (teorija)


gorrc
05-01-2008, 21:26
Kako cms-ovi na php/mysql objavljuju vijesti u određenom datumu?

Mysql tek od verzije 5-ovi ima vremenske eventse a Joomla! se recimo vrti na Mysql 4.4 bez problema s time, te i cutenews ima takav sistem objavljivanje vijesti a uopće nema veze s bazom.

Jedino moguće rješenje pregledavajući bazu od Joomle! jest da se prilikom da se svaki put pregleda datum koji je upisan u bazi i ako je "pozitivan" vijest se objavljuje.

Sad jeli to radi tako jer ovakav način troši puno resursa??

tsereg
05-01-2008, 22:48
Ništa ne troši puno resursa. Samo kod izvođenja skripte (generiranja stranice s popisom vijesti) selektiraš zapise iz baze podataka na ovakav način:select from tablica where datum_za_objaviti <= danas()To je ono za što SQL i jest namijenjen.

gorrc
05-01-2008, 23:17
Hvala na odgovoru.

nitko
05-01-2008, 23:24
E, to me bilo gnjavilo. Pa može malo detaljnije objašnjenje gorrc kako si to riješio..

Pomoću funkcije mktime() ? Ako neko može pojasnit, fala :)

gorrc
05-01-2008, 23:41
Nisam to riješio, tek dolazim do tog dijela pa malo istražujem.

U najnovijem Mysql mogli bi napisati event recimo da u točno 9:00 23.10.2008 row u columni "publish" prebaci sa "no" u "yes" .
Onda bi imali upit : select from tablica where publish=yes
Pošto nemam na serveru 5.1-cu nego 4-ku onda me zanima kako je to "stara garda" rješavala.

tsereg
06-01-2008, 00:00
@gorrc
Nema razlike između upita "select ... where datum1 < datum2" i upita "select ... where publish = yes".

U ovom drugom načinu s "eventima" moraš aktivirati _dodatne_ resurse poput tih događaja, da bi na kraju postavio SELECT upit koji je potpuno istovrsan onome SELECT upitu koji obavlja posao i bez tih "evenata".

Znači, odvagni jedno i drugo, pa vidi sam što ti misliš da je najbolje.

@nitko:
Funkcija u pitanju je nvj. MySQL funkcija CURDATE() (http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html). Dakle:SELECT
*
FROM
NEWS_ITEMS
WHERE
PUBLISH_AT_DATE <= CURDATE()

Sky
06-01-2008, 15:48
Na taj način ja sve objavljujem i postižem to da "sustav sam postavlja vijesti".SELECT * FROM vijesti WHERE vrijeme_objave<=NOW()U bazu kraj svake vijesti zapisujem datum u datetime obliku, a kroz svoj CMS odredim datum i vrijeme "iz budućnosti".