+ Antworten
Seite 1 von 3 1 2 3 LetzteLetzte
Ergebnis 1 bis 15 von 34

Thema: Klickzähler

  1. #1
    TP-Senior Sven_F macht alles soweit korrekt
    Registriert seit
    Jul 2003
    Beiträge
    251

    Exclamation Klickzähler

    Hallo ! Ihr Lieben Helfer !

    Nun bin ich schon etwas fitter in sachen php und habe einen Klickzähler gebaut (gut mit hilfe von anderen Scripts) !

    Jetzt ist meine Frage: Was oder wie muß ich es anstellen das ich auf einer Seite mit mehreren Links für jeden Link einen seperaten Klickzähler habe ?

    Hier einmal der code für den Klickzähler EINES Links :

    Click.php
    PHP-Code:
    <?php
    if($url!=""){
      
    $file="click.dat"// datei in der der stand gespeichert wird
      
    $data fopen($file"r+");
      
    $inhalt fread($datafilesize($file));
      if(empty(
    $inhalt)){$inhalt=0;} // wenn die datei leer ist, ist der stand 0
      
    $inhalt++;
      
    rewind($data);
      
    fwrite($data$inhalt);
      
    fclose($data);
      
    header("location:".$url.""); // weiterleitung
    }
    else{
      echo 
    "Ha Ha!!";
    }
    ?>
    Ausgelesen werden die Klicks hiermit :

    Link.php (Dies ist die Seite auf der ich den/die Klickzähler haben will)
    PHP-Code:
    Es wurde bereits
    <?php
    $file
    ="click.dat"// datei
    $data fopen($file"r");
    $inhalt fread($datafilesize($file));
    if(empty(
    $inhalt)){$inhalt=0;}
    fclose($data);
    echo 
    $inhalt// darstellen
    ?>
    Mal auf einen Link geklickt.
    Die einzige Lösung die mir bis Jetzt eingefallen ist, ist das ich für jeden Link eine seperate Click.php baue aber was ist wenn ich 50 Links habe das macht dann Click01.php - Click50.php ! Hinzu kommen dann noch 50 Cklick.dat Dateien und das ist ja doch ein wenig heftig !
    Doch leider komme ich nicht auf die Lösung wie man das über nur eine Click.php machen kann !

    Am liebesten wäre es mir auch wenn das Ganze über eine Datenbank läuft anstelle einer Click.dat !!!

    Wie immer bin ich jetzt schon Dankbar für jede Art von Hilfe ! Ja ich bin sogar schon fürs lesen meines Problems sehr dankbar !!

  2. #2
    spl
    spl ist offline
    TP-Insider spl macht alles soweit korrekt Avatar von spl
    Registriert seit
    Sep 2003
    Ort
    Sankt Augustin
    Beiträge
    639
    Eine Datenbank lösung wäre echt gut.

    1. Abfrage ob URL in DB ist#
    2. wenn nein mit 0 reinschreiben.
    3. um ein erhöhen.

    Die Ausgabe dann über alle Daten einlesen und per while ausgeben.

    Eine Möglichkeit ohne DB ist aber auch:

    1. Test ist eine Datei mit $url.dat da?
    2. Wenn nein anlegen.
    3. Um 1 erhöhen.

    Auslesen indem man das Verzeichnis im dem die Dat-Files liegen einleist und abarbeitet.
    Der Dateiname entspricht jeweils dem URL des Links.

    Besser ist aber sicherlich die DBvariante.
    Gruß Sebastian

    Webdesign und viel mehr http://lauff.info

    yingiz, deine Wirtschaftsgemeinschaft im Netz - gemeinsam bis zu 60% vom Verkaufspreis oder bis zu 300 € Provisionen verdienen. Jeder profitiert von Jedem! Gemeinsam stark! Jetzt anmelden

  3. #3
    TP-Senior Sven_F macht alles soweit korrekt
    Registriert seit
    Jul 2003
    Beiträge
    251
    Mit DB wäre mir ehrlich gesagt auch viel lieber !

    Nur ist die Frage wie muß die DB aussehen ?

    Welche Felder müßen vorhanden sein und brauche ich für jede Url ein extra Feld ?

  4. #4
    TP-Senior Sven_F macht alles soweit korrekt
    Registriert seit
    Jul 2003
    Beiträge
    251
    Genügt es wenn Die DB so aussieht ?

    ------------------------------------------------------------------------
    | Fild | Type | lenght | Attributes | NULL | Default | Extra |
    ------------------------------------------------------------------------
    | ID...|.Blob..|...........|..................| not n |.............|..........|
    ------------------------------------------------------------------------
    | URL|.Blob..|...........|...................| not n |............|...........|
    ------------------------------------------------------------------------
    | HIT |varchar| 5......| ..................| not n |............|...........|
    ------------------------------------------------------------------------

    Ist diese Tabelle Ausreichend oder wie muß ich sie gestallten wenn es ca 50 Links sind (jeder mit einem Klickzähler) !!

    Nachtrag: Wenn die so ausreichend ist dann ist dieses Thema abgehagt denn dann weiß ich wie ich vorgehen muß doch wenn icht bräuchte ich noch ne kleine Hilfestellung !
    Geändert von Sven_F (10.02.2004 um 10:48 Uhr)

  5. #5
    TP-Senior maffy macht alles soweit korrekt
    Registriert seit
    Oct 2002
    Ort
    Steinach
    Beiträge
    146
    Ich verwende folgendes kleines Script für das zählen der clicks

    Die Tabelle für die Links könnte so aussehen
    Du kannst natürlich auch andere Spalten verwenden.

    id | int | pri | auto_increment
    clicks | int
    header | varchar
    url | varchar
    beschreibung | varchar

    Die Datei click.php
    PHP-Code:

    $dbhost 
    "Server"
    $dbuser "User";
    $dbpass "Password"
    $dbname "Datenbank";
    $table "Tabellenname";
    $id $_GET['id']; 

    $conn mysql_connect($dbhost$dbuser$dbpass) or die ("Verbindung zur Datenbank fehlgeschlagen!"); 
    $dv   mysql_select_db($dbname) or die ("Datenbank existiert nicht!"); 
    $sql  mysql_query("SELECT * FROM $table WHERE id = '$id'"); 

    $data mysql_fetch_array($sql); 
    $data['clicks']++; 

    $sql  mysql_query("UPDATE $table SET clicks = '$data[clicks]' WHERE id = '$id'"); 

    header("Location: $data[url]"); 
    Der Link muss dann so aussehen:

    PHP-Code:
    <a href=clicks.php?id=$row[idtarget='_blank' >$row[beschreibung]</a

  6. #6
    TP-Senior Sven_F macht alles soweit korrekt
    Registriert seit
    Jul 2003
    Beiträge
    251
    Hi maffy !

    Erstmal Danke fürs Script !

    Kleine Frage habe ich allerdings noch :

    Wofür ist BESCHREIBUNG ?
    Und kann ich mit diesem Script auf 50 Links ein Klickzähler machen und zählt der Klick dann auch nur für den angeklickten Link oder erhöen sich dann Alle um 1 ?

    NACHTRAG :

    Ist mit Beschreibung gemeint "Hier gehts zur Startseite " oder " Zum Forum " usw ... ???
    Geändert von Sven_F (10.02.2004 um 11:12 Uhr)

  7. #7
    TP-Senior maffy macht alles soweit korrekt
    Registriert seit
    Oct 2002
    Ort
    Steinach
    Beiträge
    146
    Schau mal auf meine Homepage da siehst Du wie ich es eingesetzt habe.

    Dort zählt er nach einem klick auf ein Tutorial den klick und erhöt den wert um 1.

    Die Spalte Beschreibung ist eine kurze Beschreibung des Inhalts, also was der User auf der Internet Seite zu erwarten hatt. Das kannste aber auch weglassen.

    MFG Maffy

  8. #8
    TP-Senior Sven_F macht alles soweit korrekt
    Registriert seit
    Jul 2003
    Beiträge
    251
    Also Angenommen ich verlinke das Forum !

    Bisher schrieb ich :

    <a href="Forum/index.php" target="_blank"> .: Forum :. </a>

    Nun muß ich es so verlinken :

    <a href=clicks.php?id=$row[id] target='_blank'> .: Forum :. </a>

    So richtig ?

    Wenn ja woher weiß das Prog dann welche ID für das Forum ist ?
    Oder muß ich das vorher in der DB angeben (manuell) ??

    Denn nun weiß ich soweit bescheid ist nur die Frage wie ich richtig verlinken muß !

  9. #9
    TP-Senior maffy macht alles soweit korrekt
    Registriert seit
    Oct 2002
    Ort
    Steinach
    Beiträge
    146
    Nemen wir mal an die Tabelle Foren besteht aus diesen Spalten:

    id
    fid
    name

    Wenn du jetzt zählen willst wieviele Leute das Forum aufrufen
    änderst Du einfach die click.php so um.

    PHP-Code:
    $table "foren"// Tabellenname
    $id $_GET['fid']; 


    $conn mysql_connect($dbhost$dbuser$dbpass) or die ("Verbindung zur Datenbank fehlgeschlagen!"); 
    $dv   mysql_select_db($dbname) or die ("Datenbank existiert nicht!"); 
    $sql  mysql_query("SELECT * FROM $table WHERE id = '$id'"); 

    $data mysql_fetch_array($sql); 
    $data['clicks']++; 

    $sql  mysql_query("UPDATE $table SET clicks = '$data[clicks]' WHERE id = '$id'"); 

    header("Location: showthreads.php?fid=$id"); 
    und den Link:

    PHP-Code:
    <a href=counter.php?fid=$row[fid]>Die Beiträge</a
    so sollte er dann die clicks für das jeweilige Forum zählen

  10. #10
    TP-Senior maffy macht alles soweit korrekt
    Registriert seit
    Oct 2002
    Ort
    Steinach
    Beiträge
    146
    Die Abfrage für die Datensätze könnte dann ungefähr so aussehen.

    Also, wo die Threads des Forums stehen sollen.

    PHP-Code:
    SELECT f.fidf.name,
    t.idt.fid parentforumt.topic
    FROM foren f INNER JOIN threads t
    USING 
    (fid)
    WHERE f.fid=$_GET[fid

  11. #11
    TP-Senior Sven_F macht alles soweit korrekt
    Registriert seit
    Jul 2003
    Beiträge
    251
    Verstehe ich das richtig das ich für jeden Klickzähler eine extra Tabelle brauche ?

    Vielleicht war auch das Beispiel mit dem Forum falsch !

    Anderes Beispiel :

    Ich habe eine Seite mit einer Tabelle in der verschiedene LINK's stehen !
    z.B.:

    | 001 | www.a.de | ? klicks |
    | 002 | www.b.de | ? klicks |
    | 003 | www.c.de | ? klicks |
    | 004 | www.d.de | ? klicks |

    So wie muß nun die DB aussehen ?
    Wie muß ich A B C und D verlinken so das jeder Link einen eigenen Zähler hat !

    Denn ich möchte ja nicht das wenn man auf A klickt das der zähler bei B C und D mit zählt !

    Ich glaube anhand dieses Beispiels ist es besser zu verstehen wo ich meine Probleme habe !

    Muß ich in der DB für A B C und D jeweils eine seperate Tabelle anlegen ???

  12. #12
    TP-Senior maffy macht alles soweit korrekt
    Registriert seit
    Oct 2002
    Ort
    Steinach
    Beiträge
    146
    Du brauchst nur eine Tabelle.

    Wie z.B.:
    ID|Linkbeschreibung|URL|HITS

  13. #13
    TP-Senior Sven_F macht alles soweit korrekt
    Registriert seit
    Jul 2003
    Beiträge
    251
    OK ich fasse mal zusammen ob ich es geschnallt habe ! Denn durch so viele Codes bin ich etwas durch einander gekommen !

    Ich erstelle eine tabelle in der DB mit dem Namen "KLICKZÄHLER"

    Die Click.php lautet
    PHP-Code:
    $dbhost "Server"
    $dbuser "User";
    $dbpass "Password"
    $dbname "Datenbank";
    $table "KLICKZÄHLER";
    $id $_GET['id']; 

    $conn mysql_connect($dbhost$dbuser$dbpass) or die ("Verbindung zur Datenbank fehlgeschlagen!"); 
    $dv   mysql_select_db($dbname) or die ("Datenbank existiert nicht!"); 
    $sql  mysql_query("SELECT * FROM $table WHERE id = '$id'"); 

    $data mysql_fetch_array($sql); 
    $data['clicks']++; 

    $sql  mysql_query("UPDATE $table SET clicks = '$data[clicks]' WHERE id = '$id'"); 

    header("Location: $data[url]"); 
    Soweit so gut !

    Nun habe ich eine Seite namens "Verschidene_Links.html"

    in dieser HTML ist folgene Tabelle :

    | 001 | www.a.de | ? klicks |
    | 002 | www.b.de | ? klicks |
    | 003 | www.c.de | ? klicks |
    | 004 | www.d.de | ? klicks |


    Die Adressen in dieser Tabelle sollen ein Klickzähler haben !

    Wenn ich nun die 4 Adressen wie folgt verlinke :

    <a href=Cklick.php?id=$row[id] target='_blank' > www.a.de </a>
    <a href=Cklick.php?id=$row[id] target='_blank' > www.b.de </a>
    <a href=Cklick.php?id=$row[id] target='_blank' > www.c.de </a>
    <a href=Cklick.php?id=$row[id] target='_blank' > www.d.de </a>

    woher weiß ich das ich auch auf die InternetSeite A komme wenn ich auf www.a.de klicke ???


    Ich weiß ich stelle viele fragen aber dadurch das hier nun soviele Code's sind bin ich total verwirrt und blicke nicht mehr ganz durch !
    SORRY !!

  14. #14
    TP-Insider P4r4 macht sich hier sehr viel Mühe Avatar von P4r4
    Registriert seit
    Feb 2002
    Beiträge
    550
    Hi,

    also wenn du externe Links zählen willst, dann hast du in dieser Form ein Problem:
    Wenn du nun google.de linken willst, dann sieht das nach den bisherigen vorgaben so aus:

    <a href="http://www.google.de?id=$row[id]">Google</a>

    Das ist jedoch nicht besonders geschickt, da du die Variable id, dann an Google sendest.

    Du müsstest zunächst ein PHP Script linken:

    <a href="link.php?id=5">Google</a>

    Damit das Script link.php dich nun auf Google.de weiter leiten kann, musst du nun noch eine weitere Variable hinzufügen, nämlich die URL der Seite:

    <a href="link.php?id=5&url=http://www.google.de">Google</a>

    Zum Inhalt der Datei link.php:
    (Folgendes ist auf eine Tabelle mit den Feldern id und hits ausgelegt!)

    PHP-Code:
    <?
    @mysql_connect($dbhost$dbuser$dbpass);
    @
    mysql_select_db($dbname);

    @
    mysql_query("UPDATE klickzaehler SET hits=hits+1 WHERE id=".$_GET[id]);
    header("Location: $_GET[url]");
    ?>
    Damit wird der Wert hits um 1 erhöht!
    Wenn du den Link zu der Seite auch in der DB abspeichern willst, dann kannst du dir die Variable url in der URL zum Script link.php sparen, musst im Script link.php zuvor jedoch den zugehörigen Link zur ID auslesen und in header() einsetzen.

    cYa
    Para
    Geändert von P4r4 (10.02.2004 um 15:42 Uhr)

  15. #15
    TP-Senior Sven_F macht alles soweit korrekt
    Registriert seit
    Jul 2003
    Beiträge
    251
    Ohweh ! Jetzt versteh ich nur noch Bahnhof !

    Also NOCHMAL !

    Ich erstelle eine Tabelle (KLICKZÄHLER) in einer DB mit den Feldern ID und hits !

    Ok das habe ich verstanden und bekomme ich auch hin !

    Dann erstelle ich eine php mit dem Namen LINK.php und folgenem Quelltext :

    PHP-Code:
    <?
    @mysql_connect($dbhost$dbuser$dbpass);
    @
    mysql_select_db($dbname);

    @
    mysql_query("UPDATE KLICKZÄHLER SET hits=hits+1 WHERE id=".$_GET[id]);
    header("Location: $_GET[url]");
    ?>
    Hab ich auch begriffen !

    Nun kann ich meine Links in der LINKS.HTML wie folgt verlinken :
    PHP-Code:
    <a href="LINK.php?id=5&url=http://www.A.de"> .: :. </a>
    <
    a href="LINK.php?id=5&url=http://www.B.de"> .: :. </a>
    <
    a href="LINK.php?id=5&url=http://www.C.de"> .: :. </a>
    <
    a href="LINK.php?id=5&url=http://www.D.de"> .: :. </a
    Ist das jetzt Richtig ?
    Wenn nein wo genau liegt nun noch der Fehler ?

    Da ich nun meine Arbeit fertig habe an der ich gerade noch zugange war teste ich es mal so wie ich es bis jetzt begriffen habe !
    Mal sehen ob es klappt !

+ Antworten
Seite 1 von 3 1 2 3 LetzteLetzte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51