Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Ankündigungen, News und Feedback > Tutorials > [PHP] Ein simples Bannerrotations"system"

Layoutprobleme? - Styleswitcher!

Antwort
 
Themen-Optionen
Alt 28.06.2005, 23:11 Nach oben    #1
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 3.812
Standard [PHP] Ein simples Bannerrotations"system"

Dieses Tutorial wurde geschrieben von: Ben

################

Ein simples Bannerrotations"system"

Da ich gerade nichts zu tun hatte, habe ich mal ein kleines Script geschrieben, welches eine Bannerrotation möglich macht.

Ich greife dabei auf diesen FAQ-Beitrag hier zurück:
Zufallsdatensatz auslesen - MySQL 3.23


Das folgende Tutorial beschreibt ein Mini-System, welches lediglich die Möglichkeit bietet neue Banner hinzuzufügen.

Als erstes verbinden wir uns zu einer Datenbank unserer Wahl.

PHP-Code:
<?php
 
    
require_once('config.inc.php');

    
/**
     * Wir erstellen nun die Verbindung zur Datenbank
     */
    
if(!$connection mysql_connect_DB_HOST_DB_USER_DB_PASSWORD)) {
        die(
'Verbindung zum Datenbankserver konnte nicht hergestellt werden.');
    }

    if(!
mysql_select_db(_DB_DATABASE_NAME$connection)) {
        die(
sprintf('Die Datenbank <strong>%s</strong> kann nicht verwendet werden. 
                     <br />
                     MySQL-Error: <br />%s'
,
                     
_DB_DATABASE_NAME,
                     
mysql_error()));
    } 
?>
Die Datei config.inc.php sieht in meinem lokalen Fall so aus:
PHP-Code:
<?php

    
/**
     * Es werden in diesem Falle Konstanten definiert, welche dann global im 
     * Script verfügbar sind.
     */
     
    
define('_DB_HOST''localhost');
    
define('_DB_USER''root');
    
define('_DB_PASSWORD''');
    
define('_DB_DATABASE_NAME''scriptarchiv');

?>

Das Script ist in zwei Teile eingeteilt.
Sind wir im Adminbereich, so haben wir die Möglichkeit neue Banner der Datenbank hinzuzufügen.

Standardmäßig wird zunächst einmal das Formular zum Eintragen des Pfades, unter welchem das Banner zu finden ist, angezeigt.
PHP-Code:
<?php

   
else {
       
/**
        * Formular anzeigen.
        */
       
printf('<form action="%s" method="post">
                     Pfad des Banners: <input type="text" name="path" size="35" /><br />
                     <input type="submit" name="submit" value="eintragen" />
                 </form>'
,
                 
$_SERVER['REQUEST_URI']);
    }

?>
Die Darstellung ist natürlich stark vereinfacht, allerdings sollte sie ausreichen, um das Prinzip verständlich zu machen.

Wurde das Formular abgesendet, so wird der eingetragene Bannerpfad in die Datenbanktabelle eingefügt.
PHP-Code:
<?php

        
if(array_key_exists('submit'$_POST)) {
            
/**
              * Bannerpfad in die Datenbanktabelle einfügen
              */
            
$sql "INSERT INTO
                              bannerrotation
                              (_path)
                        VALUES
                              ('%s')"
;

            
$sql sprintf($sqlmysql_escape_string($_POST['path'])); 

            
mysql_query($sql) or die(sprintf('Fehler beim Auslesen eines Banners<br />
                                                            Zeile: %s<br />
                                                            Datei: %s<br />
                                                            MySQL-Error: %s<br />
                                                            <pre>%s</pre>'
,
                                                            
__LINE__,
                                                            
__FILE__,
                                                            
mysql_error(),
                                                            
$sql));
                                          
            
printf('Das Banner wurde erfolgreich der Datenbank hinzugefügt.
                     <br />
                     <a href="%s">Hier geht es zurück zur Testseite.</a>'
,
                     
$_SERVER['PHP_SELF']);                                           
     }
Die Überprüfung geschieht mittels der Funktion array_key_exists(), welche einfach nur überprüft, ob der gesuchte Schlüssel im Array vorhanden ist.
Dies ist bei submit nur der Fall, wenn man auf den Submitbutton geklickt hat

Nun gut. Der komplette "Admin"-Teil sieht folgendermaßen aus:
PHP-Code:
<?php

    
/**
     * Entscheiden, was angezeigt werden soll.
     * "Adminbereich" oder Bannerrotation
     */
    
if(array_key_exists('admin'$_GET)) {

        if(
array_key_exists('submit'$_POST)) {
            
/**
             * Bannerpfad in die Datenbanktabelle einfügen
             */
            
$sql "INSERT INTO
                            bannerrotation
                            (_path)
                       VALUES
                            ('%s')"
;
                    
            
$sql sprintf($sqlmysql_escape_string($_POST['path'])); 

            
mysql_query($sql) or die(sprintf('Fehler beim Einfügen eines Banners<br />
                                                            Zeile: %s<br />
                                                            Datei: %s<br />
                                                            MySQL-Error: %s<br />
                                                            <pre>%s</pre>'
,
                                                            
__LINE__,
                                                            
__FILE__,
                                                            
mysql_error(),
                                                            
$sql));

            
printf('Das Banner wurde erfolgreich der Datenbank hinzugefügt.
                     <br />
                     <a href="%s">Hier geht es zurück zur Testseite.</a>'
,
                     
$_SERVER['PHP_SELF']);                                           
        }
        else {
                
/**
                  * Formular anzeigen.
                 */
                
printf('<form action="%s" method="post">
                            Pfad des Banners: <input type="text" name="path" size="35" /><br />
                            <input type="submit" name="submit" value="eintragen" />
                         </form>'
,
                         
$_SERVER['REQUEST_URI']);
        }
    }

