PHP Affiliate Manager Script
Affiliates ManagerTutorials » PHP/MySQL Tutorials » Affiliates Manager
Affiliates Manager - Tutorial
In diesem Tutorial moechte ich euch zeigen wie ihr eure Affiliates, mit einer MySql Datenbank, ganz easy verwalten koennt.Was wird benoetigt?
- Webspace der PHP unterstuetzt
- eine MySql Datenbank / PHPMyAdmin
- Php/MySQL Basiskenntnise
Step 1 - MySQL Tabelle
Wir erzeugen eine neue Tabelle in PHPMyAdmin
CREATE TABLE `affis` (
`id` int(5) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
`url` varchar(255) NOT NULL default '',
`button` varchar(255) NOT NULL default '',
`view` int(5) NOT NULL default '0',
PRIMARY KEY (`id`)
);
`id` int(5) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
`url` varchar(255) NOT NULL default '',
`button` varchar(255) NOT NULL default '',
`view` int(5) NOT NULL default '0',
PRIMARY KEY (`id`)
);
Step 2 - affis.php
Die Ausgabeseite affis.php, listet uns alle vorhandenen Affiliates, sowie deren Aufrufe, auf...
<?php echo "<h1>All Affiliate</h1>"; // headline ausgeben // --------------------------------- Datenbankverbindung --- // $host = "localhost"; // Adresse des Datenbankservers, fast immer localhost $user = ""; // Ihr MySQL Benutzername $pass = ""; // Ihr MySQL Passwort $dbase = ""; // 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."); // ----------------------------------------------- // // DB Abfragen $abfrage = mysql_query("SELECT id,name,view,button FROM affis"); // Daten ausgeben while($row = mysql_fetch_object($abfrage)){ ?> <div style="float: left; margin: 0px 25px 10px 15px; width: 225px; font: normal 12px verdana, tahoma, sans-serif; text-align: left; border: 1px solid #C7D0D9; background-color: #E2E7EB"> <span style="float: left; padding-right: 5px;"> <a target="_blank" href="go.php?id=<?php echo $row->id; ?>"> <img border="0" src="<?php echo $row->button; ?>" width="88" height="31" alt="<?php echo $row->name; ?>" /></a> </span> <a target="_blank" href="go.php?id=<?php echo $row->id; ?>"><?php echo $row->name; ?></a><br /> Visits: <?php echo $row->view; ?> </div> <?php } // while ?>
Zu oberst haben wir die Daten, welche fuer den Verbindungsaufbau zur Datenbank von noeten sind.
Mittels $abfrage = mysql_query("SELECT id,name,view,button FROM affis"); rufen wir die Daten aus unserer Datenbank ab und geben diese dann anschliessend in einer While-Schleife aus.
Step 3 - go.php
Nun brauchen wir die Seite, welche den Klick zaehlt und den Besucher auf die URL des Affiliates weiterleitet.
<?php // --------------------------------- Datenbankverbindung // $host = "localhost"; // Adresse des Datenbankservers, fast immer localhost $user = ""; // Ihr MySQL Benutzername $pass = ""; // Ihr MySQL Passwort $dbase = ""; // 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."); // ------------------------------------------------ // $id = mysql_real_escape_string($_GET['id']); // Variable definieren // DB Abfragen $abfrage = mysql_query("SELECT url FROM affis WHERE id='$id'"); $row = mysql_fetch_object($abfrage); //setzt view+1 und leitet den Besucher weiter $update = mysql_query("UPDATE affis SET view = view+'1' WHERE id='$id'"); if($update){ // Sofern Klick gezaehlt wurde header("Location: $row->url"); // Weiterleitung } ?>
Hier haben wir dann auch wieder die Daten, die zur Datenbankverbindung, benoetigt werden.
Kann man natuerlich auch schoener loesen, indem man die Daten auf ne Extra Seite packt und dann diese einfach nur per include einbindet.
Wir rufen uns die Daten mit der id, die wir per $_GET['id'] uebergeben bekommen haben, ab,
setzen dann den Wert view + 1 und leiten dann den Besucher auf die entsprechende Seite weiter.
Step 4 - admin.php
Eigentlich wuerde das ja jetzt schon ausreichen, wir haben die Ausgabe der Daten und die Zaehlung der Klicks,
die Daten der Affiliates koennten auch per Hand in die Datenbank eingetragen werden, aber dann waer es ja nicht easy, sondern umstaendlich.
Kommen wir also nun zum 'Adminpanel' - admin.php
Wir brauchen erstmal eine Uebersicht aller Affiliates, von wo aus man die Affiliates verwalten kann ...
<h1>Affis verwalten</h1> <table width="600" cellpadding="3" class="tab"> <tr> <th width="15">ID</th> <th>Name</th> <th width="200">Website</th> <th width="55">Klicks</th> <th width="95">Bearbeiten</th> </tr> <?php // --------------------------------- Datenbankverbindung ---------------------------- // $host = "localhost"; // Adresse des Datenbankservers, fast immer localhost $user = ""; // Ihr MySQL Benutzername $pass = ""; // Ihr MySQL Passwort $dbase = ""; // 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."); // ---------------------------------------------------------------------------------- // // DB Abfragen $abfrage = mysql_query("SELECT id, name, url, view FROM affis "); // Daten ausgeben while($row = mysql_fetch_object($abfrage)){ $zeile++; // jede 2te Zeile einfaerben if ($zeile % 2 == 0) { echo "<tr>"; } else { echo "<tr bgcolor=\"#f5f5f5\">"; } ?> <td align="right"><?php echo $row->id; ?></td> <td><?php echo $row->name; ?></td> <td><?php echo $row->url; ?></td> <td align="center"><?php echo $row->view; ?></td> <td align="center"> <a href="new_affi.php?action=loeschen&id=<?php echo $row->id; ?>">Delete</a> | <a href="new_affi.php?action=edit&id=<?php echo $row->id; ?>">Edit</a> </td> </tr> <?php } // close while ?> </table><br /> <a href="new_affi.php?action=new">Neuen Affiliate anlegen</a>
Auch hier bauen wir zu erst einmal wieder die Verbindung zur Datenbank auf, rufen dann die Daten ab und geben sie dann in einer Tabelle aus.
Damit es uebersichtlicher gehalten ist, erhaelt jede 2te Tabellenreihe einen beigen Hintergrund.
Damit die Affiliates an Ort und Stelle bearbeitet werden koennen, bekommt jeder 2 Links, einer um die Daten zu editieren und der andere um den Eintrag zu loeschen.
Und ganz zu letzt findet sich ein Verweis auf die Seite zum Erstellen eines neuen Affiliates...
Step 5
Kommen wir nun zur Seite die fuer einen Neueintraeg, die Loeschung und die Editierung eines Affiliates dient.
Man haette auch alles einzel auf je eine Seite verteilen koenne, ich halte von vielen Dateien recht wenig, warum viel wenn es auch wenig geht?
Damit wir nur eine Datei haben verwenden wir eine Switch-Abfrage.
<?php // --------------------------------- Datenbankverbindung --- // $host = "localhost"; // Adresse des Datenbankservers, fast immer localhost $user = "root"; // Ihr MySQL Benutzername $pass = ""; // Ihr MySQL Passwort $dbase = "test"; // 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."); // ------------------------------ // $id = mysql_real_escape_string($_GET['id']); // Variable definieren $action = mysql_real_escape_string($_GET['action']); // Variable definieren if(isset($_GET['id'])) { // Sofern ID uebergeben wurde // DB Abfragen $abfrage = mysql_query("SELECT name,email,url,button FROM affis WHERE id='$id'"); $row = mysql_fetch_array($abfrage); $name = $row->name; $email = $row->email; $website = $row->url; $button = $row->button; } // if $_GET 'id' // ---------------------------------------------- // if (isset($_POST['submit'])) { $name = mysql_real_escape_string($_POST['name']); // Variable definieren $email = mysql_real_escape_string($_POST['email']); // Variable definieren $website = mysql_real_escape_string($_POST['url']); // Variable definieren $button = mysql_real_escape_string($_POST['button']); // Variable definieren // ------------------------------- Wenn action = new if ($action == "new") { // Check alle Felder ausgefuellt if ($name == '' || $button == '' || $website == ''){ echo '<p>Du musst alle Felder ausfuellen !</p>'; }else { $eintragen = mysql_query("INSERT INTO affis (name, email, button, url) VALUES ('$name','$email','$button','$website')"); if($eintragen){ // Sofern eintrag erfolgreich war echo "<h1>Prima ...</h1> \n"; echo "<p>Vielen Dank ...<br /><br /> \n"; echo "Der Eintrag war erfolgreich :)<br /><br />\n"; echo "<a href=\"admin.php\">Adminpanel</a></p>"; }else{ // Wenn nicht Fehler ausgeben echo '<p>Der Eintrag war nicht erfolgreich '.mysql_error().'</p>'; } } // close Check alle Felder ausgefuellt } // close action new // ------------------------------- Wenn action = edit if ($action == "edit") { // Check alle Felder ausgefuellt if ($name == '' || $button == '' || $website == '') { echo '<p>Bitte Danke alle Felder ausfuellen ...</p>'; }else { // Neue Daten in DB schreiben $update = mysql_query("UPDATE affis SET name='$name', email='$email', url='$website', button='$button' WHERE id='$id'"); if($update){ // Sofern Update erfolgreich war echo "<h1>Prima ...</h1> \n"; echo "<p>Das Update war erfolgreich ...<br /><br />\n"; echo "<a href=\"admin.php\">Adminpanel</a></p>"; }else{ // Wenn nicht Fehler ausgeben echo "<h1>Error ...</h1> \n"; echo '<p>Fehler beim Aktualisieren der Details: '.mysql_error().'</p>'; } } // close Check alle Felder ausgefuellt } // close action edit }else{// ------------------------------- Wenn action = loeschen if ($action == "loeschen") { $mode = mysql_real_escape_string($_GET['mode']); if(isset($_GET['mode'])){ // Affiliate aus DB loeschen $delete = mysql_query("DELETE from affis where id='$id'"); if ($delete) { echo "<h1>Prima ...</h1> \n"; echo "<p class=\"error\">Der Affi wurde erfolgreich geloescht ...<br /><br />\n"; echo "<a href=\"admin.php\">Adminpanel</a></p>"; } }else{ // Zur Sicherheit noch mal nachfragen echo "<p class=\"error\">Ganz sicher loeschen?</p> \n"; echo "<a href=\"new_affi.php?action=loeschen&mode=del&id=".$id."\">Ja</a>"; echo " <a href=\"affis.php\">Nein</a>"; } }// close if ($action == "loeschen") //------------------------------------- close wenn Abschicken geklickt if(($action == "edit")OR($action == "new")){ if(isset($_GET['id'])) { echo "<h2>Edit Affiliate</h2>"; // Headline definieren $form = "new_affi.php?action=edit&id=$id"; // URL => Formular }else{ echo "<h2>New Affiliate</h2>"; // Headline definieren $form = "new_affi.php?action=new"; // URL => Formular } ?> <form action="<?php echo $form; ?>" method="post"> <fieldset> <label>Name</label> <input type="text" name="name" value="<?php if(isset($_GET['id'])) { echo $name; }?>" style="width: 250px" /> <br /> <label>E-Mail</label> <input type="text" name="email" value="<?php if(isset($_GET['id'])) { echo $email; }?>" style="width: 250px" /> <br /> <label>Website</label> <input type="text" name="url" value="<?php if(isset($_GET['id'])) { echo $website; }else{ echo "http://";} ?>" style="width: 250px" /> <br /> <label>Button</label> <input type="text" name="button" value="<?php if(isset($_GET['id'])) { echo $button; }else{ echo "http://";} ?>" style="width: 250px" /> <br /><br /> <input type="submit" value="Abschicken" name="submit" /> </fieldset> </form> <?php } //close else wenn submit }// close action ?>
Als erstes, wie schon zuvor gehabt, stellen wir die Verbindung zur Datenbank her, dann rufen wir wenn per Get-Variable eine ID mitgeteiltwurde die Daten ab,
da wir die Daten eines Affiliates ja brauchen um diese zu Bearbeiten.
Sollte in der URL keine ID uebermittelt worden sein, dann prueft die naechste IF-Abfrage ob der Absende-Button gedrueckt worden ist,
sollte das der Fall sein, so kommt die Switch-Abfrage an die Reihe, diese prueft ob $action = new ist oder $action = edit.
Dann kommt der Else Teil der Abfrage, ob der Absende-Button gedrueckt wurde oder nicht und schliesslich kommt der letzte Teil unserer Switch-Abfrage ob $action=loeschen ist zum Zug.
Nun kommt schon wieder eine If-Abfrage, diese prueft ob $action = new oder $action = edit, sollte dies der Fall sein wird das Formular zum Eintragen der Angezeigt.
Das waer es dann mal im Grossen und Ganzen, wir haben nun 4 Dateien
affi.php - Listet alle Affiliates
go.php - erhoeht den Klick und leitet den Besucher weiter
admin.php - Listet alle Affiliates zur Bearbeitung
new_affi.php - Dient der Bearbeitung, Neuanlegung und Loeschung eines Affiliates
Wichtig
Damit nicht jeder beliebig Affiliates anlegen und loeschen kann, waere es sinnvoll die admin.php und die new_affi.php per htaccess zu geschuetzen.
Sollte etwas unklar sein, fragen kostet nix ;)
Tutorialdateien herunterladen
Affiliates Manager Part 2
Affiliates Manager Part 3
Das Tutorial wurde am 03.09.2009 ueberarbeitet ...
Kommentar schreibenHinterlasse einen Kommentar
Du musst angemeldet sein, um einen Kommentar zu hinterlassen...
Du bist noch kein Mitglied von Alice-Grafixx.de?
Dann kannst du dich hier kostenlos registrieren ...