Brauche Banner-Klick-counter-script!!!
-
Also Tabelle mit 3 Spalten (id, url, clicks)!
id entweder also Autoinkrement, oder selber erzeugenZum einfügen:
INSERT INTO link_table SET url = '$url';
und in dem Script, auf das du verlinkst:
$sql = 'SELECT url, clicks FROM link_table WHERE id = "'.$_GET['id'].'"'; $result = mysql_query($sql); list($url,$clicks) = mysql_fetch_row($result); $clicks++; $sql = 'UPDATE link_table SET clicks = "'.$clicks.'" WHERE id = "'.$_GET['id'].'"'; mysql_query($sql); header('Location: '.$url); exit();
wenn du die URL nicht mehr auslesen musst kannst du es auch gleich so machen:
$sql = 'UPDATE link_table SET clicks = clicks+1 WHERE id = "'.$_GET['id'].'"';
-
?
Sry, kannst du mir das auch ausfürhlicher erklären, das schwerste was ich bis jetzt gemacht hab war ein GB aus ner SB gebastelt!!
sers Mc thx im voraus!
-
Was soll ich dir ausführlicher erklären? Was verstehst du denn nicht?
-
Sagen wir so, n README wär net schlecht
Also wie soll ich des machen?? So wie
Schritt 1:blabla
Schritt2:blubblubVielleicht nochn paar daten??
Ich hab PHP, MYSQL, PHPMyAdmin...
Also daran sollte es net scheitern nur ich hab keinen blassen schimmer wie ich des anstellen soll?? srysers Mc
-
Falls du ein richtig professionelles (und schönaussehndes) System mit ACP nehmen willst, dann empfehle ich dir http://www.phpadsnew.com/one/ bzw. http://sourceforge.net/projects/phpadsnew/
-
Wenn du noch so wenig Ahnung hast solltest du dir am Besten erst mal ein gutes Tutorial durchlesen (oder ein Buch)
-
Also ich ha des jetzt mal so gemacht:
<?php if($url=="http://www.doom3maps.de"){ $file="www.doom3maps.de.dat"; // datei in der der stand gespeichert wird $data = fopen($file, "r+"); $inhalt = fread($data, filesize($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{ if($url=="http://www.doom3.de") { $file="www.doom3.de.dat"; // datei in der der stand gespeichert wird $data = fopen($file, "r+"); $inhalt = fread($data, filesize($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{ if($url=="http://www.doom3genetic.de"){ $file="www.doom3genetic.de.dat"; // datei in der der stand gespeichert wird $data = fopen($file, "r+"); $inhalt = fread($data, filesize($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 "Keinen Eintrag in der Datenbank gefunden!"; } } } ?>
Den hab ich ganz am Anfang der Seite eingefügt! Also für jede URL eine If-Abfrage wenn die URL nicht dem IF-WErt Entspricht gehts weiter zur nächsten Url! Wenn keine entsprechende *.dat-DAtei da ist wird die Meldung :Kein Eintrag in DB gefunden! Ausgeworfen.
So dann hab ich noch ein script das die jeweilige *.dat-Datei ausliest:<?php $file="www.doom3maps.de.dat"; // datei $data = fopen($file, "r"); $inhalt = fread($data, filesize($file)); if(empty($inhalt)){$inhalt=0;} fclose($data); echo $inhalt; // darstellen ?>
Die wird dann bei jedem neuen Link angepasst.
Ich rufe die links mit diesem befehl auf:
links.php?url=http://www.doom3maps.de
So da gibts nur ein Prob! Irgendwas stimmt da net! DA wird ein neues Fenster geöffnet und diese Meldung angezeigt:
Warning: Cannot modify header information - headers already sent by (output started at /usr/local/httpd/htdocs/mc/links.php:1) in /usr/local/httpd/htdocs/mc/links.php on line 11
könnt ihr mir da helfen??
-
1.) du solltest anstelle von $url besser $_GET['url'] verwenden
2.) dein if-else syntax ist so nicht ganz richtig (ein if kann immer nur ein else haben -> elseif oder gleich mit switch)
3.) du solltest versuchen das ganze zu abstrahieren, sodass du nicht die ganzen URLs im Code aufführen musst
4.) ich würde dir empfehlen, nicht für jede URL eine extra Datei anzulegen, sondern (wenn schon nicht DB) alles in einer Datei abzulegen. z.B. könntest du ein Array anlegen, mit der URL als Schlüssel und den clicks als Wert. Um dieses dann in eine Datei zu schreiben kannst du es einfach mit serialize in einen String überführen - nach dem Auslesen dann wieder unserialize.
5.) vor dem Aufruf von header darf keinerlei Ausgabe erfolgen (nicht einmal Leerzeichen)
-
Hier soweit kann ich dir folgen:
<?php $url=$_GET['url'] switch(Was kommt hier rein??) { case ""
Is warscheinlich jetzt schon falsch...
Kansnte net einfach des script schreiben??? plzz
-
Zum Erhöhen des Zählers:
$file = 'link_stats.dat'; $fp = fopen($file,'r+'); $inhalt = fread($fp, filesize($file)); $link_stats = unserialize($inhalt); $link_stats[$_GET['url']]++; $inhalt = serialize($link_stats); rewind($fp); fwrite($fp,$inhalt); fclose($fp); header('Location: '.$_GET['url']);
bzw. zum Auslesen:
$file = 'link_stats.dat'; $fp = fopen($file,'r'); $inhalt = fread($fp, filesize($file)); $link_stats = unserialize($inhalt); fclose($fp); foreach($link_stats as $url => $clicks) { echo 'Die URL '.$url.' wurde bereits '.$clicks.' mal aufgerufen!<br />'; }
Der Code ist nicht getestet (evtl. macht die URL als Key Probleme ), aber ehrlich gesagt frage ich mich, warum du nicht gleich die DB nimmst, wenn du schon eine hast
-
Hab ich dir doch gesagt ich hab keine Ahnung wie ich des machen soll, sag mir wies geht und ich nehm die DB...
sers Mc
-
Ich hab dir doch schon den fast kompletten Code gepostet, wenn du damit nicht zurechtkommst kann ich nur sagen: "Tutorials lesen" (Link dazu hab ich ja auch gepostet) - wenn du davon zumindest den MySQL Teil gelesen hast solltest du keine Probleme mit meinem Code mehr haben
Ein bisschen Eigeninitiative kann man ja wohl noch verlangen :p
-
K, dann les ich mir mal die MySQL Tuts durch...
sers
-
Welchen Spaltentyp soll ich denn für die 3 spalten nehmen???
-
CREATE link_table(
ID INT AUTO_INCREMENT PRIMARY KEY,
url VARCHAR(50),
clicks INT,
);Passt des so??
-
Also die DAtensätze hab ich jetzt mit PHPmyAdmin erstellt...
So jetzt hab ich mir ne go.php erstellt mit folgendem code:<? $sql = 'SELECT url, clicks FROM link_table WHERE id = "'.$_GET['id'].'"'; $result = mysql_query($sql); list($url,$clicks) = mysql_fetch_row($result); $clicks++; $sql = 'UPDATE link_table SET clicks = "'.$clicks.'" WHERE id = "'.$_GET['id'].'"'; mysql_query($sql); header('Location: '.$url); exit(); ?>
So dann rufe ich die in DAtensätzen gespeicherten URLs mit deren IDs auf:
.../go.php?id=1
Dann kommen folgende Fehlermeldungen:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /usr/local/httpd/htdocs/mc/go.php on line 4 Warning: Cannot modify header information - headers already sent by (output started at /usr/local/httpd/htdocs/mc/go.php:4) in /usr/local/httpd/htdocs/mc/go.php on line 8
Wie kann ich die denn beheben?
-
bau mal nach dem sql); ein echo mysql_error(); ein
und für url würde ich schon mind. ein VARCHAR (255) nehmen
-
No Database Selected Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /usr/local/httpd/htdocs/mc/go.php on line 5 Warning: Cannot modify header information - headers already sent by (output started at /usr/local/httpd/htdocs/mc/go.php:4) in /usr/local/httpd/htdocs/mc/go.php on line 9
Mh ja, würd sagen der findet die datenbank net oder die wurde net ausgewählt...
sers Mc
-
Du hast die Tutorials offenbar nicht richtig gelesen. Du musst natürlich noch vorher zur Datenbank connecten und eine DB auswählen:
mysql_connect($db_server, $db_user, $db_pass); mysql_select_db($db_name);
-
Ja lol hab ich ja gesagt...
Ne weil bei dir der Code vom auslesen stand, und des conecten net dabei war hab ich gedacht des brauch man net.Naja ich probs jetzt nochmal mit conecten