mysqldumper
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 10.02.2004, 10:59   #1
TP-Senior
 
Registriert seit: Jul 2003
Sven_F macht alles soweit korrekt
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 !!
Sven_F ist offline   Mit Zitat antworten


Alt 10.02.2004, 11:14   #2
spl
TP-Insider
 
Benutzerbild von spl
 
Registriert seit: Sep 2003
Ort: Sankt Augustin
spl macht alles soweit korrekt
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
spl ist offline   Mit Zitat antworten
Alt 10.02.2004, 11:22   #3
TP-Senior
 
Registriert seit: Jul 2003
Sven_F macht alles soweit korrekt
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 ?
Sven_F ist offline   Mit Zitat antworten
Alt 10.02.2004, 11:44   #4
TP-Senior
 
Registriert seit: Jul 2003
Sven_F macht alles soweit korrekt
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 11:48 Uhr).
Sven_F ist offline   Mit Zitat antworten
Alt 10.02.2004, 12:04   #5
TP-Senior
 
Registriert seit: Oct 2002
Ort: Steinach
maffy macht alles soweit korrekt
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
maffy ist offline   Mit Zitat antworten
Alt 10.02.2004, 12:10   #6
TP-Senior
 
Registriert seit: Jul 2003
Sven_F macht alles soweit korrekt
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 12:12 Uhr).
Sven_F ist offline   Mit Zitat antworten
Alt 10.02.2004, 12:38   #7
TP-Senior
 
Registriert seit: Oct 2002
Ort: Steinach
maffy macht alles soweit korrekt
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
maffy ist offline   Mit Zitat antworten
Alt 10.02.2004, 12:52   #8
TP-Senior
 
Registriert seit: Jul 2003
Sven_F macht alles soweit korrekt
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ß !
Sven_F ist offline   Mit Zitat antworten
Alt 10.02.2004, 13:28   #9
TP-Senior
 
Registriert seit: Oct 2002
Ort: Steinach
maffy macht alles soweit korrekt
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
maffy ist offline   Mit Zitat antworten
Alt 10.02.2004, 13:35   #10
TP-Senior
 
Registriert seit: Oct 2002
Ort: Steinach
maffy macht alles soweit korrekt
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
maffy ist offline   Mit Zitat antworten
Alt 10.02.2004, 13:36   #11
TP-Senior
 
Registriert seit: Jul 2003
Sven_F macht alles soweit korrekt
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 ???
Sven_F ist offline   Mit Zitat antworten
Alt 10.02.2004, 13:41   #12
TP-Senior
 
Registriert seit: Oct 2002
Ort: Steinach
maffy macht alles soweit korrekt
Du brauchst nur eine Tabelle.

Wie z.B.:
ID|Linkbeschreibung|URL|HITS
maffy ist offline   Mit Zitat antworten
Alt 10.02.2004, 13:55   #13
TP-Senior
 
Registriert seit: Jul 2003
Sven_F macht alles soweit korrekt
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 !!
Sven_F ist offline   Mit Zitat antworten
Alt 10.02.2004, 16:36   #14
TP-Supporter
 
Benutzerbild von P4r4
 
Registriert seit: Feb 2002
P4r4 ist auf einem guten Weg
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 16:42 Uhr).
P4r4 ist offline   Mit Zitat antworten
Alt 10.02.2004, 17:35   #15
TP-Senior
 
Registriert seit: Jul 2003
Sven_F macht alles soweit korrekt
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 !
Sven_F ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Klickzähler Klickzähler
« phpbb-Forum | Images Thumbnails »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:08 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.