Datumsberechnung in php
Ich möchte in einem Script überprüfen welcher User meines phpkit 1.6.4 seit mehr als 1 Jahr nicht mehr eingeloggt war.
Ich habe dazu die Variable lastlog aus der Tabelle phpkit_user ausgelsen. Aber mit welcher Funktion kann ich nun prüfen ob das länger her ist als 1 Jahr? Finde leider nix hilfreiches dazu...
mfg,
DD
Ich habe dazu die Variable lastlog aus der Tabelle phpkit_user ausgelsen. Aber mit welcher Funktion kann ich nun prüfen ob das länger her ist als 1 Jahr? Finde leider nix hilfreiches dazu...
mfg,
DD
Du Rechnest einfach mit dem Timestamp weiter:
60 * 60 * 24 = 86400 [also ein Tag]
86400 * 365 = 31536000 [also ein Jahr]
86400 * 366 = 31622400 [also ein Schaltjahr]
Bspw. so
60 * 60 * 24 = 86400 [also ein Tag]
86400 * 365 = 31536000 [also ein Jahr]
86400 * 366 = 31622400 [also ein Schaltjahr]
Bspw. so
|
|
PHP-Quelltext |
1 2 3 4 |
if(aktuelles-datum-1 jahr >= lastlog )
{
user anschreiben
}
|
So einfach wie möglich - aber nicht einfacher!
Albert Einstein (1879-1955)
Albert Einstein (1879-1955)
Wenn es nur um eine soche Ausgabe geht, wer so und so viele Tage inaktiv war, dann braucht man das Rad nicht neu erfinden.
Müsste aber für V1.6.4 umgeschrieben werden.
Leider gibt es nichts von Ratiopharm, aber
für den Adminbereich:
* Name = InaktivListing
* Version = 1.0
* Since = 04.12.2004
* Copyright = Dooki
* Homepage = http://www.php-gfx.net
oder
Als Link in einer Navbox oder so:
# Inaktive User v1.1
## http://www.bomania.de
Der Zeiraum ist bei beiden Hacks einstellbar.
LG
Kater
Müsste aber für V1.6.4 umgeschrieben werden.
Leider gibt es nichts von Ratiopharm, aber
für den Adminbereich:
* Name = InaktivListing
* Version = 1.0
* Since = 04.12.2004
* Copyright = Dooki
* Homepage = http://www.php-gfx.net
oder
Als Link in einer Navbox oder so:
# Inaktive User v1.1
## http://www.bomania.de
Der Zeiraum ist bei beiden Hacks einstellbar.
LG
Kater
super, das funktioniert
wenn das mal wer braucht:
PS: @Superkater sowas in der Art meinte ich, aber ich nutze die Gelegenheit mal um mich selber weiter einzuarbeiten als andere Sachen umzuschreiben...
wenn das mal wer braucht:
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 |
$getuserinfo=$DB->query("SELECT user_nick, user_id, lastlog, user_posts FROM ".$db_tab['user']." WHERE user_activate=1 ".$sqlcommand." ORDER by lastlog ASC ");
$heute = getdate();
while ($userinfo=$DB->fetch_array($getuserinfo))
{
if (($heute[0]-31622400) >= $userinfo['lastlog'])
{
ausgabe
}
}
|
PS: @Superkater sowas in der Art meinte ich, aber ich nutze die Gelegenheit mal um mich selber weiter einzuarbeiten als andere Sachen umzuschreiben...
ich würde in dem fall aber eher mit time() arbeiten, als mit getdate()... ist einfacher.
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 |
$getuserinfo=$DB->query("SELECT user_nick, user_id, lastlog, user_posts FROM ".$db_tab['user']." WHERE user_activate=1 ".$sqlcommand." ORDER by lastlog ASC ");
//$heute = getdate();
while ($userinfo=$DB->fetch_array($getuserinfo)) {
if ((time() - 31622400) >= $userinfo['lastlog']) {
//hier die ausgabe...
}
}
|
Vielleicht noch als kleine Ergänzung bzw. Verbesserungsvorschlag...
Ich würde gleich nur die User auslesen, die min. 1 Jahr nicht aktiv waren, als alle auszulesen und dann rauszufiltern. Das spart Performance, besonders wenn es viele User sind (Bsp: Es sind 1000 User registriert, aber nur 10 inaktiv...dann liest du alle 1000 aus, nur um an die 10 zu kommen
)
Mit der folgenden SQL-Abfrage sollte du dabei an alle User kommen, die min. 1 Jahr (nach lastlog) nicht mehr aktiv waren..
(getestet unter MySQL 5.0 auf XAMPP)
Grtz
Ich würde gleich nur die User auslesen, die min. 1 Jahr nicht aktiv waren, als alle auszulesen und dann rauszufiltern. Das spart Performance, besonders wenn es viele User sind (Bsp: Es sind 1000 User registriert, aber nur 10 inaktiv...dann liest du alle 1000 aus, nur um an die 10 zu kommen
)Mit der folgenden SQL-Abfrage sollte du dabei an alle User kommen, die min. 1 Jahr (nach lastlog) nicht mehr aktiv waren..
|
|
MySQL-Abfrage(n) |
1 |
SELECT user_nick, user_id, user_posts FROM prefix_user WHERE user_activate = '1' AND lastlog + (365*24*60*60) <= unix_timestamp() |
(getestet unter MySQL 5.0 auf XAMPP)
Grtz
[Bevor du jemanden mit Füßen trittst, überleg ob du einem eventuellen Echo gewachsen bist]


