mmofacts.com

Zeit

gepostet vor 16 Jahre, 11 Monate von Nivek
ich hab mal eine frage. ich möchte das immer um 0 uhr oder halt wenn sich der benutzer einloggt und es ein tag später ist, dass sich ein paar werte wieder auffüllen hier der quellcode:
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i:s",$timestamp);
echo $datum." - ".$uhrzeit." Uhr";
$query=mysql_fetch_object(mysql_query("SELECT Nacht FROM benutzerdaten WHERE username='".$username."'"));
$Nacht=$query->Nacht;
$Nacht_morgen=$Nacht+86400;
if($timestamp >= $Nacht){
mysql_query("UPDATE benutzerdaten SET Gesundheit_Anzahl='1' WHERE username='".$username."'");
mysql_query("UPDATE benutzerdaten SET Ztear_Energie_Anzahl='1' WHERE username='".$username."'");
mysql_query("UPDATE benutzerdaten SET Ausdauer_Energie_Anzahl='2' WHERE username='".$username."'");
mysql_query("UPDATE benutzerdaten SET Zeit_über='10' WHERE username='".$username."'");
mysql_query("UPDATE benutzerdaten SET Nacht='".$Nacht_morgen."' WHERE username='".$username."'");
}
?>
nun ist meine frage wie bekomme ich es hin das, wenn sich jemand registriert, der wert Nacht auf den wert time() von 0.00 Uhr gesetzt wird. gibt es da eine extra funktion oder wie geht es? Bitte um Hilfe!!!!!
gepostet vor 16 Jahre, 11 Monate von Pretandor
Dazu musst du Nacht auf den Timestamp von 0:00 Uhr setzen, wenn ich die Frage jetzt richtig verstanden hab.
Das geht z.B. mit mktime
gepostet vor 16 Jahre, 11 Monate von LargoWinch
ich verstehe deine Frage nicht so ganz, möchtest du das wenn sich jemand registriert dann dieses script ausführen damit seine werte "aufgefrischt" werden ?
Am einfachsten ginge das natürlich auch mit nem cronjob ...
Und es wäre auch schonender wenn du alle updates in einen query packst als für jedes einen neuen, also
mysql_query("UPDATE benutzerdaten SET Gesundheit_Anzahl='1',Ztear_Energie_Anzahl='1',Ausdauer_Energie_Anzahl='2',Zeit_über='10',Nacht='".$Nacht_morgen."' WHERE username='".$username."'");
gepostet vor 16 Jahre, 11 Monate von Nivek
also wegen der registration es soll da nur das erstmal ein wert rein denn $Nacht wird ja dann später immer weiter gesetzt. aber ich glaube ich weis schon wie ich das mache. aber postet trotzdem weiter damit ich alternativen habe^^.
und wegen dem Update: ich finde es so irgendwie besser so finde ich leichter die Fehler^^
gepostet vor 16 Jahre, 11 Monate von Pretandor
Original von Nivek
also wegen der registration es soll da nur das erstmal ein wert rein denn $Nacht wird ja dann später immer weiter gesetzt. aber ich glaube ich weis schon wie ich das mache. aber postet trotzdem weiter damit ich alternativen habe^^.
und wegen dem Update: ich finde es so irgendwie besser so finde ich leichter die Fehler^^

