29457
18.03.2008, aktualisiert am 25.07.2008
15446
5
0
Click-Counter mit Administration und MySQL
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:
+++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.
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.
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...
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 ...
Um die Klicks auszugeben muss nun nur die Datei in das Dokument, es muss eine PHP-Datei sein, per include Befehl eingebunden werden:
Und genau an der Stelle, wo die Anzahl der Klicks ausgegeben werden soll, muss hin:
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 ...
Was man braucht
- Webspace der PHP unterstuetzt
- eine MySql Datenbank / PHPMyAdmin
- Php/MySQL Basiskenntnise
+++Schritt 1+++
Eine neue Tabelle in PHPMyAdmin erzeugen:
CREATE TABLE `link_count` (
`id` int(5) NOT NULL auto_increment,
`url` varchar(255) NOT NULL default '',
`klicks` int(5) NOT NULL default '0',
PRIMARY KEY (`id`)
) 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.
<?php
// config.inc.php
//---------------------------
$host = "localhost"; // Adresse des Datenbankservers, i.d.R. localhost
$user = "Benutzername"; // dein MySQL Benutzername
$pass = "deinPasswort"; // dein MySQL Passwort
$dbase = "Datenbankname"; // Name der Datenbank
$connection = mysql_connect("$host","$user","$pass") OR DIE ("Keine Verbindung zu der Datenbank moeglich.");
$db = mysql_select_db($dbase , $connection) OR DIE ("Auswahl der Datenbank nicht moeglich.");
?>
+++Schrit 3+++
Nun wird eine weitere Datei erstellt, naemlich die go.php, welche man braucht, um die Klicks zu zaehlen.
<?php
// go.php
//---------------------------
include('config.inc.php');
$id = mysql_real_escape_string($_GET['id']);
$abfrage = "SELECT url FROM link_count WHERE id='$id'";
$ergebnis = mysql_query($abfrage, $connection) or die (mysql_error());
if($ergebnis){
$row = mysql_fetch_row($ergebnis);
$url = $row['url'];
$update = "UPDATE link_count SET klicks = klicks+'1' WHERE id='$id'";
$result = mysql_query($update) or die (mysql_error());
header("Location: $url"); // Weiterleitung zur URL
}else{
echo "Die ID ist nicht vorhanden ...";
}
?>
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...
<?php
// klick_count.php
//---------------------------
session_start(); // startet die Session
//---------------------- Logindate --------------------------------- //
$underground_name = "admin"; // Loginname
$underground_pass = "rabbit"; // Loginpasswort
//------------------------------------------------------------------ //
ob_start(); // startet den Ausgabepuffer
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<title>Adminpanel</title>
<meta http-equiv="Content-Language" content="de" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="imagetoolbar" content="no" />
</head>
<body>
<h1 id="header">Rabbit - Click-Counter</h1>
<br />
<?php
if(!isset($_SESSION['login'])) {
if(isset($_POST['admin_login'])) {
$login_name = strip_tags($_POST['admin_name']);
$login_pass = strip_tags($_POST['admin_pass']);
if(empty($login_name)) {
$message .= 'Bitte geben Sie ihren Usernamen ein ... <br />'; $error = "1";
}
if(empty($login_pass)) {
$message .= 'Bitte geben Sie ihr Passwort ein ... <br />'; $error = "1";
}
if($login_name != $underground_name OR $login_pass != $underground_pass){
$message .= 'Zugriff verweigert ... <br />'; $error = "1";
}
if($error != "1"){
// session handle-----------------------------
$_SESSION['login'] = $_SERVER['REMOTE_ADDR'];
header("Location: klick_counter.php");
}
if($error == "1"){
echo "<h1>Error ...</h1>\n <p>$message</p>";
}
}
}// ----------------------------------------------- Ende Login ------------------------------------- //
if(isset($_SESSION['login'])){
include('config.inc.php'); // bindet die Datei fuer die Datenbankverbindung ein
$tab = "link_count"; // definiert die zu benutzende DB-Tabelle
$links_per_page = "5"; // Anzahl der Links die Pro Seite angezeigt werden sollen
$pfad = $_SERVER['PHP_SELF']; // generiert aktueller Pfad zur Datei
// ---------------------------------------------------------------------------------------------------- //
$id = mysql_real_escape_string($_GET['id']);
$action = strip_tags($_GET['action']);
if(isset($_GET['id'])){ // wenn ID vorhanden dann Daten aus DB auslesen
$abfrage = "SELECT id, url, klicks FROM $tab WHERE id='$id'";
$ergebnis = mysql_query($abfrage) OR DIE (mysql_error());
while ($ausgabe = mysql_fetch_array($ergebnis)){
extract($ausgabe);
}
}
if($action == ''){
echo "<a href=\"$pfad?action=new\" style=\"padding: 3px 5px; border: 1px solid #B5B8BB;\">
Neuen Link eintragen ...</a>\n";
?>
<br /><br />
<h1>Uebersicht ...</h1>
<?php
$q = "SELECT id from $tab";
$result = mysql_query($q) or die (mysql_error());
if(!$result || mysql_num_rows($result)<1) {
echo "<p>Zur Zeit sind keine Links vorhanden ...</p>\n";
} else {
// ---------------------- Seitennavigationsdaten ------------------------------------------- //
$total_records = mysql_num_rows($result);
$pages = ceil($total_records / $links_per_page);
$p = "5"; // Anzahl der Links die in der Seitenavigation ausgegeben werden
// korrigieren der aktuellen Seite
if(empty($_GET['go'])) {
$go = 1;
} elseif($_GET['go'] <= 0 || $_GET['go'] > $pages) {
$go = 1;
} else {
$go = $_GET['go'];
}
// Linkkette
$links = array();
if(($go - $p) < 1){
$prevOffset = $go - 1;
}else {
$prevOffset = $p;
}
if(($go + $p) > $pages) {
$nextOffset = $pages - $go;
}else {
$nextOffset = $p;
}
$off = ($go - $prevOffset);
if ($go- $prevOffset > 1){
$first = 1;
$links = "<a href=\"".$pfad."?go=$first\" title=\"Zur ersten Seite springen\">« Erste ...</a>\n";
}
if($go != 1){
$prev = $go-1;
$links = "<a href=\"".$pfad."?go=$prev\" title=\"Zurueck zur letzen Seite\"> «</a>\n";
}
for($i = $off; $i <= ($go + $nextOffset); $i++){
if ($i != $go){
$links = "<a href=\"".$pfad."?go=$i\" title=\"Seite $i anzeigen\">$i</a>\n";
}elseif($i == $pages) {
// aktuelle Seite, braucht keinen Link
$links = "<span class=\"current\">[ $i ]</span>\n";
}
elseif($i == $go){
// aktuelle Seite, braucht keinen Link
$links = "<span class=\"current\">[ $i ]</span>\n";
}
}
if($go != $pages){
$next = $go+1;
$links = "<a href=\"".$pfad."?go=$next\" title=\"Weiter zur naechsten Seite\"> » </a>\n";
}
if ($off+$prevOffset*2 < $pages){
// zur letzen Seite springen
$last = $pages;
$links = "<a href=\"".$pfad."?go=$last\" title=\"Zur letzen Seite springen\">... Letzte »</a>\n";
}
$link_string = implode(" ", $links); // Packt alles in einen String
$start = ($go-1) * $links_per_page;
// ---------------------------------------------------------------------------------------------------- //
$links_ab = "SELECT id, url, klicks FROM $tab ORDER BY id DESC LIMIT $start,$links_per_page";
$ergebnis = mysql_query($links_ab, $connection) or die (mysql_error());
?>
<table width="500" style="border: 1px solid #B5B8BB;">
<tr>
<th width="21" align="center">ID</th>
<th>URL</th>
<th align="center">Klicks</th>
<th align="center">Option</th>
</tr>
<?php
while ($links = mysql_fetch_array($ergebnis)){
extract($links);
$zeile++; // jede 2te Zeile einfaerben
if ($zeile % 2 == 0) {
echo "<tr>";
} else {
echo "<tr bgcolor=\"#E6E9EC\">";
}
?>
<td width="21" align="center"><?php echo $id; ?></td>
<td><?php echo $url; ?></td>
<td width="56" align="center"><?php echo $klicks; ?></td>
<td width="95" align="center">
<a href="<?php echo $pfad; ?>?action=edit&id=<?php echo $id; ?>"> Edit </a> |
<a href="<?php echo $pfad; ?>?action=delete&id=<?php echo $id; ?>"> Delete </a>
</td>
</tr>
<?php
} // close while
?>
</table>
<br />
<?php
echo "<div id=\"navigation\">\n";
echo "<span class=\"pages\">Seite $go von $pages</span>\n";
echo $link_string; // Ausgabe der Seitennavigation
echo "</div>\n";
} // close urls vorhanden
} // close action leer
// ---------------------------------- / Config / ---//
if (isset($_POST['submit'])){
$url = mysql_real_escape_string($_POST['url']);
// ------------------------------- Wenn action = new --------------------------------------------------
if ($action == "new") {
$suchen = strpos($url, 'http://'); // ueberprueft ob http:// angegeben wurde
if(empty($url)){ // wenn keine URL angegeben wurde
$message .= "Bitte Danke eine URL angeben ...<br /><br />\n"; $error = "1";
}
if($suchen === false ){
$message .= "Die URL bitte mit http:// angeben ...<br /><br />"; $error = "1";
}
if($error != "1"){ // wenn alles korrekt ausgefuellt ist
$eintrag ="INSERT INTO link_count (id, url)
VALUES ('','$url')";
$okay = mysql_query($eintrag, $connection);
if ($okay) { // wenn eingetragen
$count_id = mysql_insert_id();
$generate_link = "<a href="go.php?id=$count_id"> - Linkbezeichnung/titel - </a>";
echo "<h1>Prima ...</h1> \n";
echo "<p>Vielen Dank ...<br /><br /> \n";
echo "Der Eintrag war erfolgreich :)<br /><br />\n";
echo "Der Link Tag lautet:\n <br /><strong> $generate_link </strong> <br /><br />";
echo "<a href=\"$pfad?action=new\">» noch einen Link eintragen</a><br /><br />\n";
echo "<a href=\"$pfad\">» Uebersicht ...</a></p>\n";
}else { // wenn nicht eingetragen
echo '<p>Der Eintrag war nicht erfolgreich ' .
mysql_error() . '</p>';
}
}
if($error == "1"){ // wenn nicht alles korrekt ausgefuellt war
echo "<h1>Error ...</h1><p>$message</p>";
}
} // close action - new
// ------------------------------- Wenn action = edit --------------------------------------
if ($action == "edit") {
if (empty($url)){ // wenn keine URL angegeben wurde
echo "Bitte Danke eine URL angeben ...\n";
}else {
$update = "UPDATE link_count SET url='$url' WHERE id='$id'";
$okay = mysql_query($update, $connection);
if ($okay){ // wenn update erfolgreich
echo "<h1>Prima ...</h1> \n";
echo "<p>Das Update war erfolgreich ...<br /><br />\n";
echo "<a href=\"$pfad\">» Uebersicht ...</a></p>\n";
}else{ // wenn nicht erfolgreich
echo "<h1>Error ...</h1> \n";
echo '<p>Fehler beim Aktualisieren der Details: ' .
mysql_error() . '</p>';
}
}
} // close action - edit
}// ------------------------------- Wenn action = delete ----------------------------------
if($action == "delete") {
$mode = strip_tags($_GET['mode']);
if(isset($_GET['mode'])){ // Wenn JA geklickt wurde
$loeschen = "DELETE FROM link_count WHERE id='$id'";
$ergebnis = mysql_query($loeschen) or die (mysql_error());
if ($ergebnis) { // wenn geloescht
echo "<h1>Prima ...</h1> \n";
echo "<p>Die URL wurde erfolgreich geloescht ...<br /><br />\n";
echo "<a href=\"$pfad\">» Uebersicht ...</a></p>\n";
}else{
echo "<h1>Error</h1>\n";
echo "<p>Der Eintrag konnte nicht geloescht werden ...". mysql_error() ."</p>\n";
}
} else { // Fragen ob wirklich geloescht werden soll
echo "<h1>Wirklich ...</h1>\n";
echo "<p>Ganz sicher loeschen?<br /><br />\n";
echo "<a href=\"$pad?action=delete&mode=yes&id=$id\">Ja</a>";
echo " <a href=\"$pad\">Nein</a></p> ";
}
}// close action - delete
//------------------------------------- close wenn Abschicken geklickt ------------------------------------
if(($action == "edit" AND !$okay) OR ($action == "new" AND !$okay)){
if(isset($_GET['id'])) {
echo "<h1>Link editieren ...</h1>";
}else{
echo "<h1>Neuen Link eintragen ...</h1>";
}
// ---------------- Formular zu Eintragen der URL --------------------------------------
?>
<form action="" method="post">
<fieldset style="width: 400px">
<label for="url">URL: </label>
<input type="text" name="url" value="<?php echo $url; ?>" style="width: 250px" />
<input type="submit" value=" Eintragen " name="submit" />
</fieldset>
</form>
<?php } // close action
}else{ // wenn nicht eingeloggt - login anzeigen
?>
<form action="" method="post">
<fieldset style="width: 300px">
<label for="user">Username: </label>
<input type="text" name="admin_name" style="width: 250px" />
<label for="passwort">Passwort: </label>
<input type="password" name="admin_pass" style="width: 250px" />
<br /><br />
<input type="submit" value=" Login " name="admin_login" />
</fieldset>
</form>
<?php }
ob_end_flush(); // leert/beendet den Ausgabepuffer
?>
</body>
</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 ...
<?php
// show_klicks.php
//---------------------------
include('config.inc.php');
function showklicks($id){
$abfrage = "SELECT klicks FROM link_count WHERE id = '$id'";
$ergebnis = mysql_query($abfrage, $connection) or die (mysql_error());
if($ergebnis){
$row = mysql_fetch_row($ergebnis);
extract($row);
return $klicks; // Klicks ausgeben
}
}
?>
<?php include('show_klicks.php'); ?>
<?php echo showklicks('ZAHL'); ?>
Das wars dann wohl...
Rabbit
Quelle:
http://alice-grafixx.de/PHP-MYSQL-Tutorial/Klick-Counter-mit-Adminpanel ...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 83371
Url: https://administrator.de/contentid/83371
Ausgedruckt am: 25.11.2024 um 09:11 Uhr
5 Kommentare
Neuester Kommentar
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:
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:
klick_count.php - Neu:
Des Weiteren ist die "Linkkette" ziemlich komplex geschrieben.
Hier mal von mir ein Script, was genau das selbe macht:
So, das war mal mein 1. Blick auf dein Tutorial. Der Nutzen ist sicherlich gut...
Grüße
Dani (glob. Moderator)
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:
if($error != "1"){
// session handle-----------------------------
$_SESSION['login'] = $_SERVER['REMOTE_ADDR'];
header("Location: klick_counter.php");
}
if($error == "1"){
echo "<h1>Error ...</h1>\n <p>$message</p>";
}
if($error == "1"){
echo "<h1>Error ...</h1>\n <p>$message</p>";
}
else{
// session handle-----------------------------
$_SESSION['login'] = $_SERVER['REMOTE_ADDR'];
header("Location: klick_counter.php");
}
Des Weiteren ist die "Linkkette" ziemlich komplex geschrieben.
Hier mal von mir ein Script, was genau das selbe macht:
#Konstante
define ("LIMIT", "6");
$sql="SELECT COUNT(id) AS anzahl FROM `hp_aktuelles`;";
$result=mysql_query($sql) OR die ("Fehler bei der SQL Abfrage:<br/ >" . mysql_error());
if(mysql_num_rows($result) > 0)
{
#Anzahl der Pages berechnen
$num_pages=ceil(mysql_result($result,0) / LIMIT);
}
else
{
#Seitenanzahl auf min. Eine setzen
$num_pages=1;
}
# Offset für den Query bestimmen
$offset=($_GET['page']-1)*LIMIT;
#Ausgabe der entsprechende Daten aus der Tabelle. Durch LIMIT und des berechneten Offsets wird die Ausgabe genau auf 6 festgelegt.
$sql="SELECT id, titel, text, date FROM `hp_aktuelles` ORDER BY id DESC LIMIT ".$offset.",".LIMIT.";";
$result = mysql_query($sql) OR die ("Fehler bei der SQL Abfrage: ". mysql_error());
if(mysql_num_rows($result) > 0)
{
while($row = mysql_fetch_object($result))
{
$row->text;
}
}
# Page-Links nur anzeigen, wenn es mehr als eine Seite ist.
if($num_pages > 1)
{
for($i = 1;$i <= $num_pages;$i ++)
{
# Ich bin schon auf der Seite. Also Seitenzahl ohne Link erzeugen
if($i == $_GET['page']) echo "<b style='color: #ED1520'>".$i."\n</b>";
else echo "<a class='num_pages' href='index.php?mid=".$_GET['mid']."&mod=news&page=".$i."'>".$i."</a>\n";
}
}
Grüße
Dani (glob. Moderator)
@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...
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...