[ mitar2005 @ 04.11.2006. 22:11 ] @
Pozdrav,

treba da napisem skriptu koja ce da prikazuje razlicite podatke na svaka dva/tri dana.
Za bazu koristim mySQL. Dakle imam sledece:

Code:

id | polje1 | polje2
------------------
1    test1     test1
2    test2     test2
3    test3     test3


e sad mi treba npr. ako je danas 4-11-2006 da prikaze test2 i da ga mu stavi flag da je prikazan kako se vise ne bi prikazivao (to i nije problem), e sad npr. 7-11-2006 treba da prikaze test2 itd... moze i po random redosledu to je vec stvar izbora, bitnije mi je ovo sto je vezano za datum.


Hvala.
[ Davor Grubelić @ 05.11.2006. 11:32 ] @
trbao bi još u bazu dodati polje u koje će se upisivati datum kada je skripta izvršena. php je server-side skriptni jezik, što bi značilo da se skripta neće sama izvršiti ukoliko je netko ne pozove. moraš sam svaka dva-tri dana pokretati skriptu koja će ti onda prikazati što si već ti naumio da prikaže.
sad da pojasnim:
kad se skripta izvrši u bazu se upiše datum kada je skripta izvršena.
kada drugi puta izvršiš skriptu uzmeš datum iz baze i usporediš ga sa trenutnim datumom.
ako je razlika veća od 2-3 dana ponovo izvršiš skriptu, a ako nije .....ništa..prekineš sa izvršavanjem.

ali kontam da ti vjerojatno trebaš kod???
[ genjerator @ 05.11.2006. 12:47 ] @
A da li se moze ovako nesto uraditi?
Da se napravi beskonacna petlja, i u njoj stavi delay na 2 dana i
odradi sa mysqlom sta treba, pa da skripta radi non stop na serveru?
Da se ne mora uvek rucno pokretati skripta.

[Ovu poruku je menjao genjerator dana 05.11.2006. u 14:34 GMT+1]
[ japan @ 05.11.2006. 15:13 ] @
može, ali to baš i nije neko rešenje. ako imaš cron na serveru, možeš da podesiš da ti se skripta izvršava u željenim intervalima, a ako nemaš, postoje slični servisi po netu - prijaviš url svoje skripte i interval, i skripta se izvršava u tom intervalu.
[ mitar2005 @ 05.11.2006. 17:00 ] @
Meni skripta ne treba da se izvrsava svakih N dana, nego da svaki N dan prikaze razlicit podatak iz baze.
[ zikaa @ 05.11.2006. 18:17 ] @
CREATE TABLE tabela(id INT UNSIGNED NOT NULL, polje1 TEXT, polje2 TEXT, start_time TIMESTAMP NULL, current TINYINT NULL DEFAULT 0)

Code:

<?php
define('INTERVAL',2);;//dana
$table='table';
$db='db';
$user='user';
$password='password';
$host='localhost';

mysql_connect($host,$user,$password) or die('Ne mogu se konektovati');
mysql_select_db($db) or die ('Ne mogu selektovati bazu');


/** da li je trenutna mozda zastarela **/
mysql_query("UPDATE $table SET current=0 WHERE start_time IS NOT NULL AND start_time > ".(time() - INTERVAL*60*60*24));
if(mysql_affected_rows()){ /* jedna je upravo prestala da  bude vazeca, postavimo novu  */
  mysql_query("UPDATE $table SET current=1, start_time=NOW()  WHERE start_time=NULL ORDER BY RAND() limit 1 ");
}

/** trazimo jdnu koja je na redu za prikaz **/
$query="SELECT * FROM $table WHERE `current`=1";
$res=mysql_query($query);

/** ako ne postoje vrste koje zadovoljavaju */
/** nije nijedna postavljena ili su sve potrosene **/
if(!mysql_num_rows()){
  $query="SELECT COUNT(*) AS  cnt FROM $table";
  $res=mysql_query($query);
  $row=mysql_fetch_assoc($res);

  if(!$row['cnt']){ /** tabela je prazna */
    die('tabela je prazna ');
  }
  else{  /** postavimo jednu na aktivnu */
    mysql_query("UPDATE $table SET current=1, start_time=NOW()  ORDER BY RAND() limit 1 ");
    $query="SELECT * FROM $table WHERE `current`=1";
    $res=mysql_query($query);

}

/** konacno dolazimo do nase vrste */
$row=mysql_fetch_assoc($res);
print_r($row);
?>

[ mitar2005 @ 05.11.2006. 18:51 ] @
Hvala, fali } na kraju.
No, meni ovo ne radi, tacnije, nakon osvezavanja strane dobijam razlicite podatke, a treba da mi pokazuje, npr. samo za danas, pa posle dva dana da prikaze sledeci, ili random nije ni bitno, samo da se ne ponavljaju.
[ zikaa @ 05.11.2006. 19:08 ] @
je si li pogledao log ili nesto gde je greska, da li si napravio tabelu , upisao dobar username, passowrd i sl

