Hallo Steffen,
Ihr habt ja Recht. Also habe ich es auch inzwischen so umgesetzt.
Ich hoffe, die Halbwertszeit dieses Codes ist etwas höher als die des Vorangegangenen. ;-)
mal schauen: die Spalte last ist diejenige, die von der möglichen Magie des TIMESTAMP-Datentyps am besten profitiere kann, ich rede von
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Eigenschaften, die die Spalte vielleicht sogar schon hat (durch eingebaute Magie, die dort ebenfalls erläutert ist).
update user set
last = now(),
node_uz = "0.82034500 1267803801"
where
Session = "7e16..." AND
last > NOW() - INTERVAL 3600 SECOND AND
user_gesperrt = "0";
Du kannst Dir somit das explizite Updaten der Spalte sparen. Mit meinem anderen Vorschlag wären wir bei
[code lang=sql]UPDATE user SET
node_uz = NOT node_uz
WHERE
Session = '7e16...' AND
last > NOW() - INTERVAL 3600 SECOND AND
user_gesperrt = '0';
> $result=mysql\_query($query);
> if ($result==FALSE)
> {
> die("Fehler");
Wie war's noch. die() ist keine Fehlerbehandlung, siehe auch [Zitat 1282](http://community.de.selfhtml.org/zitatesammlung/zitat1282).
Protokolliere Fehler und MySQL-Fehlermeldung, etwa in der Art
add\_protocol($query, mysql\_error());
// und einer selbstgeschriebenen Protokollierfunktion
// Überlege, was Du weiter tun willst.
> }
>
> if (mysql\_affected\_rows() < 1)
> {
// Anmerkung: Auch wenn man das sehr häufig sieht, ist es fehlerbehaftet:
> header("Location: logout.php");
// [der Location-Header möchte eine absolute URI haben](/archiv/2009/1/t182063/#m1204546).
// Mach's richtig. Ist ja kein Problem.
> exit;
> }
> [/code]
> Und ich bedanke mich bei Euch Beiden
Sowas kommt immer gut an.
Freundliche Grüße
Vinzenz