ovo lici da je dobro - nisam radio sa interval operatorom (ili vec je vec).
ali moj je predlog malo drugaciji. po mom iskustvu, najlakse je datum u mysql bazi drzati u unixtimestamp obliku (znaci obican int, broj sekundi od 1.1.1970) koji je native i za php.
jedna od prednosti je i to sto mysql ume da konvertuje iz ovog u svoj timestamp format, i time moze sve operacije da se izvrse sa njim, kao i sa timestamp poljem (ne gubi se funkcionalnost).
druge prednosti proisticu iz cinjenica da je to obicno int polje, i da je to native php format za vreme (preuzet sa unix-a).
prvo znaci da se sve operacije mogu izvoditi kao sa obicnim int poljem oduzimanje/dodavanje da bi se dobio datum u proslosti/buducnosti, poredjenje i intervali takodje proisticu iz ovoga...
drugo znaci da sve php funkcije za rad sa datumom / vremenom rade sa ovim vremenom, a ja vise volim da neke obrade radim u php-u nego u sql-u.
sto se drugog pitanja tice, odgovor je prost, a moze i da ti zameni nacin rada za prvo pitanje.
znaci, pri upisu vesti, korisnik unosi i broj dana (recimo) koliko zeli da vest bude vidljiva. ti odma izracunash koji je to krajnji datum (danas + X dana) i to upises u bazu u valid_until polje.
a kada povlacis vesti, onda samo listash sve vesti kojima je valid_until polje vece od danasnjeg datuma.
recimo ako koristish moj predlog i koristish unixtimestamp polje, onda prvi deo kod upisa vesti u bazu ide:
Code:
// izracunava krajnji datum u sekundama
$until=time()+$dana*24*60*60;
$sql="INSERT INTO vesti SET text='$text', valid_until=$until";
mysql_query($sql);
a kada izvlacis vesti iz baze, to radish recimo sa
Code:
$time=time();
$sql="SELECT * FROM vesti WHERE valid_until>$time";
mysql_query($sql);
...