?>
Aber wo werden nun eigentlich die Banner angezeigt? Wo ist die Rotation?
Tjoa

Hier ist sie.
Wir lesen einfach einen zufälligen Datensatz aus der Tabelle aus
PHP-Code:
<?php

        
/**
         * Zufällig einen Datensatz auslesen.
         * Siehe dazu: [url]http://forum.developers-guide.net/showthread.php?t=74[/url]
         */
        
$sql 'SELECT
                    _id,
                    _path
                FROM
                    bannerrotation
                ORDER BY
                    RAND()
                LIMIT
                    0, 1'
;
                    
        
$resource mysql_query($sql) or die(sprintf('Fehler beim Auslesen eines Banners<br />
                                                      Zeile: %s<br />
                                                      Datei: %s<br />
                                                      MySQL-Error: %s'
,
                                                      
__LINE__,
                                                      
__FILE__,
                                                      
mysql_error()));

?>
Siehe dazu bitte auch den oben angesprochenen FAQ-Beitrag:
Zufallsdatensatz auslesen - MySQL 3.23

Danach überprüfen nun noch ganz kurz, ob überhaupt ein Banner existiert.
Ist dies nicht der Fall geben wir eine entsprechende Meldung aus.
PHP-Code:
<?php

        
if(mysql_num_rows($resource) == 0) {
              echo 
'Es ist kein Banner in der Datenbank hinterlegt.';
        }   

?>
Beinhaltet die Resource aber einen selektierten Datensatz geben wir diesen aus.
PHP-Code:
<?php

        
else {
                
$object mysql_fetch_object($resource);
                
printf('<img src="%s" title="Banner Nummer %s" />',
                         
$object->_path,
                         
$object->_id);
        }

?>
Letztendlich fügen wir der Anzeigeseite noch einen kleinen Link zum Adminbereich hinzu.
PHP-Code:
<?php

        printf
('<br />
                <br />
                <a href="%s">neues Banner hinzufügen</a>'
$_SERVER['PHP_SELF'] . '?admin=');

?>
In diesem simplen Beispiel ist der Adminbereich jetzt nicht passwortgeschützt. Da dies natürlich so nicht akzeptabel ist sollte man sich eventuell das entsprechende Tutorial mal durchlesen
Ein sessionbasiertes Loginsystem


Ich wünsche viel Spaß und Erfolg beim Basteln


Solltet Ihr Fragen zu dem Tutorial haben, so schreibt bitte einen Beitrag im PHP-Forum mit einem Verweis auf dieses Tutorial.
Danke.

Ich hoffe, dass ich Euch hier etwas weiterhelfen konnte.
Bei Verbesserungsvorschlägen, Bugs etc. würde ich mich über eine Nachricht freuen.

Geändert von Ben (09.12.2005 um 15:49 Uhr).
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.06.2005, 23:15 Nach oben    #2
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 3.812
Standard [PHP] Ein simples Bannerrotations"system"

Ich hänge noch den SQL-Dump der Tabelle bannerrotation an.
Code:
-- 
-- Tabellenstruktur für Tabelle `bannerrotation`
-- 

CREATE TABLE `bannerrotation` (
  `_id` int(3) NOT NULL auto_increment,
  `_path` varchar(100) collate latin1_general_ci NOT NULL default '',
  PRIMARY KEY  (`_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;
Ich habe obigen Code unter folgenden Bedingungen entwickelt und getestet:
Code:
-- MySQL Version: 4.1.11
-- PHP-Version: 5.0.4
Grüße Ben.

Geändert von Ben (23.09.2005 um 11:50 Uhr).
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.07.2006, 00:27 Nach oben    #3
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 3.812
Standard

Möchte man Bilder zufällig ausgeben ohne mit einer Datenbank zu arbeiten, so könnte eventuell die hier vorgestellte Funktion hilfreich sein:
http://phpfriend.de/forum/ftopic59054-s10.html#407966
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

« [PHP] FTP-Funktionen in PHP nutzen | [PHP] Wiederverwendung von Berechnungen, effektives Caching »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge anzufügen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Frage zum Tut: [PHP] Fremde Webseiten auslesen the_cRu PHP-Programmierung 27 10.02.2007 19:59
[PHP] Simples Caching System mittels Dateien Chr!s Tutorials 5 04.11.2006 23:55
[PHP] 404-Fehlerseiten als Chance PaterNoster Tutorials 0 23.04.2006 15:04
[PHP] Datenbank-Backup mit mysqldumper Jann Hendrik Tutorials 0 16.03.2006 08:58
[PHP] Ein einfaches Template-System MrNiceGuy Tutorials 0 09.10.2005 18:30


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:17 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.6.7, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44