Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Click-Counter mit Administration und MySQL

Anleitung Entwicklung PHP

Mitglied: 29457

29457 (Level 2)

18.03.2008, aktualisiert 25.07.2008, 14269 Aufrufe, 5 Kommentare

Da doch immer mal wieder die Frage nach einem Klick-Counter, oft auch gerne als Download-Counter bezeichnet, aufkommt, habe ich nun ein Tutorial geschrieben...ja, man fragt sich nun, wie viele will der diese Woche noch schreiben, aber hey, ich habe Ferien^^

Was man braucht
- Webspace der PHP unterstuetzt
- eine MySql Datenbank / PHPMyAdmin
- Php/MySQL Basiskenntnise


+++Schritt 1+++
Eine neue Tabelle in PHPMyAdmin erzeugen:
01.
CREATE TABLE `link_count` ( 
02.
`id` int(5) NOT NULL auto_increment, 
03.
`url` varchar(255) NOT NULL default '', 
04.
`klicks` int(5) NOT NULL default '0', 
05.
PRIMARY KEY (`id`) 
06.
) TYPE=MyISAM AUTO_INCREMENT=1 ; 

+++Schritt 2+++
Die Datei config.inc.php erstellen, weil diese benoetigt wird, um eine Verbindung zur Datenbank herzustellen. Die Dateiendung inc.php wird hier verwendet, damit die PHP-Datei extern nicht ausgelesen werden kann ...
Die Datei wird mittels include Befehl in die anderen Dateien eingebunden, was einem erspart, die Verbindungsdaten mehrmals anzugeben.
01.
<?php 
02.
// config.inc.php 
03.
//--------------------------- 
04.
$host = "localhost";        // Adresse des Datenbankservers, i.d.R. localhost 
05.
$user = "Benutzername";    // dein MySQL Benutzername 
06.
$pass = "deinPasswort";    // dein MySQL Passwort 
07.
$dbase = "Datenbankname";  // Name der Datenbank 
08.
 
09.
$connection = mysql_connect("$host","$user","$pass") OR DIE ("Keine Verbindung zu der Datenbank moeglich."); 
10.
$db = mysql_select_db($dbase , $connection) OR DIE ("Auswahl der Datenbank nicht moeglich.");  
11.
 
12.
?> 
Im Abschnitt Datenbankverbindung wird die Datenbankverbindung hergestell. Hierr muessen die Variablen $host, $user, $pass sowie $dbase angepasst werden.


+++Schrit 3+++
Nun wird eine weitere Datei erstellt, naemlich die go.php, welche man braucht, um die Klicks zu zaehlen.
01.
<?php 
02.
// go.php 
03.
//--------------------------- 
04.
 
05.
include('config.inc.php'); 
06.
 
07.
$id = mysql_real_escape_string($_GET['id']); 
08.
    
09.
    $abfrage = "SELECT url FROM link_count WHERE id='$id'"
10.
    $ergebnis = mysql_query($abfrage, $connection) or die (mysql_error()); 
11.
     
12.
    if($ergebnis){ 
13.
 
14.
      $row = mysql_fetch_row($ergebnis); 
15.
      $url = $row['url']; 
16.
 
17.
      $update = "UPDATE link_count SET klicks = klicks+'1' WHERE id='$id'"
18.
      $result = mysql_query($update) or die (mysql_error()); 
19.
 
20.
      header("Location:  $url"); // Weiterleitung zur URL 
21.
 
22.
    }else
23.
      echo "Die ID ist nicht vorhanden ..."
24.
25.
?> 
Zuerst wird die config.inc.php mittels include Befehl eingebunden, damit man eine Verbindung zur Datenbank herstellen kann.

Die Varibale $id bestimmt mittels mysql_real_escape_string() was ueber den Get Parameter herein kommt...

