ugrás a tartalomhoz

Felhasznalo torlese bizonyos ido utan

Anonymous · 2006. Júl. 6. (Cs), 14.01
Egy mySQL adatbazisba taplalok be adatokat PHP segitsegevel.
A tablaban van egy olyan oszlop amelynek a neve date_entered.

Amikor egy user regisztralodik az oldalon a date entered oszlopban megjelenik mikor regisztralodot.

pl.
2006-07-06 07:25:49

A NOW() fugvenyt hasznalom amikor beviszem az adatot mysql INSERT-el. A NOW megjeleniti a datumot es az idot, ahogy fent latszik.

Szeretnem azokat a felhasznalok kitorolni az adatbazisbol amelyek regisztracio utan nem aktivaltak a usernevet.

A kovetkezo parancsot hasznalom :

mysql_query("DELETE FROM register WHERE date_entered < '". (time() - $checktime) ."' AND activate != 0"); 
A problema az, hogy a time() unix stilus szerint jeleniti meg a datumot es az idot, pl amikor eppen mysql-ben 2006-07-06 07:25:49 akkor unix idoben
1152187145

Mi a velemenyetek errol ? Ha az idok nem paszolnak akkor a usert nem torolhetem :(
 
1

bízd a mysql-re

Táskai Zsolt · 2006. Júl. 6. (Cs), 14.11
a mysql doksiban ajánlom figyelmedbe a dátumkezelő függvényeket, leginkább ezt:
http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html#id2810054

ha mindent a mysql csinál, nincsenek formátumproblémák.
2

ok

Anonymous · 2006. Júl. 6. (Cs), 14.51
leirom pontosan mit akarok :

Van egy mySQL tablam amelyben szerepel egy date_entered oszlop:

date_entered DATETIME NOT NULL;

Amikor bekuldom az adatot az oszlopban a NOW()-t hasznalom:

INSERT (date_entered) VALUES (NOW());

Ha elohivom a tartalmat :

mysql> SELECT date_entered FROM register;

+---------------------+
| date_entered |
+---------------------+
| 2006-07-06 08:44:27 |
+---------------------+
1 row in set (0.13 sec)

Ez az datum meg az ido nem valtozik meg.

Most szeretnek PHP-bol egy query-t adni MYSQL-nek es megmondani, hogy 30 nap utan torolje ezt a mezot.

En valami ilyesmire gondoltam amit lefutatok naponta cron-ban:

$checktime 3600;

mysql_query("DELETE FROM register WHERE date_entered < '". (time() - $checktime) ."' AND activate != 0");

Nem tudom ha jol hasznalom a time() fugvenyt es milyen erteket kene megadjak a $checktime valtozonak.

Kerlek ha tudnal segiteni nagyon halas lennek.

Kosznom!
3

megoldás az #1-es bejegyzésben...

Dualon · 2006. Júl. 6. (Cs), 15.07
Tasi leírta, merre keresd a megoldást. Szakadj el a unix timestamptől, használd a mysql dátumkezelő függvényeit, így ki is hagyhatod a PHP-t a dátum részből.
A mysql dátumkezelő függvényeivel meddig jutottál?
4

akkor többet segítek

Táskai Zsolt · 2006. Júl. 6. (Cs), 16.17
az #1-ben idézett doksi példáját neked testreszabva (vagyis 1 óra levonását kérve) az alábbit kapjuk:

... WHERE date_entered < SUBTIME(NOW(),'1 1:0:0.0')

ennél többet nem tudok mondani, de tényleg jó lenne, ha elolvasnád a hivatkozott doksit.
jó munkát,
Tasi