Hi!
Wenn ein Spieler einen neuen Rang erreicht hat, soll das Datum sowie der neue Rang in der Datenbank gespeichert werden.
mtime = Aktuelles Datum und Zeit
Brauchst du wirklich die Zeitangabe? Ich dachte, du willst nur ein Datum festhalten.
Von jedem Spieler stehen immer 7 Datensätze drin, für jeden Tag 1 Datensatz. Die ich nur vom timestamp und der Spieler ID unterscheiden kann.
Wenn ich das Update ausführe, werden in allen 7 Datensätze, der neue rang und das Datum gespeichert.
Wenn du nur einen Datensatz ändern willst, ist die Kombination von Spieler-ID UND Datum notwendig, um den betreffenden Datensatz zu finden.
Ich möchte aber gerne, das es nur im Aktuellem Tag gespeichert wird.(Aktuelle Timestamp) Dafür habe ich in der Where Klause die Aktuelle Timestamp mit angegeben.
Du kennst den Unterschied zwischen Unix-Timestamp, MySQL-Timestamp und einem Datum ohne Zeitangabe?
Trotzdem werden alle 7 Datensätze beschrieben. Was mache ich falsch?
So sieht mein Update Script aus:
$this->db->setQuery("UPDATE jos_bf2_leaderboard Set mrank = '".$array[4]."', mtime = '".$date."'
WHERE timestamp = '".$todday."' OR bf2id = '".$bid."'");
[Zitat #1353](http://community.de.selfhtml.org/my/zitatesammlung/zitat1353). Wie lautet das SQL-Statement? So lässt sich nur sagen, dass OR garantiert nicht das ist, was du willst, denn die bf2id passt ja auf alle Datensätze des Spielers. Insofern ist es nicht verwunderlich, wenn alle 7 verändert werden.
> $todday = Aktuelle Timestamp
Wenn dein AND-Versuch keinen Datensatz liefert, wird das Problem wohl an unterschiedlichen Werten von deinem übergebenen Timestamp und dem Wert im DBMS liegen.
Lo!