Dann wird die URL des Links mit SELECT url FROM link_count WHERE id='$id' aus der Datenbank geholt, nachdem die Datenbankabfrage korrekt verlaufen ist. Danach wird der Klick mit UPDATE link_count SET klicks = klicks+'1' WHERE id='$id' um 1 hochgezaehlt. Anschliessend erfolgt die Weiterleitung an die URL ...

Sollte die ID nicht in der Datenbank vorhanden sein, so wird eine Fehlermeldung ausgegeben...


+++Schritt 4+++
Kommen wir nun zu den Daten, mit denen man die URLs dort eintragen, loeschen und editieren kann...

01.
<?php  
02.
// klick_count.php 
03.
//--------------------------- 
04.
 
05.
session_start(); // startet die Session  
06.
 
07.
//---------------------- Logindate --------------------------------- // 
08.
$underground_name = "admin";                // Loginname 
09.
$underground_pass = "rabbit";                // Loginpasswort 
10.
//------------------------------------------------------------------ // 
11.
 
12.
ob_start();    // startet den Ausgabepuffer 
13.
?> 
14.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
15.
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
16.
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">  
17.
 
18.
<head> 
19.
<title>Adminpanel</title>  
20.
 
21.
<meta http-equiv="Content-Language" content="de" /> 
22.
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
23.
<meta http-equiv="imagetoolbar" content="no" /> 
24.
 
25.
</head> 
26.
<body> 
27.
 
28.
<h1 id="header">Rabbit - Click-Counter</h1> 
29.
<br /> 
30.
<?php  
31.
 
