Jessi: PHP und Zähler

Guten Abend euch allen,

hab da mal eine Frage. Ich will in einer Datenbank etwas speichern. Um grnauer zu sein will ich wissen wie oft meine Seite besucht worden ist. Dazu habe ich jetzt in der Datenbank eine Tabelle angelegt die heißt besucht und darin sind drei Spalten eine ist ID dann kommt Seite und dann wie_oft

jetzt kommt aber meine Frage. Wie bekomme ich PHP dazu, dass er den Wert immer eines nach oben setzt wenn die Seite aufgerufen wird? Kann mir da mal jemand helfen?

Wünsch euch allen noch einen schönen Guten Abend.

Gruß Jessi

  1. Hallo,

    schau mal in der Dokumentation zu deiner Datenbank nach UPDATE.

    Bert

    --
    E492: Not an editor command: Wq
    ln -s /dev/brain
  2. Hello,

    Guten Abend euch allen,

    jetzt kommt aber meine Frage. Wie bekomme ich PHP dazu, dass er den Wert immer eines nach oben setzt wenn die Seite aufgerufen wird? Kann mir da mal jemand helfen?

    Das ist Aufgabe der Datenbank, wenn Du schon für so eine einfache Aufgabe eine einsetzen willst.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hallo Tom,

      jupp will ich :-) Hmm aber ich muss doch der DB sagen, dass die immer eines nach oben zählt oder etwa nicht? Klar sonst bleibt ja immer alles auf 0 stehen * grummel *

      1. Hallo Jessi,

        jupp will ich :-) Hmm aber ich muss doch der DB sagen, dass die immer eines nach oben zählt oder etwa nicht? Klar sonst bleibt ja immer alles auf 0 stehen

        Man könnte dir dabei wahrscheinlich helfen, wenn du den Typ des von dir verwendeten Datenbank-Systems verrätst.

        Schöne Grüße,

        Johannes

        --
        ss:| zu:) ls:[ fo:) de:] va:) ch:) n4:| rl:) br:< js:| ie:{ fl:( mo:}
        1. Hallo Johannes,

          ich verwende eine SQL Datenbank :-)

          Gruß Jessi

          1. Hallo Jessi,

            ich verwende eine SQL Datenbank :-)

            Dann gibt es das AUTO_INCREMENT-Attribut.
            http://www.php-faq.de/q/q-mysql-auto-increment.html
            http://www.php-faq.de/q/q-mysql-inkrement.html

            Gruß, Thoralf

            --
            Sic Luceat Lux!
            1. Hallo Jessi,

              ich verwende eine SQL Datenbank :-)
              Dann gibt es das AUTO_INCREMENT-Attribut.
              http://www.php-faq.de/q/q-mysql-auto-increment.html
              http://www.php-faq.de/q/q-mysql-inkrement.html

              Nein, in diesem Fall ist das nicht nützlich. Es geht darum den Wert eines _einzigen_ Feldes bei jedem UPDATE um den Wert 1 zu erhöhen, nicht in einer Spalte, bei jedem neuen Eintrag um 1 hochzuzählen.

              Außerdem ist AUTO_INCREMENT eine Erweiterung von MySQL und existiert im Standard SQL nicht, deshalb wird dies bei anderen Datenbanken wahrscheinlich nicht funktionieren.

              Schöne Grüße,

              Johannes

              --
              ss:| zu:) ls:[ fo:) de:] va:) ch:) n4:| rl:) br:< js:| ie:{ fl:( mo:}
              1. Hallo Johannes,

                Nein, in diesem Fall ist das nicht nützlich. Es geht darum den Wert eines _einzigen_ Feldes bei jedem UPDATE um den Wert 1 zu erhöhen, nicht in einer Spalte, bei jedem neuen Eintrag um 1 hochzuzählen.

                Stimmt. Da bin ich durcheinandergekommen. Zu lange Pause gemacht. ;)

                Außerdem ist AUTO_INCREMENT eine Erweiterung von MySQL und existiert im Standard SQL nicht, deshalb wird dies bei anderen Datenbanken wahrscheinlich nicht funktionieren.

                Hm. Irgendwo in dem Post stand mal, ich würde mySQL unterstellen. War bestimmt ein Bielefelder dran. ;)

                Gruß, Thoralf

                --
                Sic Luceat Lux!
                1. Hello,

                  Hm. Irgendwo in dem Post stand mal, ich würde mySQL unterstellen. War bestimmt ein Bielefelder dran. ;)

                  Was hat der Bielefelder Dir unterstellt, dass Du es MySQL(R)[1] unterstellst?

                  <img src="http://www.mysql.de/common/logos/powered-by-mysql-125x64.png" border="0" alt="">

                  Harzliche Grüße aus http://www.annerschbarrich.de

                  Tom

                  --
                  [1] MySQL ist eine eingetragene Marke der MySQL AB, (leider streikt das Markenregister gerade...)
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  Nur selber lernen macht schlau
                  1. N'Abend,

                    Hm. Irgendwo in dem Post stand mal, ich würde mySQL unterstellen. War bestimmt ein Bielefelder dran. ;)
                    Was hat der Bielefelder Dir unterstellt, dass Du es MySQL(R)[1] unterstellst?

                    Nee, ich war sicher, ich hätte geschrieben, ich bezöge mich auf MySQL mangels anderslautender Auskunft der OP. Und da es Bielefeld nicht gibt[1][2], muss es ein Bielefelder sein, der diese (Halb-)Satz aus meinem Posting hat verschwinden lassen. Und Du bist ja in http://www.annerschbarrich.de. ;)

                    Gruß, Thoralf

                    [1] http://fsinfo.cs.uni-sb.de/~abe/mirrors/bielefeld.html
                    [2] http://www.google.de/search?hl=de&q=bielefeld+verschwörung&btnG=Google-Suche&meta= <-- ich hab schon wieder vergessen, warum das Forenscript den Link nicht umsetzt, &amp; war es nicht. ;)

                    --
                    Sic Luceat Lux!
                    1. Hello,

                      [...] (Halb-)Satz aus meinem Posting hat verschwinden lassen. Und Du bist ja in http://www.annerschbarrich.de. ;)

                      Ich mach hier meine eigene Verschwörung und verschwinde dann mit einem Halbsatz *haha*

                      Harzliche Grüße aus http://www.annerschbarrich.de

                      Tom

                      --
                      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                      Nur selber lernen macht schlau
                      1. Hallo Tom,

                        Ich mach hier meine eigene Verschwörung und verschwinde dann mit einem Halbsatz *haha*

                        ^^ Was soll ich darauf jetzt antworten?

                        Gruß, Thoralf

                        --
                        Sic Luceat Lux!
  3. Hallo Jessi,

    UPDATE tabellenname SET wie_oft = wie_oft +1 WHERE seite... oder was immer hier Deine Kriterien sind

    Dieter

    1. Hello,

      Hallo Jessi,

      UPDATE tabellenname SET wie_oft = wie_oft +1 WHERE seite... oder was immer hier Deine Kriterien sind

      Das geht aber nur bei SQL-Datenbanken. Es gibt auch noch andere.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. Hallo Tom,

        ich hab eine SQL Datenbank

        Gruß Jessi

  4. Ach scheiße das geht nicht :-(

    1. Hallo Jessi,

      Ach scheiße das geht nicht :-(

      _Was_ geht nicht? Was bedeutet »geht nicht« konkret?

      Schöne Grüße,

      Johannes

      --
      ss:| zu:) ls:[ fo:) de:] va:) ch:) n4:| rl:) br:< js:| ie:{ fl:( mo:}
      1. Hi,

        das mit dem Eintragen geht nicht :-(

        1. Hallo Jessi,

          das mit dem Eintragen geht nicht :-(

          Ich wiederhole meine Frage: Was heißt geht nicht? Kommen irgendwelche Fehlermeldungen? Hast du schon mal im Error-Log des Webservers und der Datenbank geguckt? Was passiert, wenn du den Query von Hand an die Datenbank sendest?

          Schöne Grüße,

          Johannes

          --
          ss:| zu:) ls:[ fo:) de:] va:) ch:) n4:| rl:) br:< js:| ie:{ fl:( mo:}
          1. Hallo Johannes,

            hab das mal genommen und das so angepasst aber das geht dann nicht

            <?php
            UPDATE zaehler SET wie_oft=wie_oft +1 WHERE privat
            ?>

            1. Hallo

              <?php
              UPDATE zaehler SET wie_oft=wie_oft +1 WHERE privat
              ?>

              WHERE privat ... Was ist denn mit privat?
              Sei mir nicht böse, aber ich habe den Eindruck, dass du noch nicht weißt, wohin du willst.
              Ich empfehle dir zur Lektüre http://www.schattenbaum.net/php/mstart.php.
              Dort wird auch das Ändern von Datensätzen erklärt.

              Tschö, Auge

              --
              Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
              (Victor Hugo)
  5. Hallo Jessi, trotz langer Debatten ist Dein Problem wohl nicht gelöst.
    Da der Server "http://www.dclp-faq.de/q/q-code-klick-zaehler.html" z. Zt. nicht erreichbar ist, maile ich Dir den kompletten Code:

    de.comp.lang.php.* FAQ
    25.8. Wie kann ich zählen, wie oft auf einen Link geklickt wurde?
    Keywords: Link | Counter
    Antwort von Martin Jansen
    Dem Skript liegt folgende Struktur der MySQL-Tabelle zugrunde:

    mysql> describe counter;
    +-------+------------------+------+-----+---------+----------------+
    | Field | Type             | Null | Key | Default | Extra          |
    +-------+------------------+------+-----+---------+----------------+
    | id    | int(10) unsigned |      | PRI | 0       | auto_increment |
    | url   | char(255)        |      |     |         |                |
    | count | int(11)          |      |     | 0       |                |
    +-------+------------------+------+-----+---------+----------------+
    3 rows in set (0.00 sec)
    Das Feld url enthält die URL, die aufgerufen wird. Das Feld count enthält die Anzahl der Klicks auf url.

    <?php

    // Zugangsdaten fuer die Datenbank
    // Diese sollten der Sicherheit halber
    // in ein Verzeichnis außerhalb des
    // Document-Root ausgelagert werden.

    $host     =    "localhost";
    $user     =    "user";
    $pass     =    "demo_password";

    $datab    =    "demo_db";
    $table    =    "counter";

    // Die per GET übergebene URL einlesen und datenbanksicher machen
    $url = addslashes($_GET['url']);

    // Verbindung zum MySQL-Server aufbauen
    $db = @mysql_connect($host, $user, $pass);

    if ($db) {
        if (@mysql_select_db($datab, $db)) {
            // Eintrag fuer die übergebene URL um 1 erhöhen.
            $query = "UPDATE $table SET count = count + 1 WHERE url = '$url'";
            $result = @mysql_query($query);

    // Noch kein Eintrag für die URL vorhanden?
            if (mysql_affected_rows() == 0) {
                $sql_insert = "INSERT INTO $table (url, count) VALUES ('$url', '1')";
                @mysql_query($sql_insert);
            }
        }
    }

    // Auf übergebene URL weiterleiten
    Header("Location: " . $_GET['URL']);

    ?>
    Anwendungsbeispiel:

    <a href="count.php?url=http://www.martin-jansen.de">Link</a>

    Als Parameter für die Datei count.php wird die URL übergeben, auf die weitergeleitet werden soll. In count.php wird nun der Datensatz in der Tabelle, der $url als Wert für das Feld url enthält um 1 erhöht und es wird auf die neue URL weitergeleitet.

    Viele Grüsse martin

    1. Hallo Martin,

      Da der Server "http://www.dclp-faq.de/q/q-code-klick-zaehler.html" z. Zt. nicht erreichbar ist, maile ich Dir den kompletten Code:

      Probier's mal mit http://www.php-faq.de/q/q-code-klick-zaehler.html.

      Schöne Grüße,

      Johannes

      --
      ss:| zu:) ls:[ fo:) de:] va:) ch:) n4:| rl:) br:< js:| ie:{ fl:( mo:}