DB Update um bestimmte Zeit

Deadfish

Mitglied
Hallo erstmal und ich brauche mal wider eure Hilfe,

Und zwar versuch ich grade (verzweifelt) ein bestimmte Spalte des User Upzudaten machen das jedes mal Um punkt 24:00 Uhr ist. Habe es schon so Probiert
PHP:
if (date("G") >= 0 and date("G") <0) {

Habe es aber auch schon probiert mit Timestamp so das er berechnet wie viel zeit vergangen ist seit seinen letzten Login Problem war nur wuste net wie ich ihn sagen kann immer um Punkt 24:00 Uhr
 
Ich verstehe nur Bahnhof, Abfahrt.

Willst du die Update-Anweisung immer genau um 24.00/0.00 Uhr ausführen, dann suche nach Cronjob.

Willst du beim Ausführen der Update-Anweisung in eine Spalte die Uhrzeit 24.00/0.00 Uhr speichern, dann:

SQL:
UPDATE deine_tabelle SET dein_zeitfeld = '00:00:00' WHERE dein_user = 'wert'
 
PHP:
$time = mktime(23, 59, 59, date("n"), date("j"), date("Y"));

if ($time == time() or $time < time()){
	mach iwas
}

Erklärung: mktime gibt dir einen Timestamp für zb 28.05.11 23:59:59. Da das ja ohne Cronjob ****t kann es ja sein das der User nicht genau um die Zeit darauf klickt. Allso die if anweisung.

Wenn time ist gleich time() oder time() ist größer als der timestamp für 28.05.11 23:59:59 dann führe aus.

Aber genau um 24uhr und das jeden Tag wirst du wohl nur mit einem Cronjob schaffen. Ich weiß allerdings nicht ob das so wichtig ist? Es würde doch auch reichen wenn der User es quasi dadurch selbst regelt?

Falls das nicht das ist was du suchst, sag bescheid bzw erkläre bitte genauer

EDIT: Ich merk gerade, es wird besser sein den Timestamp für jeden Tag 24uhr besser in die DB zu speichern.
mfg
 
Zuletzt bearbeitet:
Erstmal Danke,

Ich erkläre mal wofür das gut ist da ich ein RPG-BG schreibe fast Fertig (: muss der User Arbeiten er soll das aber nur 20 mal am Tag machen dürfen. Da der Tag ja um 00:00 neu Anfängt darf er wider Arbeiten der Script ist gut muss mal schauen was ich draus machen habe ihn grade getestet mit Angabe 14,04,00
ging ja aber der Updatet nun die Db immer weil er ja über diese Zeit ist mmh mal schauen aber Danke
 
Ja genau deswegen ist es Ratsam das in die DB zu speichern dann kannst du nämlich auch noch kontrollieren wann die letzte Änderung war.

Aber so wie du das beschreibst ist es wohl sinnvoller ein Cronjob zu nutzen.

mfg
 
Hallo Deadfish,

bitte bitte bitte, halte dich an die Netikette und benutze Satzzeichen. Ich musste mit deinem letzten Post 4 mal anfangen, bevor ich das zu Ende lesen konnte. Das ist doch wohl nicht zu viel verlangt. Du möchtest ja Hilfe und die Helfer keine Kopfschmerzen.

Danke und
 
Also wenn ich jetzt wüßte was ein RPG-BG ist, dann wüßte ich vielleicht auch wovon du redest.

So wie ich das jetzt verstehe darf jeder User 20 x am Tag "arbeiten" (****?).
Wenn dieses Arbeiten in der DB gespeichert wird, dann zähle doch immer vor dem Speichern die Einträge die das gleiche Datum haben. Sind es weniger als 20, darf nochmal gespeichert werden. Sind es bereits 20 hat er das Maximum für diesen Tag erreicht.
 
Mach einen Cron-Job, der 00:01 ausgeführt wird und ein DELETE auf alle Datensätze durchführt, die am Tag vorher erstellt wurden.

SQL:
DELETE FROM blub WHERE blah_date = DATE_SUB(CURDATE(), INTERVAL '1' DAY);

Kannst ja erstmal mit SELECT arbeiten, um herauszufinden, ob es wirklich die Daten betrifft, die du erwartest:

SQL:
SELECT * FROM blub WHERE blah_date = DATE_SUB(CURDATE(), INTERVAL '1' DAY);

Falls du alle Daten löschen willst, die alter als aktueller Tag sind, dann musst du den Gleich-Operator entsprechend anpassen.
 
Tut mir Leid habe gestern es versucht einzubauen nur eggend wie verstehe ich wohl Cornjob nicht richtig. Habe es so versucht

PHP:
$time  = time();

$eintrag =
 "
SELECT * FROM benutzerdaten SET gearbeited = 0 WHERE $time = DATE_SUB(CURDATE(), INTERVAL '1' DAY)";

 $eintragen = mysql_query($eintrag);
und so
PHP:
$time  = time();

$eintrag =
 "
SELECT * FROM benutzerdaten SET gearbeited = 0 WHERE $time = DATE_SUB(CURDATE('00:01:00), INTERVAL '1' DAY)";

 $eintragen = mysql_query($eintrag);
 
Zurück