Frank: Counter mit Php & Sql

hallo,
ich möchte gern einen Counter auf Sql Basis programmieren.
hab dafür 2 spalten!
anzahl (also counter) und ip .
in der spalte ip stehen alle IP's mit "||" getrennt hintereinander.
die function bis her, war ja net so schwer.
hab alles ausgelesen und die ips mit explode getrennt.

jetzt komm ich irgendwie nicht weiter.
möchte, das die aktuelle ip, die übergeben wird, mit den ips aus dem array $einzelne_ip verglichen wird.

ich weis, das ich das irgendwie mit einer for schleife machen muss bis der sizeof($einzelne_ip) erreicht ist.
nur ich leider komm ich net weiter, wenn es darum geht, das er alle so durchsucht, das er nur dann die spalte anzahl updatet, wenn die aktuelle ip nicht mit der im array gespeicherten ip übereinstimmt.
zusätzlich soll er dann die aktuelle ip zu den anderen hinzufügen.

function counter($ip)
  {
      $sql = "SELECT anzahl, ip FROM counter";
      $result = mysql_query($sql) or die(mysql_error());
      $inhalte = mysql_fetch_array($result);
      $einzelne_ip = explode("||", $inhalte['ip']);
   }

hoffentlich hab ich nichts vergessen!

oder hat jemand von euch ne bessere idee, wie ich ein Counter auf SQl schreiben kann ? vielleicht auch so, das sich die ips nach einer bestimmten zeit wieder automatisch löschen?
wäre für alle dankbar..

mfg
Frank

  1. Hallo,

    Ich habe so einen Counter schonmal geschrieben, jedoch habe ich die IPs in ein Textfile geschrieben.

    In Deiner Fall würde ich das so lösen:

    function counter($ip)
      {
          $sql = "SELECT anzahl, ip FROM counter";
          $result = mysql_query($sql) or die(mysql_error());
          $inhalte = mysql_fetch_array($result);
          $einzelne_ip = explode("||", $inhalte['ip']);
          if(!in_Array($ip,$einzelne_ip)) {
            mysql_query("UPDATE counter SET anzahl=".$inhalte['anzahl']+1.", ip='".$inhalte['ip']."||$ip'.");
          }
       }
    PS: Ich hab's nicht ausprobiert aber es sollte funktionieren.

  2. Hallo Frank,

    oder hat jemand von euch ne bessere idee, wie ich ein Counter auf SQl schreiben kann ?

    Den Datenbank-Server fuer einen Counter zu belasten, finde ich uebertrieben,
    genauso wie die Versuche, einen "genauen" Counter zu basteln.

    vielleicht auch so, das sich die ips nach einer bestimmten zeit wieder automatisch löschen?

    Das waere -wenn schon - bestimmt sinnvoll.
    Nimm dazu eine Spalte vom Typ TIMESTAMP, das macht alles ganz einfach.

    Das Konzept "1 IP = 1 Besucher" ist natuerlich vollkommen falsch.
    Stichwort Proxies.
    Und erst recht, wenn eine IP nie mehr geloescht wird.

    Lies auch:
    dclp-FAQ: Wie kann ich eine schummelsichere Abstimmung codieren?
    http://www.dclp-faq.de/q/q-scripte-abstimmung.html

    Und: Counter sind sowieso "out", siehe auch Argumentation im Thread [pref:t=61602&m=347615] ...

    Gruesse,

    Thomas