Ist aber für die Datenbank bzw. für die Perfomance Allgemein besser wenn du es in eine enzige Anfrage packst.
gepostet vor 16 Jahre, 11 Monate von AngelFilia
1.)
Also ich kann dir als aller erstes auch nur empfehlen, alles in eine Anfrage zu packen.
Wenn du übersicht brauchst, musst du diese nur oderntlich formatieren:
mysql_query("UPDATE benutzerdaten SET
Gesundheit_Anzahl='1',
Ztear_Energie_Anzahl='1',
Ausdauer_Energie_Anzahl='2',
Zeit_über='10',
Nacht='".$Nacht_morgen."'
WHERE username='".$username."'");
Eventuell noch entsprechend einrücken.
2.) Sicherheit - so wie das aussieht, dürfte hier zwar keine SQL-Injection möglich sein (da die variablen wohl schon woanders ordentlich ausgelesen werden) aber ich würde dir vorschlagen, das du dir angewöhnst, bei strings einmal mysql_real_escape_string() anzuwenden. Desweiteren sind ' bei Zahlen nicht nötig... Übrigens kannst du auch Zahlen entsprechend "formatieren":
mysql_query("UPDATE `benutzerdaten` SET
`Gesundheit_Anzahl`=1,
`Ztear_Energie_Anzahl`=1,
`Ausdauer_Energie_Anzahl`=2,
`Zeit_über`='10',
`Nacht`=".(int)$Nacht_morgen."
WHERE username='".mysql_real_escape_string($username)."'");
3.) Dein Problem:
$timestamp = time(); // Aktuelle Zeit
$datum = date("d.m.Y"); // Hier ist die Angabe von $timestamp unnötig
$uhrzeit = date("H:i:s");
echo $datum." - ".$uhrzeit." Uhr";
$QUERY = "SELECT `Nacht` FROM `benutzerdaten` WHERE `username`='".mysql_real_escape_string($username)."'";
$RESULT=mysql_query($QUERY);
$NACHT = mysql_fetch_row($RESULT);
$Nacht=$NACHT[0];
$Nacht_morgen=$Nacht+86400;
if($timestamp >= $Nacht){
mysql_query("UPDATE `benutzerdaten` SET
`Gesundheit_Anzahl`=1,
`Ztear_Energie_Anzahl`=1,
`Ausdauer_Energie_Anzahl`=2,
`Zeit_über`='10',
`Nacht`=".(int)$Nacht_morgen."
WHERE username='".mysql_real_escape_string($username)."'");
}
?>
Finde ich so etwas übersichtlicher...
Du willst $Erste_Nacht haben - dafür gibts, wie andere schon erwähnt haben, die Funktion mktime();
$Erste_Nacht = mktime(0,0,0); //=> 0:00 Uhr des heutigen Tages.
$Erste_Nacht += 86400; //=> Folglich nächstes Mal, an dem die Uhr 0:00 schlägt
?>
Alles klar?
gepostet vor 16 Jahre, 11 Monate von LargoWinch
Original von AngelFilia
1.)
Also ich kann dir als aller erstes auch nur empfehlen, alles in eine Anfrage zu packen.
Wenn du übersicht brauchst, musst du diese nur oderntlich formatieren:

*schnief* Das hat mich nu irgendwie getroffen
gepostet vor 16 Jahre, 11 Monate von AngelFilia
*tröst*
Ich wollte nur deinen Vorschlag verbessern, dir nicht noch eine rüberhauen *knüppel hinterm Rücken versteck*
P.S.: Sorry wegen Off-Topic ^^
gepostet vor 16 Jahre, 11 Monate von Nivek
Danke vielmals an alle^^
@AngelFilia ich werde das mit
WHERE username='".mysql_real_escape_string($username)."'
erstmal nicht benutzen weil ich sonst meine ganzen seiten um schreiben müsst und dadrauf habe ich ehrlich gesagt keine lust, weil es sowieso wenn überhaupt nur die preAlpha ist.^^
aber wenn ich dann die Alpha schreibe werde ich diesen Tipp ganz sicher umsetzen danke.
und wegen
$datum = date("d.m.Y"); // Hier ist die Angabe von $timestamp unnötig
$uhrzeit = date("H:i:s");
ich habe $timestamp dort nur gesetzt weil ich es so in einem tutorial gesehen hab.
aber nochmals danke vielmals @ all
gepostet vor 16 Jahre, 11 Monate von Kapsonfire
Original von Nivek
Danke vielmals an alle^^
@AngelFilia ich werde das mit
WHERE username='".mysql_real_escape_string($username)."'
erstmal nicht benutzen weil ich sonst meine ganzen seiten um schreiben müsst und dadrauf habe ich ehrlich gesagt keine lust, weil es sowieso wenn überhaupt nur die preAlpha ist.^^
aber wenn ich dann die Alpha schreibe werde ich diesen Tipp ganz sicher umsetzen danke.

ich weiss nicht wie die anderen das sehen.....
eventuell laber ich nur müll
aber ich würde nicht solange warten...
was du jetzt machst brauchst du später nicht machen... und das spart sehr viel arbeit
vorrausgesetzt du behälst den größten teil des scripts^^
//edit
ich würde keine umlaute in der datenbank benutzen^^ also für die tabellennamen.spaltennamen etc

Auf diese Diskussion antworten