Zeitgesteuerte Zähle funktion

elPadre

Mitglied
Hallo Leute,

ich möchte, dass jeden Tag um 24:00 – also beim Tageswechsel – eine Update-Funktion ausgeführt wird, die ein bestimmtes Datenbank-Feld jeden Tag um eins erhöht.
Ich möchte damit ermitteln, wie lange ein bestimmter Benutzer – also wieviele Tage der Benutzer – nicht mehr online gewesen ist. Nach jedem Login wird dieses Feld auf 0 gesetzt und damit wieder von Neuem zu zählen angefangen.

Wie kann ich nun mit PHP ein Script machen, das immer um 24 Uhr dieses Feld +1 setzt, dabei den vorhandenen Wert nicht überschreibt sondern eben +1 rechnet.

Vielen Dank
 
Entweder Cronjob, oder du könntest wenn ein Skript aufgerufen wird z.B in einer Textdatei/Datenbank schauen, ob das Skript schon heute ausgeführt wurde, wenn ja: OK, sonst das Feld aktualisieren.
 
najo und wie muss ich das genau machen :D


$SQL="UPDATE tab_stammdaten SET tage='+1...' ";


ja und wie muss das ganze dann richtig aussehen !?
 
Notiere lieber den Zeitpunkt der letzten Aktivität des Benutzers. Anhand dieses Zeitpunkts ist es kein Problem jeder Zeit herauszufinden, wie lange die letzte Aktivität her war. Das spart dir auch den „Cron Job“.
 
najo schon das hab ich mir auch geddacht jedoch muss ich trotzdem dann manuell anfangen zu rechen wie lange es den her ist wann er das letzte mal online war

da scheint mir das mit so nem zähler der einfach die tage zählt einfacher.


denn cron job ist dann kein problem ich müsste nur wissen wie der SQL update befehl aussehen bzw lauten muss das es funktioniert.
 
Füge einfach eine weitere Spalte – nennen wir sie „last-activity“ – an die bestehende Mitglieder-Tabelle an (bevorzugt eines MySQL-eigenen Datums-Typs). Nun benötigst du nur noch ein Skript, dass den Zeitpunkt der letzten Aktivität aktualisiert, etwa:
PHP:
<?php

	// Verbindungsaufbau zum Datenbankserver etc.

	$query = '
		UPDATE DELAYED
		        `foobar`
		  SET
		        `last-activity` = NOW()
		  WHERE
		        `id` = 0
		';
	mysql_query($query);

?>
Anschließend kannst du die Informationen ganz einfach abfragen, etwa:
Code:
SELECT
        `id`
  FROM
        `foobar`
  WHERE
        `last-activity` >= DATE_SUB(NOW(), INTERVAL 24 HOUR)
Diese Abfrage wählt alle Benutzer aus, die innerhalb der letzten 24 Stunden aktiv waren.
 
Zurück