Top-Themen

Aktuelle Themen (A bis Z)

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

Mitglied: 29457

29457 (Level 2)

18.03.2008, aktualisiert 25.07.2008, 14545 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 ..
Ähnliche Inhalte
Windows Server

Microsoft BitLocker Administration and Monitoring (MBAM v2.5) Tips

Information von DaniWindows Server

Moin, neues aus der Reihe "Ask Premier Field Engineering (PFE) Platforms" Gruß, Dani

Exchange Server

Votet für zentrale Administration der E-mail Signaturen

Tipp von MartinLExchange Server1 Kommentar

Momentane findet eine Abstimmung statt über zukünftige Funktionen in Exchange/Outlook. Unter anderem die zentrale Verwaltung der Signaturen welches momentan ...

Windows 10

Remote Server Administration Tool (RSAT) für Windows 10 Build 10586

Information von Nemo-GWindows 1013 Kommentare

Mit Datum vom 19.11.2015 stellt MS nunmehr auch ein aktuelles Administrationstool für Windows Server Technical Preview zur Verfügung unter ...

CMS

Freie Wähler Bayern MySQL PW online

Information von sabinesCMS6 Kommentare

Die Typo3 Installation der Freien Wähler Bayern scheint wohl längere Zeit nicht mehr angefasst und/oder fehlkonfiguriert zu sein. Nach ...

Neue Wissensbeiträge
Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 1 StundeInternet1 Kommentar

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zu gleich. Da werden aus Gerüchten plötzlich Fakten, ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 6 StundenWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 1 TagWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Sicherheit

Heise Beitrag Passwort-Sammlung mit 773 Millionen Online-Konten im Netz aufgetaucht

Information von Penny.Cilin vor 1 TagSicherheit6 Kommentare

Auf Heise Online ist folgender Beitrag veröffentlicht worden: Heise Beitrag passwörter geleakt Ich bin mir jetzt nicht ganz sicher, ...

Heiß diskutierte Inhalte
Switche und Hubs
Medienkonverter mit 12 oder 24 Ports gesucht
Frage von wmuellerSwitche und Hubs23 Kommentare

Guten Morgen, ich bin auf der Suche nach einem größeren Medienkonverter, der "stumpf" 1:1 die Ports auf über ein ...

Windows Server
Uhren gehen immer wieder falsch
Frage von killtecWindows Server23 Kommentare

Hallo, ich habe folgende Konstellation: 1. Physischer DC Div. Virtuelle DC's auf Hyper-V Servern Die Hyper-V-Server, der Physische DC ...

Debian
OpenSSH Login mit Public Key schlägt fehl, mit Passwort funktioniert
gelöst Frage von DKowalkeDebian19 Kommentare

Hallo zusammen, ich hatte hier schon nach einer Anleitung für einen SFTP Server mit Linux gefragt, habe dort auch ...

Windows Server
Client in die Domäne einbinden - Allgemeine Frage dazu
gelöst Frage von RalphTWindows Server19 Kommentare

Moin, ich habe 2 DCs in einer Hauptstelle und 2 DCs in einer Nebenstelle. Ich bringe in der Hauptstelle ...