ako vec imas tabelu i neces da pravis novu uradi
Code:

ALTER TABLE tabela ADD COLUMN start_time TIMESTAMP NULL,  ADD COLUMN current TINYINT NULL DEFAULT 0
[ mitar2005 @ 05.11.2006. 21:20 ] @
Ma ok je to sve, samo npr. on mi prikaze jedan podatak i njemu stavi current 1, kad osvezim stranu prikaze opet taj, treci put kad osvezim, prikaze drugi podatak i onda za njega stavi current 1 a drugi vrati na 0. U tome je problem. Meni treba da prikaze taj prvi i njega da prikazuje sve vreme dok ne prodje 2-3 dana, nakon 2-3 dana prikazuje sledeci.
[ zikaa @ 05.11.2006. 21:30 ] @
ja sam pogresio, trebalo je umesto

Code:
mysql_query("UPDATE $table SET current=0 WHERE start_time IS NOT NULL AND start_time > ".(time() - INTERVAL*60*60*24));


staviti
Code:
mysql_query("UPDATE $table SET current=0 WHERE start_time IS NOT NULL AND start_time < ".date("YmdHis",(time() - INTERVAL*60*60*24)));


[Ovu poruku je menjao zikaa dana 06.11.2006. u 18:29 GMT+1]
[ mitar2005 @ 05.11.2006. 21:52 ] @
Hmm, opet isti problem, svaki refresh druga prica :(
Isto tako i kad promenim datum na serveru.
[ mitar2005 @ 07.11.2006. 13:36 ] @
Ima li pomoci ljudi?
[ zikaa @ 07.11.2006. 16:30 ] @
Ima pomoci. Citaj pazljivo odgovore.:)
[ mitar2005 @ 07.11.2006. 19:54 ] @
Citam, ali mi slabo ide od ruke. Mislim da je tvoj kod najblizi resenju, ali ne mogu da nadjem nacin da ga doteram da radi kao sto meni treba.
[ Nemanja Avramović @ 07.11.2006. 22:41 ] @
Jel ti treba rešenje preko MySQL upita ili "daj šta daš"
[ mitar2005 @ 07.11.2006. 23:03 ] @
Kako god, samo da mi zavrsi posao. Ako mozhe kao sto je napisao zikaa, primer ceo :)

Imas pivo :)
[ Nemanja Avramović @ 08.11.2006. 09:51 ] @
E da sam dobio dinar ili pivo za svaki put kad sam čuo to "imaš pivo" sad bih bio ili bogat ili alkoholičar

Enivej, sad nemam vremena, idem na neku slavu, pa ako ti niko ne odgovori dok se ne vratim videću da napravimo nešto, kakvo-takvo, ali da radi.
[ mitar2005 @ 08.11.2006. 11:22 ] @
Dobro, hvala u napred.
[ Nemanja Avramović @ 08.11.2006. 20:42 ] @
Evo... ako si na unix hostingu, chmod avram.dat na 777
Ovo je odrađeno tako da se poruka sa jednim IDom prikazuje na 2 dana (broj dana izmeni u konekcija.php fajlu), i da se posle tih par dana ne može ponoviti poruka sa tim IDom (ali za još par dana može da se ponovi). Ako želiš da se ta poruka nikad više ne ponovi onda verovatno moraš da dodaš još jednu kolonu u koju ćeš po prikazu poruke da upišeš da se prikazala, a pre prikaza da proveravaš da li se ona već prikazivala, pa ako nije, onda da je ispišeš.
[ mitar2005 @ 08.11.2006. 22:04 ] @
Hvala ti puno. Dodacu samo ovo jos jedno polje i to je to, nadam se, ako budem imao prob. javicu. HVALA JOS JEDNOM!