suche einen click-zähler (etwas umfangreicher)

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

  • suche einen click-zähler (etwas umfangreicher)

    Hey,
    ich bin auf der Suche nach einem Skript (oder aber guten ansätzen) einen klick counter zu realisieren...

    Ich bin gerade dabei meine Webseite zu überarbeiten.
    Ich habe mich nun schon an einen klick counter herangewagt nur dieser Funktioniert noch nicht so ganz..

    Ich lese Bilder aus einem Ordner(+ unterordner) in ein Array ein und gebe diese nach ein wenig sortieren etc aus.
    nun würde ich aber gerne, das die klicks auf ein Bild einzelnd gezählt werden, sowie unter jedes Bild ausgegeben werden.

    hier ein kleines beispiel:
    http://vorlagen.nils-werner.com/neu/...eader-alle.pic

    dort wo "[x]views" steht, soll später die gezählte zahl dort stehen.

    Ich habe mir schon überlegt, das ich jedes Bild in eine DB Eintrage, mit einer ID versehe und die klicks dann dort zähle..
    jedoch ist ein wenig mühsam so gut 200 (oder mehr) Grafiken dort einzeln einzutragen..
    hat da vlt jemand eine gute Lösung für mich?

  • #2
    Ich habe mir schon überlegt, das ich jedes Bild in eine DB Eintrage, mit einer ID versehe und die klicks dann dort zähle..
    jedoch ist ein wenig mühsam so gut 200 (oder mehr) Grafiken dort einzeln einzutragen..
    Ne eindeutige ID hast du bereits, da brauchst du keine zusätzliche: nämlich der Pfad des Bildes. Lies die Pfade zu allen Bildern aus und schreibe diese in deine Tabelle zusammen mit einer Spalte (z.B. counter) und dem Initialwert 0.
    Dann brauchst du noch ein zentrales PHP Scipt, welches die Bilder darstellt. Anhand eines Parameters (z.B. der Pfad) stellt das Script fest welches Bild angezeigt werden soll und zählt den entsprechenden Counter in der DB um eins hoch
    Code:
    <img src="/pfad/script.php?bild=/pfad/zu/bildern/deinBild.jpg" />
    PHP-Code:
    if(isset($_GET['bild']) && file_exists($_GET['bild'])){
      
    //diese MySql Abfrage setzt ein UNIQUE KEY auf bild voraus
      
    $sql "INSERT INTO tabelle (bild,zaehler) VALUES('".mysql_real_escape_string($_GET['bild'])."',0) 
    ON DUPLICATE KEY UPDATE zaehler=zaehler+1"
    ;
      
    mysql_query($sql) OR die(mysql_error());
      echo 
    '<img src="'.$_GET['bild'].'" />';
    }else{
      die 
    'Falscher Parameter für das Bild';

    Gruss

    tobi
    Zuletzt geändert von jahlives; 02.04.2008, 15:16.
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      dank dir für deine schnelle antwort, werd ich gleichmal ausprobieren :-)

      Kommentar


      • #4
        hatte für einen Bekannten mal ein Script geschrieben.
        Sehr simpel + ohne DB:
        Eigentlich selbsterklärend.
        PHP-Code:
        <?php
        $imgfolder 
        'img';
        $statfolder 'imgstats';

        $stand 0;
        $img $_GET['img'];
        $statfile $statfolder.'/'.$img.'.txt';
        if(
        file_exists($statfile)) {
            
        $stand file_get_contents($statfile);
        }
        $stand++;
        file_put_contents($statfile,$stand);

        header('Location: '.$imgfolder.'/'.$img);
        ?>

        Kommentar


        • #5
          @DerSchonWieder
          3 Fragen:
          1) Was machst du wenn zwei Bilder den gleichen Dateinamen haben?
          2) Wieso legst du die Statsdatei nicht an, falls noch nicht vorhanden?
          3) Warum versuchst du, wenn das statfile nicht exisitert, trotzdem in die nicht existente Datei zu schreiben?

          Ganz allgemein: Ein File pro Bild ist imho etwas gar viel. Das schreit förmlich nach einer DB
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            1) Bild umbenennen
            2) file_put_contents() legt falls nicht vorhanden eine neue Datei an
            3) Siehe 2

            Ein File pro Bild ist imho etwas gar viel
            Wieso?
            Solte zudem auch viel performanter als DB sein

            Kommentar


            • #7
              Zu 2) und 3) sollte ich wohl auch ab und an ins Manual schauen
              Ein Problem habe ich trotzdem noch, wenn das Statfile nicht existiert, legst du es also in jedem Fall an. Egal ob das Bild existiert oder der User dir nur einen Schrott als Parameter übergeben hat. Irgendwie müsste doch noch ne Prüfung mitrein, um festzustellen ob das Statfile überhaupt angelegt werden muss...

              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                Dann mach halt ein:
                PHP-Code:
                <?php
                $imgfolder 
                'img';
                $statfolder 'imgstats';
                $bild404 '404.jpg';
                $stand 0;

                if(
                file_exists($imgfolder.'/'.$_GET['img'])) {
                    
                $img $_GET['img'];
                } else {
                   
                $img $bild404;
                }
                $statfile $statfolder.'/'.$img.'.txt';
                if(
                file_exists($statfile)) {
                    
                $stand file_get_contents($statfile);
                }
                $stand++;
                file_put_contents($statfile,$stand);

                header('Location: '.$imgfolder.'/'.$img);
                ?>
                draus ...

                Werden sogar die "Nicht-Existent" - Fehler gezählt .

                Kommentar


                • #9
                  dank dir, das funktioniert sehr gut

                  Kommentar

                  Lädt...
                  X