Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 19 odgovora
  • 4.968 pregleda

Najnovija ↓

Upit na svaka dva dana... 04.11.2006. u 23:11 · pre 243 meseca #1
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.
Re: Upit na svaka dva dana... 05.11.2006. u 12:32 · pre 243 meseca #2
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???
Potpis
Diablo III
Re: Upit na svaka dva dana... 05.11.2006. u 13:47 · pre 243 meseca
izmenjeno 1 put, poslednji put genjerator 05.11.2006. u 14:34
  1. genjerator05.11.2006. u 14:34zapis iz teksta poruke
#3
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.
Re: Upit na svaka dva dana... 05.11.2006. u 16:13 · pre 243 meseca #4
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.
Re: Upit na svaka dva dana... 05.11.2006. u 18:00 · pre 243 meseca #5
Meni skripta ne treba da se izvrsava svakih N dana, nego da svaki N dan prikaze razlicit podatak iz baze.
Re: Upit na svaka dva dana... 05.11.2006. u 19:17 · pre 243 meseca #6
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);
?>

Re: Upit na svaka dva dana... 05.11.2006. u 19:51 · pre 243 meseca #7
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.
Re: Upit na svaka dva dana... 05.11.2006. u 20:08 · pre 243 meseca #8
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
Re: Upit na svaka dva dana... 05.11.2006. u 22:20 · pre 243 meseca #9
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.
Re: Upit na svaka dva dana... 05.11.2006. u 22:30 · pre 243 meseca
izmenjeno 1 put, poslednji put zikaa 06.11.2006. u 18:29
  1. zikaa06.11.2006. u 18:29zapis iz teksta poruke
#10
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)));
Re: Upit na svaka dva dana... 05.11.2006. u 22:52 · pre 243 meseca #11
Hmm, opet isti problem, svaki refresh druga prica :(
Isto tako i kad promenim datum na serveru.
Re: Upit na svaka dva dana... 07.11.2006. u 20:54 · pre 243 meseca #14
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.
Re: Upit na svaka dva dana... 08.11.2006. u 00:03 · pre 243 meseca #16
Kako god, samo da mi zavrsi posao. Ako mozhe kao sto je napisao zikaa, primer ceo :)

Imas pivo :)
Re: Upit na svaka dva dana... 08.11.2006. u 10:51 · pre 243 meseca #17
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.
Potpis
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
Re: Upit na svaka dva dana... 08.11.2006. u 21:42 · pre 243 meseca #19
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š.
Potpis
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
Re: Upit na svaka dva dana... 08.11.2006. u 23:04 · pre 243 meseca #20
Hvala ti puno. Dodacu samo ovo jos jedno polje i to je to, nadam se, ako budem imao prob. javicu. HVALA JOS JEDNOM!
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme