[ luner @ 01.09.2002. 19:06 ] @
Do sada nisam imao potrebe za tim ali posto se sad ona javlja meni, ja se javljam vama :)):

Potrebno mi je da zadaum SQL upit koji ce iz tabele da povuce sve upite mladje od recimo 5 dana (dakle upiti koji su uneti pre 5 ili manje dana), zatim da rezultat sortiram po mladosti (mada je vec sortiran (valjda :)) i da to prikazem.

Kako se ovo izvodi (PHP/Mysql) koji se delovi izvode PHP-om a koji MySql-om (da li postoji specijalni tip kolone u MySql koji se koristi kod datuma ili...)?

Drugi pristup problemu (interesuje me i prvo i ovo (ne iskljucuju se medjusobno:))) je:

postoji forma za postavljanje vesti i polja:

vest - mesto gde se unosi tekst vesti
trajanje u danima - polje u koje se unosi koliko dana ce vest biti aktivna.

Kako se ovo izvodi?

Pozdrav!

Unapred zahvalan levo potpisani :)
[ Zoran Rašković @ 01.09.2002. 19:19 ] @
E ovo prvo ti je npr:
Code:

$result=mysql_query("select distinct address from visits where date > date_sub(now(), interval 5 days)", $db);
while ($myrow=mysql_fetch_row($result)) {
echo "$myrow[0]<p>";
}


date u bazi mora da bude timestamp tipa, najbolje je timestamp(14).
[ -zombie- @ 02.09.2002. 05:50 ] @
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);

...


[ luner @ 02.09.2002. 16:32 ] @
Hvala momci, zivi bili - vrsi posao!

Pozdrav!