32.
if(!isset($_SESSION['login'])) {  
33.
 
34.
if(isset($_POST['admin_login'])) { 
35.
 
36.
$login_name = strip_tags($_POST['admin_name']); 
37.
$login_pass = strip_tags($_POST['admin_pass']); 
38.
 
39.
    if(empty($login_name)) {  
40.
        $message .= 'Bitte geben Sie ihren Usernamen ein ... <br />'; $error = "1"
41.
     }      
42.
     if(empty($login_pass)) {  
43.
        $message .= 'Bitte geben Sie ihr Passwort ein ... <br />'; $error = "1"
44.
     }      
45.
      
46.
     if($login_name != $underground_name OR $login_pass != $underground_pass){ 
47.
        $message .= 'Zugriff verweigert ... <br />'; $error = "1"
48.
49.
     
50.
    if($error != "1"){ 
51.
         
52.
            // session handle----------------------------- 
53.
            $_SESSION['login'] = $_SERVER['REMOTE_ADDR']; 
54.
 
55.
            header("Location: klick_counter.php"); 
56.
57.
     
58.
    if($error == "1"){ 
59.
        echo "<h1>Error ...</h1>\n <p>$message</p>"
60.
61.
 
62.
63.
 
64.
}// ----------------------------------------------- Ende Login ------------------------------------- // 
65.
 
66.
if(isset($_SESSION['login'])){  
67.
 
68.
include('config.inc.php');                // bindet die Datei fuer die Datenbankverbindung ein 
69.
 
70.
$tab = "link_count";                    // definiert die zu benutzende DB-Tabelle 
71.
 
72.
$links_per_page = "5";                    // Anzahl der Links die Pro Seite angezeigt werden sollen 
73.
 
74.
$pfad = $_SERVER['PHP_SELF'];            // generiert aktueller Pfad zur Datei 
75.
 
76.
// ---------------------------------------------------------------------------------------------------- // 
77.
 
78.
$id = mysql_real_escape_string($_GET['id']); 
79.
$action = strip_tags($_GET['action']); 
80.
 
81.
if(isset($_GET['id'])){ // wenn ID vorhanden dann Daten aus DB auslesen 
82.
 
83.
    $abfrage = "SELECT id, url, klicks FROM $tab WHERE id='$id'"
84.
    $ergebnis = mysql_query($abfrage) OR DIE (mysql_error()); 
85.
 
86.
    while ($ausgabe = mysql_fetch_array($ergebnis)){ 
87.
        extract($ausgabe);  
88.
89.
90.
 
91.
if($action == ''){ 
92.
 
93.
    echo "<a href=\"$pfad?action=new\" style=\"padding: 3px 5px; border: 1px solid #B5B8BB;\"
94.
          Neuen Link eintragen ...</a>\n"; 
95.
?> 
96.
<br /><br /> 
97.
 
98.
<h1>Uebersicht ...</h1> 
99.
<?php  
100.
         
101.
$q = "SELECT id from $tab"
102.
$result = mysql_query($q) or die (mysql_error()); 
103.
 
104.
if(!$result || mysql_num_rows($result)<1) { 
105.
        echo "<p>Zur Zeit sind keine Links vorhanden ...</p>\n"
106.
} else
107.
 
108.
// ---------------------- Seitennavigationsdaten ------------------------------------------- // 
109.
 
110.
$total_records = mysql_num_rows($result);  
111.
$pages = ceil($total_records / $links_per_page);  
112.
$p = "5";                  // Anzahl der Links die in der Seitenavigation ausgegeben werden 
113.
 
114.
// korrigieren der aktuellen Seite 
115.
if(empty($_GET['go'])) { 
116.
    $go = 1; 
117.
} elseif($_GET['go'] <= 0 || $_GET['go'] > $pages) { 
118.
    $go = 1; 
119.
} else
120.
    $go = $_GET['go']; 
121.
122.
 
123.
// Linkkette 
124.
$links = array(); 
125.
 
126.
if(($go - $p) < 1){           
127.
  $prevOffset = $go - 1;       
128.
}else {           
129.
  $prevOffset = $p;       
130.
}             
131.
if(($go + $p) > $pages) {           
132.
  $nextOffset = $pages - $go;       
133.
}else {           
134.
  $nextOffset = $p;       
135.
}           
136.
$off = ($go - $prevOffset);     
137.
                 
138.
if ($go- $prevOffset > 1){           
139.
    $first = 1; 
140.
    $links[] = "<a href=\"".$pfad."?go=$first\" title=\"Zur ersten Seite springen\">&laquo; Erste ...</a>\n";       
141.
}       
142.
if($go != 1){           
143.
    $prev = $go-1; 
144.
    $links[] = "<a href=\"".$pfad."?go=$prev\" title=\"Zurueck zur letzen Seite\"> &laquo;</a>\n";      
145.
}    
146.
        
147.
for($i = $off; $i <= ($go + $nextOffset); $i++){   
148.
  if ($i != $go){               
149.
        $links[] = "<a href=\"".$pfad."?go=$i\" title=\"Seite $i anzeigen\">$i</a>\n"
150.
  }elseif($i == $pages) {               
151.
        // aktuelle Seite, braucht keinen Link 
152.
        $links[] = "<span class=\"current\">[ $i ]</span>\n";   
153.
        }           
154.
  elseif($i == $go){               
155.
        // aktuelle Seite, braucht keinen Link 
156.
        $links[] = "<span class=\"current\">[ $i ]</span>\n";   
157.
        }       
158.
}                 
159.
if($go != $pages){           
160.
    $next = $go+1; 
161.
    $links[] = "<a href=\"".$pfad."?go=$next\" title=\"Weiter zur naechsten Seite\"> &raquo; </a>\n"
162.
}       
163.
 
164.
if ($off+$prevOffset*2 < $pages){           
165.
    // zur letzen Seite springen 
166.
    $last = $pages
167.
    $links[] = "<a href=\"".$pfad."?go=$last\" title=\"Zur letzen Seite springen\">... Letzte &raquo;</a>\n"
168.
}       
169.
  
170.
$link_string = implode(" &nbsp; ", $links);  // Packt alles in einen String 
171.
 
172.
$start = ($go-1) * $links_per_page;  
173.
 
174.
// ---------------------------------------------------------------------------------------------------- // 
175.
 
176.
$links_ab = "SELECT id, url, klicks FROM $tab ORDER BY id DESC LIMIT $start,$links_per_page"
177.
$ergebnis = mysql_query($links_ab, $connection) or die (mysql_error());  
178.
?> 
179.
<table width="500" style="border: 1px solid #B5B8BB;"
180.
<tr> 
181.
<th width="21" align="center">ID</th> 
182.
<th>URL</th> 
183.
<th align="center">Klicks</th> 
184.
<th align="center">Option</th> 
185.
</tr> 
186.
<?php 
187.
while ($links = mysql_fetch_array($ergebnis)){ 
188.
extract($links); 
189.
 
190.
 $zeile++;  // jede 2te Zeile einfaerben 
191.
   if ($zeile % 2 == 0) { 
192.
       echo "<tr>"
193.
   } else
194.
          echo "<tr bgcolor=\"#E6E9EC\">"
195.
196.
?> 
197.
<td width="21" align="center"><?php echo $id; ?></td> 
198.
<td><?php echo $url; ?></td> 
199.
<td width="56" align="center"><?php echo $klicks; ?></td> 
200.
<td width="95" align="center"
201.
<a href="<?php echo $pfad; ?>?action=edit&amp;id=<?php echo $id; ?>"> Edit </a>&nbsp;|&nbsp; 
202.
<a href="<?php echo $pfad; ?>?action=delete&amp;id=<?php echo $id; ?>"> Delete </a> 
203.
</td> 
204.
</tr> 
205.
<?php  
206.
} // close while 
207.
?> 
208.
</table> 
209.
<br /> 
210.
<?php 
211.
 echo "<div id=\"navigation\">\n"
212.
 
213.
 echo "<span class=\"pages\">Seite $go von $pages</span>\n"
214.
 
215.
 echo $link_string; // Ausgabe der Seitennavigation 
216.
  
217.
 echo "</div>\n";  
218.
 
219.
 } // close urls vorhanden 
220.
  
221.
} // close action leer 
222.
 
223.
// ---------------------------------- / Config / ---// 
224.
 
225.
if (isset($_POST['submit'])){ 
226.
 
227.
$url = mysql_real_escape_string($_POST['url']); 
228.
 
229.
// ------------------------------- Wenn action = new -------------------------------------------------- 
230.
 
231.
if ($action == "new") {   
232.
 
233.
$suchen = strpos($url, 'http://'); // ueberprueft ob http:// angegeben wurde 
234.
 
235.
    if(empty($url)){ // wenn keine URL angegeben wurde 
236.
        $message .= "Bitte Danke eine URL angeben ...<br /><br />\n";  $error = "1"
237.
238.
     
239.
    if($suchen === false ){ 
240.
        $message .= "Die URL bitte mit http:// angeben ...<br /><br />";  $error = "1"
241.
242.
     
243.
    if($error != "1"){ // wenn alles korrekt ausgefuellt ist 
244.
     
245.
        $eintrag ="INSERT INTO link_count (id, url)  
246.
                   VALUES ('','$url')"; 
247.
        $okay = mysql_query($eintrag, $connection); 
248.
  
249.
          if ($okay) { // wenn eingetragen 
250.
           
251.
          $count_id = mysql_insert_id(); 
252.
          $generate_link = "&lt;a href=&quot;go.php?id=$count_id&quot;&gt; - Linkbezeichnung/titel - &lt;/a&gt;"
253.
            echo "<h1>Prima ...</h1> \n"
254.
            echo "<p>Vielen Dank ...<br /><br /> \n"
255.
            echo "Der Eintrag war erfolgreich :)<br /><br />\n"
256.
            echo "Der Link Tag lautet:\n <br /><strong> $generate_link </strong> <br /><br />"
257.
            echo "<a href=\"$pfad?action=new\">» noch einen Link eintragen</a><br /><br />\n"
258.
            echo "<a href=\"$pfad\">» Uebersicht ...</a></p>\n"
259.
     
260.
             
261.
          }else { // wenn nicht eingetragen 
262.
            echo '<p>Der Eintrag war nicht erfolgreich ' . 
263.
            mysql_error() . '</p>'; 
264.
265.
266.
 
267.
    if($error == "1"){ // wenn nicht alles korrekt ausgefuellt war 
268.
        echo "<h1>Error ...</h1><p>$message</p>"
269.
270.
} // close action - new 
271.
 
272.
// ------------------------------- Wenn action = edit -------------------------------------- 
273.
if ($action == "edit") {   
274.
 
275.
    if (empty($url)){ // wenn keine URL angegeben wurde 
276.
        echo "Bitte Danke eine URL angeben ...\n"
277.
    }else
278.
 
279.
      $update = "UPDATE link_count SET url='$url' WHERE id='$id'"
280.
      $okay = mysql_query($update, $connection); 
281.
 
282.
      if ($okay){ // wenn update erfolgreich 
283.
        echo "<h1>Prima ...</h1> \n"
284.
        echo "<p>Das Update war erfolgreich ...<br /><br />\n"
285.
        echo "<a href=\"$pfad\">» Uebersicht ...</a></p>\n"
286.
         
287.
      }else{ // wenn nicht erfolgreich 
288.
        echo "<h1>Error ...</h1> \n"
289.
        echo '<p>Fehler beim Aktualisieren der Details: ' . 
290.
        mysql_error() . '</p>'; 
291.
292.
   
293.
294.
} // close action - edit 
295.
}// ------------------------------- Wenn action = delete ---------------------------------- 
296.
 
297.
 
298.
if($action == "delete") { 
299.
   
300.
$mode = strip_tags($_GET['mode']); 
301.
    
302.
   if(isset($_GET['mode'])){ // Wenn JA geklickt wurde 
303.
    
304.
    $loeschen = "DELETE FROM link_count WHERE id='$id'"
305.
    $ergebnis = mysql_query($loeschen) or die (mysql_error()); 
306.
     
307.
        if ($ergebnis) { // wenn geloescht 
308.
            echo "<h1>Prima ...</h1> \n"
309.
            echo "<p>Die URL wurde erfolgreich geloescht ...<br /><br />\n"
310.
            echo "<a href=\"$pfad\">» Uebersicht ...</a></p>\n"
311.
        }else
312.
            echo "<h1>Error</h1>\n"
313.
            echo "<p>Der Eintrag konnte nicht geloescht werden ...". mysql_error() ."</p>\n"
314.
315.
     
316.
    } else { // Fragen ob wirklich geloescht werden soll 
317.
        echo "<h1>Wirklich ...</h1>\n"
318.
        echo "<p>Ganz sicher loeschen?<br /><br />\n"
319.
        echo "<a href=\"$pad?action=delete&amp;mode=yes&id=$id\">Ja</a>"
320.
        echo "&nbsp;&nbsp;<a href=\"$pad\">Nein</a></p> "
321.
322.
     
323.
}// close action - delete 
324.
    
325.
//------------------------------------- close wenn Abschicken geklickt ------------------------------------ 
326.
 
327.
if(($action == "edit" AND !$okay) OR ($action == "new" AND !$okay)){ 
328.
 
329.
    if(isset($_GET['id'])) { 
330.
        echo "<h1>Link editieren ...</h1>"
331.
    }else
332.
        echo "<h1>Neuen Link eintragen ...</h1>"
333.
334.
// ---------------- Formular zu Eintragen der URL --------------------------------------     
335.
?> 
336.
<form action="" method="post"
337.
<fieldset style="width: 400px"
338.
<label for="url">URL: </label> 
339.
<input type="text" name="url" value="<?php echo $url; ?>" style="width: 250px" /> 
340.
 
341.
<input type="submit" value=" Eintragen " name="submit" /> 
342.
</fieldset> 
343.
 
344.
</form> 
345.
<?php } // close action  
346.
 
347.
}else{ // wenn nicht eingeloggt - login anzeigen 
348.
?> 
349.
<form action="" method="post"
350.
<fieldset style="width: 300px"
351.
<label for="user">Username: </label> 
352.
<input type="text" name="admin_name" style="width: 250px" /> 
353.
 
354.
<label for="passwort">Passwort:&nbsp; </label> 
355.
<input type="password" name="admin_pass" style="width: 250px" /> 
356.
<br /><br /> 
357.
<input type="submit" value=" Login " name="admin_login" /> 
358.
</fieldset> 
359.
 
360.
</form> 
361.
<?php } 
362.
ob_end_flush(); // leert/beendet den Ausgabepuffer 
363.
?> 
364.
</body> 
365.
</html>
Als erstet wird die Session gestartet, dies ist noetig fuer den Login ...
Danach folgen die Logindaten, diese MUESSEN angepasst werden!

if(!isset($_SESSION['login'])) leitet den Loginabschnitt ein, es folgt eine Ueberpruefung der Logindaten

if(isset($_SESSION['login'])) leitet den Abschnitt ein, den nur Eingeloggte zu sehen bekommen

Mit include('config.inc.php'); wird die Datei zur Datenbankverbindung eingebunden, die Variable $tag definiert die Datenbank-Tabelle, diese hier heisst link_count

Die Varibable $links_per_page ist fuer die Seitennavigation wichtig, sie gibt an wie viele URL pro Seite auf der Uebersichtsseite angezeigt werden sollen.

if(isset($_GET['id'])) Prueft ob eine ID uebergeben wurde, sollte dies der Fall sein, dann werden die Daten der ID aus der Datenbank ausgelesen, damit diese dann Editiert werden koennen ...

Der Abschnitt if($action == '') kommt zum Einsatz, wenn keine Action vorhanden, dann wird eine Uebersicht der in der DB enthaltenen URLs, mit Seitennavigation ausgegeben.
Hier wird dann ermoeglicht bereits vorhandene URLs zu loeschen/editieren ...

Der Abschnitt if ($action == "new";) Prueft die Daten die per Formular uebergeben wurden, und traegt die neue Url dann in die Datenbank, sollte der Eintrag korrekt abgelaufen sein, so wird ein Link Tag generiert,
der die einfache Verlinkung der gerade eingetragenen URL ermoeglicht ... Damit die Verlinkung korrekt funktioniert, muss sich die go.php im selben Verzeichnis befinden, wie die Datei in der der Link zum Einsatz kommt, ansonsten muss der Pfad ggf. angepasst werden!

Der Abschnitt if($action == "delete";) ist fuer das Loeschen einer eingetragenen URL zustaendig, hier wir nochmals nachgefragt ob die URL auch wirklich geloescht werden soll, erst nach der Bestaetigung wird die URl dann mittels DELETE FROM link_count WHERE id='$id' aus der DB geloescht ...

Danach folgt dann das Formular zum Eintragen der URl und zu guter letzt das Loginformular ....


+++Schritt 5+++
Damit die Anzahl der Klicks einer bestimmten URL ausgegeben werden kann, wird nun noch eine kleine Funktion benoetigt ...
01.
<?php 
02.
// show_klicks.php 
03.
//--------------------------- 
04.
include('config.inc.php'); 
05.
 
06.
function showklicks($id){ 
07.
 
08.
    $abfrage = "SELECT klicks FROM link_count WHERE id = '$id'"
09.
    $ergebnis = mysql_query($abfrage, $connection) or die (mysql_error()); 
10.
 
11.
    if($ergebnis){ 
12.
         $row = mysql_fetch_row($ergebnis); 
13.
         extract($row); 
14.
  
15.
         return $klicks; // Klicks ausgeben 
16.
17.
18.
?> 
Um die Klicks auszugeben muss nun nur die Datei in das Dokument, es muss eine PHP-Datei sein, per include Befehl eingebunden werden:
01.
<?php include('show_klicks.php'); ?> 
Und genau an der Stelle, wo die Anzahl der Klicks ausgegeben werden soll, muss hin:
01.
<?php echo showklicks('ZAHL'); ?> 
Fuer ZAHL muss die ID der URL eingesetzt werden, sonst wird nix ausgegeben ...


Das wars dann wohl...

Rabbit

Quelle:
http://alice-grafixx.de/PHP-MYSQL-Tutorial/Klick-Counter-mit-Adminpanel ...
Mitglied: masterG
20.03.2008 um 09:15 Uhr
Hätte ich auch vorgehabt zu schreiben, aber du warst schneller .
Auf jeden Fall gut gelungen! Großes Lob

masterG(Moderator)
Bitte warten ..
Mitglied: 29457
21.03.2008 um 17:05 Uhr
Hätte ich auch vorgehabt zu schreiben,
aber du warst schneller .
Auf jeden Fall gut gelungen! Großes
Lob

masterG(Moderator)

Jo, danke!
ja, das nenn ich mal ein speed/leistungs verhaeltnis^^

Rabbit
Bitte warten ..
Mitglied: Dani
25.03.2008 um 20:56 Uhr
Abend @all,
so, nun möchte ich auch mal Stellung beziehen:
Ich möchte dich erstmal bitten, entsprechend die Formatierung in allen deinen Anleitung anzuwenden und die entsprechenden Stellen damit deutlich zumachen. Des Weiteren, ein Inhaltsverzeichnis an den Anfang zu stellen. Das z.B. macht ein gutes Tutorial aus.

Nun speziell zu diesen Howto: Was ich vermisse:

  • Screenshot von diesen Counter
  • Wo erstelle ich die config.inc.php? Bei mir auf dem Desktop oder bei meinen Nachbarn.
  • SQL - Statements erklären (z.B. go.php)
  • Was macht die $_SESSION und für was ist dieses Array gut?
  • Einzelne Funktionen von PHP erklären per Kommentar (z.B. strip_tags, extract, ceil, etc...)
  • klick_count.php, Linkkette: Ist sehr komplex und ohne Kommentare
  • Was macht <div id> (klick_count.php) ?
  • Standards: Entweder setze ich in allen Dateien den "DOCTYPE html..." oder lass ihn überall weg.
  • Die Abhängikeiten der einzelenen Dateien ist nicht dem Text zu entnehmen bzw. ganz nachvollziehbar. Ich hab mir nebenher n Zettel schreiben müssen, damit ich die Queraufrufe kapiert habe.
  • In welche Datei muss ich folgenden Code schreiben "<?php include('show_klicks.php'); ?> " bzw. "<?php echo showklicks('ZAHL'); ?> ".
  • Die Datenbankverbindung baut sollte nur aufgebaut werden, wenn du was aus der DB holen willst bzw. etwas hinschreiben möchtest. Danach baut man diese wieder ab.

Vergiss einfach mal, was du über PHP und MySQL weißt und spiele dann das Howto durch. Dann wirst du auch nur Bruchteil verstehen...

Ganz ehrlich, du schreibst oben das ist mit Grundkenntnissen zu verstehen bzw. veränderbar. Sry, erstmal fehlen haufenweiße Kommentare an wichtigen Stellen bzw. Erklärung, warum du das so aufbaust. Des Weiteren definierst du wohl Grundkenntnisse in PHP/HTML etwas anders. Um entsprechende Anpassungen - Datensätze pro Seite, Abfragen auf die DB, etc... muss man schon einige Seiten programmiert haben bzw. auch schon Erfahrung gesammelt haben.

@masterG
Jede Zeile verstanden?! Also ich musste öfters hoch und runter scrollen bis ich die Zusammenhänge verstanden habe.
Verbesserungen:
Ich schreibe immer zuerst den alten Codeblock und dann mein Vorschlag.

klick_count.php - Alt:
01.
if($error != "1"){ 
02.
         
03.
            // session handle----------------------------- 
04.
            $_SESSION['login'] = $_SERVER['REMOTE_ADDR']; 
05.
 
06.
            header("Location: klick_counter.php"); 
07.
08.
     
09.
    if($error == "1"){ 
10.
        echo "<h1>Error ...</h1>\n <p>$message</p>"; 
11.
    }
klick_count.php - Neu:
01.
    if($error == "1"){ 
02.
        echo "<h1>Error ...</h1>\n <p>$message</p>"; 
03.
04.
else{ 
05.
         
06.
            // session handle----------------------------- 
07.
            $_SESSION['login'] = $_SERVER['REMOTE_ADDR']; 
08.
 
09.
            header("Location: klick_counter.php"); 
10.
    }
Des Weiteren ist die "Linkkette" ziemlich komplex geschrieben.
Hier mal von mir ein Script, was genau das selbe macht:
01.
#Konstante 
02.
define ("LIMIT", "6"); 
03.
 
04.
$sql="SELECT COUNT(id) AS anzahl FROM `hp_aktuelles`;"; 
05.
$result=mysql_query($sql) OR die ("Fehler bei der SQL Abfrage:<br/ >" . mysql_error()); 
06.
			 
07.
if(mysql_num_rows($result) > 0) 
08.
09.
#Anzahl der Pages berechnen 
10.
$num_pages=ceil(mysql_result($result,0) / LIMIT); 
11.
12.
else 
13.
14.
#Seitenanzahl auf min. Eine setzen 
15.
$num_pages=1; 
16.
17.
# Offset für den Query bestimmen 
18.
$offset=($_GET['page']-1)*LIMIT; 
19.
 
20.
#Ausgabe der entsprechende Daten aus der Tabelle. Durch LIMIT und des berechneten Offsets wird die Ausgabe genau auf 6 festgelegt. 
21.
$sql="SELECT id, titel, text, date FROM `hp_aktuelles` ORDER BY id DESC LIMIT ".$offset.",".LIMIT.";"; 
22.
$result = mysql_query($sql) OR die ("Fehler bei der SQL Abfrage: ". mysql_error());   
23.
 
24.
if(mysql_num_rows($result) > 0) 
25.
26.
while($row = mysql_fetch_object($result)) 
27.
28.
$row->text; 
29.
30.
31.
 
32.
# Page-Links nur anzeigen, wenn es mehr als eine Seite ist. 
33.
if($num_pages > 1) 
34.
35.
for($i = 1;$i <= $num_pages;$i ++) 
36.
37.
# Ich bin schon auf der Seite. Also Seitenzahl ohne Link erzeugen 
38.
if($i == $_GET['page']) echo "<b style='color: #ED1520'>".$i."\n</b>"; 
39.
else echo "<a class='num_pages' href='index.php?mid=".$_GET['mid']."&mod=news&page=".$i."'>".$i."</a>\n"; 
40.
41.
}
So, das war mal mein 1. Blick auf dein Tutorial. Der Nutzen ist sicherlich gut...


Grüße
Dani (glob. Moderator)
Bitte warten ..
Mitglied: 29457
03.04.2008 um 18:23 Uhr
okay...also ich werde das tutorial bald abaendern...momentan geht es schlecht, weil ich noch unter pruefungsdruck stehe aber sobald diese geschrieben worden sind werde ich es einfacher schreiben und an gewissen stellen abaendern..,

Rabbit
Bitte warten ..
Mitglied: jamdesigns
25.07.2008 um 23:33 Uhr
@29457

du willst es abändern? kannst du das? auch dieses tutorial ist 1:1 geklaut! du solltest dich was schämen die tutorials als deine auszugeben. geklaut von: http://alice-grafixx.de/PHP-MYSQL-Tutorial/Klick-Counter-mit-Adminpanel ...

das ja nicht das erste. werd mal die anderen auch checken müssen...
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
TK-Netze & Geräte
gelöst Administration Alcatel Telefonanlage (7)

Frage von malungo zum Thema TK-Netze & Geräte ...

PHP
PHP MySQL Login (7)

Frage von Yanmai zum Thema PHP ...

Webbrowser
gelöst Daten in entfernte Mysql DB schreiben (3)

Frage von nullacht15 zum Thema Webbrowser ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...