Sven Rautenberg: Counter mit MySQL

Beitrag lesen

Moin!

Genauer gesagt: Ich habe hier ein Artikelsystem und möchte in jeder Artikelansicht einen Anzeige der Artikelviews einbinden.

Dein Counter zählt falsch.

Du liest mit PHP den Zählerstand aus.
Addierst mit PHP 1 dazu.
Schreibst das Resultat wieder in die Datenbank.

Wenn zwei User parallel auf den Zähler zugreifen, passiert folgendes:

User 1 liest den Zählerstand aus, z.B. "17".
User 2 liest den Zählerstand aus, ebenfalls "17".
User 1 addiert 1 dazu: "18".
User 2 addiert 1 dazu: Auch "18".
User 1 schreibt den Zähler in die Datenbank: "18"
User 2 schreibt den Zähler in die Datenbank: Auch "18".

Korrekt wäre aber gewesen, dass am Ende "19" in der Datenbank steht.

Der Grund:

$user+=1;
  echo"$user";
  mysql_query("UPDATE nacms_news SET Clicks = $user WHERE id = $id");

Wenn du an dieser Stelle das PHP-Rechnen sein läßt, und es in der Datenbank machst, hast du keine Probleme:

mysql_query("UPDATE nacms_news SET Clicks = Clicks + 1 WHERE id = $id");

- Sven Rautenberg

--
"Love your nation - respect the others."