Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem bei einem Klick-Counter

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem bei einem Klick-Counter

    Hallo zusammen,

    Vielleicht kann mir jemand helfen. Und zwar habe ich folgendes Problem. Ich hab mit ein kurzes Code-Schnipsel geschrieben dass mir bei jedem Klick auf einen Link den in der Datenbank gespeicherten Klick-Wert um eins erhöht. So kann ich bei Links daneben anzeigen lassen wieviele Klicks der entsprechende Link hat. So weit so gut. Das funktioniert auch prima nur bei den Links mit besonders vielen Klicks kommt es ständig vor, dass sich der Zähler quasi automatisch zurück auf 0 setzt. Ich vermute dass dies passiert, wenn mehrere User exakt gleichzeit auf einen bestimmten Link klicken. Wie kann ich dieses Problem in den Griff bekommen, sodass also die Klicks *immer* korrekt gezählt und in der Datenbank um 1 erhöht wird?

    Das ist der relevante Code-Ausschnitt:
    Code:
    $db_link = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);
    
                  mysql_select_db(MYSQL_DATABASE);			
                  
                  $sql = "SELECT * FROM linkfun WHERE id=$id";			
                  $result = mysql_query($sql);
                  $row = mysql_fetch_assoc($result);
                  
                  $a = $row['hits'];
                  $b = $a + 1;
                  
                  $sql2 = "UPDATE `linkfun` SET `hits` = '$b' WHERE `id` = '$id'";
                  $result2 = mysql_query($sql2);
    
    
    mysql_close($db_link);
    Viele Grüße und herzlichen Dank,
    Johannes


  • #2
    Hallo, also wenn es wirklich daran liegen sollte (was ich mir beim Besten Willen nicht bei einem Klickcounter vorstellen kann *g*), kannst du den UpdateQuery eine niedrigere Priorität geben, damit er wartet, bis alle höheren Abfragen abgeschlossen sind.

    Der Syntax dazu lautet:
    Code:
    UPDATE LOW_PRIORITY tblName SET ...
    Gruß fackel

    Kommentar


    • #3
      Ok, vielen Dank für den Tipp. Ich werde das mal testen, aber an was könnte es denn sonst liegen?

      Kommentar


      • #4
        SQL Injection *rofl*

        Kommentar


        • #5
          Dein Codeschnipsel ist übertrieben. Machs so:

          Code:
          $sql2 = "UPDATE linkfun SET hits = hits + 1 WHERE id = '$id'";

          Kommentar


          • #6
            Hu..

            Hatte vor 5min das gleiche Problem.
            MAchs genauso wie Zerling das vorgeschlagen hat.

            PHP-Code:
            <?php
            $query 
            "UPDATE katalog_counter SET counter=counter+1 WHERE matrikelnummer=$matrikelnummer";
            ?>
            Gruß
            Aaron

            Kommentar


            • #7
              @aaron_k: ja ich werds jetzt mal so probieren, der Hinweise mit
              PHP-Code:
              <?php
              UPDATE LOW_PRIORITY tblName SET 
              ...
              ?>
              hat nicht zum Erfolg geführt.

              Kommentar

              Lädt...
              X