Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Automatsko brisanje zapisa nakon određenog vremena

[es] :: PHP :: Automatsko brisanje zapisa nakon određenog vremena

Strane: 1 2

[ Pregleda: 7773 | Odgovora: 26 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-1.sezampro.yu.



+33 Profil

icon Re: Automatsko brisanje zapisa nakon određenog vremena25.04.2009. u 20:12 - pre 184 meseci
Ovaj red ti je problematičan:
Citat:
bugsu
Code:

$time = time() - strtotime($timelimit*60*60);


Ne treba ti "60*60", to umesto tebe radi f-ja strtotime(). Ona pretvara datum/vreme u sekunde. A i druga, manje bitna stvar je da si u prethodnom redu izračunao vreme sa time() i smestio ga u jednu promenljivu ($server_time), a onda opet bespotrebno pozivaš f-ju time(), al' to i nije tol'ko bitno...

btw Jel to znači da si odustao od onog rešenja sa MySQL-om?
 
Odgovor na temu

bugsu
Vojvodina - Subotica

Član broj: 40006
Poruke: 381
79.101.214.*



+3 Profil

icon Re: Automatsko brisanje zapisa nakon određenog vremena25.04.2009. u 22:33 - pre 184 meseci
Citat:
Nikola Poša: Ovaj red ti je problematičan:

Ne treba ti "60*60", to umesto tebe radi f-ja strtotime(). Ona pretvara datum/vreme u sekunde. A i druga, manje bitna stvar je da si u prethodnom redu izračunao vreme sa time() i smestio ga u jednu promenljivu ($server_time), a onda opet bespotrebno pozivaš f-ju time(), al' to i nije tol'ko bitno...

btw Jel to znači da si odustao od onog rešenja sa MySQL-om? :)


dzabe stavio ja 60*60 il ne...isto mi se vata :/ isti rezulta
cek cek....sad me ovo buni (malko sam dosadan)

$time = time() - strtotime($timelimit);

znaci on uzme trenutno vreme (serversko naravno) i oduzme $timelimit koji uzima iz baze i prebacuje ga u sekunde....
meni u bazi stoji 1....otkud ce on znaci dal je 1min,1sat,1 dan?ja mislim da je tu problem


u vezi $server_time...nije to bas ni dzabe jer se ta promenjljiva koristi jos u tom php fajlu :) ja sam vama dao samo ono sto me muci :D...

od mySQL resenja nisam odustao...tj...sa tim bi morao imati padajuci menu sa vec predefinisanim opcijama,a to meni ne bi odgovaralo / ili / da ne bude vec predefinisane opcije ali na malo duzi nacin bi to islo(korisnik bi onda morao kucati za 1H vrednost 01 etc..)

a meni treba ovo sto lakse da je i meni (zbog odrzavanja) + korisniku koji ce to koristiti ...nekako ovo treba do 1vog da uglavim u sajt kako znam i umem...tj sve sam uglavio samo mi ovo ostalo :/

ako ne uspem sa php-om prelazim na mySQL nacin izracunavanja nema mi druge...
Say NO to pop culture!!!
Crno je uvek u modi....
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Automatsko brisanje zapisa nakon određenog vremena26.04.2009. u 10:16 - pre 184 meseci
Citat:
bugsu: meni u bazi stoji 1....otkud ce on znaci dal je 1min,1sat,1 dan?ja mislim da je tu problem

Pa stvarno ne znam kako si to onda organizovao u bazi... Jel to polje samo jedna cifra? I šta ono na kraju predstavlja? Sate, minute, dane? Kako si ti onda mislio da kad to polje pomnožiš sa 60*60, dobiješ vreme ili šta već... Ja sam mislio da je to polje u bazi u formatu vremena (H:i:s).

I ta promenljiva $server_time je bespotrebna, jer nju možeš da dobiješ i pri kreiranju upita, pomoću CURDATE(). Tako da, tebi još samo ostaje da vidiš kako ćeš od tog tvog polja iz baze ($timelimit) da dobiješ format koji može da se oduzme od CURDATE(). Ako ti kažeš da su to samo int vrednosti 1, 2, itd., i da predstavljaju sate, onda bi za konverziju trebao da uradiš ovo:
Code:

if ((int)$timelimit > 9) {
   $timelimit .= '0000';
}
else {
   $timelimit = '0' . $timelimit . '0000';
}

A onda bi upit izgledao ovako:
Code:

$upit = "DELETE FROM vvl_log WHERE exp_time < CURTIME() - '$timelimit'";

I evo sad ceo taj kod:
Code:

$sql = "SELECT polje FROM tabela";
$rs = $conn->execute($sql);

$timelimit   = $rs->fields['polje'];    
if ((int)$timelimit > 9) {
   $timelimit .= '0000';
}
else {
   $timelimit = '0' . $timelimit . '0000';
}

$sql = "DELETE FROM vvl_log WHERE exp_time < CURTIME() - '$timelimit'";
$conn->execute($sql);
 
Odgovor na temu

bugsu
Vojvodina - Subotica

Član broj: 40006
Poruke: 381
93.86.172.*



+3 Profil

icon Re: Automatsko brisanje zapisa nakon određenog vremena26.04.2009. u 10:35 - pre 184 meseci
pa cekaj....
ako idem $timelimit*60*60
a $timelimit mi 1 ..znaci 3600 dobijem rezultat...
$time - 3600 ne bi trebao da dobijem 1H manje?


$server_time jeste bespotrebna ako koristim CURDATE()....ali ja se nisam setio da pogledam dal ima u SQL ta funkcija....




Say NO to pop culture!!!
Crno je uvek u modi....
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Automatsko brisanje zapisa nakon određenog vremena26.04.2009. u 11:42 - pre 184 meseci
E pa u tom slučaju je to ok, opet kažem, nisam znao da ti u bazi držiš samo 1, 2, 3, itd. A pošto se te cifre odnose na sate, onda moraš da ideš sa 60*60, pa će se ona tvoja promenljiva $time izračunavati ovako:
Code:

$time = time() - $timelimit * 3600;
$time = date('H:i:s', $time);

I postoji CURDATE(), naravno...
 
Odgovor na temu

bugsu
Vojvodina - Subotica

Član broj: 40006
Poruke: 381
93.86.172.*



+3 Profil

icon Re: Automatsko brisanje zapisa nakon određenog vremena26.04.2009. u 11:46 - pre 184 meseci
uradio sam sa CURDATE() a vidim i ti si nesto zapeo za to :P (radi sad ok)

a sad vidim da ja nisam napomenuo sta drzim u bazi za $timelimit :/ moja greska...
ok sad znam za ubuduce....

hvala na trudu ;)
Say NO to pop culture!!!
Crno je uvek u modi....
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
79.175.85.*



+33 Profil

icon Re: Automatsko brisanje zapisa nakon određenog vremena26.04.2009. u 12:02 - pre 184 meseci
Pa nisam zapeo, nego je uvek bolje da takve neke "proračune" odradiš odma' u upitu... :)

Npr. bolje je ovako:
Code:

$sql = "SELECT SUBSTR(foo, 3, 7) FROM bar";
//...
echo $r['foo'];

... nego ovako:
Code:

$sql = "SELECT foo FROM bar";
//...
$foo = substr($r['foo'], 3, 7);
echo $foo;

 
Odgovor na temu

[es] :: PHP :: Automatsko brisanje zapisa nakon određenog vremena

Strane: 1 2

[ Pregleda: 7773 | Odgovora: 26 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.