Bannerrotation

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bannerrotation

    Hi Leute ich habe hier mal angefangen ein Script für die Bannerrotation zu erstellen.
    Es soll wie folgt funktionieren:
    In der Datenbank werden verschiedene Banner gespeichert. Zu jedem Banner wird in ein Feld geschrieben, wie oft er maximal angezeigt werden soll und wie oft er schon angezeigt wurde.
    Hier kurz der MySQL-Code.
    Code:
    CREATE TABLE `bero_banner` (
      `id` int(11) unsigned NOT NULL auto_increment,
      `cid` int(11) NOT NULL default '0',
      `type` varchar(100) collate latin1_general_ci NOT NULL default '',
      `name` varchar(100) collate latin1_general_ci NOT NULL default '',
      `imageurl` varchar(100) collate latin1_general_ci NOT NULL default '',
      `clickurl` varchar(100) collate latin1_general_ci NOT NULL default '',
      `banner_count` varchar(100) collate latin1_general_ci NOT NULL default '',
      `banner_max` varchar(100) collate latin1_general_ci NOT NULL default '',
      `date` timestamp NOT NULL default CURRENT_TIMESTAMP,
      `position` int(11) NOT NULL default '0',
      `check` int(11) NOT NULL default '1',
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1;
    Bisher habe ich folgenden Teil meines Banner-Scripts.
    PHP-Code:
    <?php
    error_reporting
    (E_ALL ^ ~E_NOTICE);

    function 
    banner($position)
    {
        
    $mysql_host "localhost";
        
    $mysql_user "root";
        
    $mysql_pass "";
        
    $mysql_data "schulbuc_bero";

        
    // Verbindung zur Datenbank herstellen
        
    $link mysql_connect($mysql_host$mysql_user$mysql_pass)
            or die(
    "Error: "mysql_error());
        
    mysql_select_db($mysql_data$link)
            or die(
    "Error: "mysql_error());

        
    // Datensatz-Ausgabe festlegen
        
    $sql "SELECT
                   `id`,
                   `name`,
                   `clickurl`,
                   `imageurl`
               FROM
                   `bero_banner`
               WHERE
                   `position` = '"
    $position ."'
               AND
                   banner_count < banner_max"
    ;
        
    $result mysql_query($sql)
            or die(
    "Error: "mysql_error());

        print 
    mysql_num_rows($result);

        
    // Alle Banner in ein Array schreiben
        
    $banner = array();
        while(
    $row mysql_fetch_assoc($result))
            
    $banner[] = $row;
        
    // Zufallsbanner auswählen
        
    $rand rand(0mysql_num_rows($result)-1);

        
    // Banner ausgeben
        
    print "<a href=\""$banner[$rand]['clickurl'] ."\" target=\"_blank\">\n";
        print 
    "<div id=\"promotion-field-right\">\n";
        print 
    "<img alt=\""$banner[$rand]['name'] ."\" height=\"600\" border=\"0\" src=\""$banner[$rand]['imageurl'] ."\" width=\"160\">\n";
        print 
    "</div>\n";
        print 
    "</a>\n";
    }
    ?>
    Ich trage für einen Banner eine maximale Anzahl von 100 Hits ein. Wenn ich die Seite zum erstenmal aufrufe, dann ist der Wert in `banner_count` 1, da der Banner einmal aufgerufen wurde. Sobald der Wert aber 2 ist, wird kein Banner mehr gefunden! Es muss an der WHERE-Abfrage liegen, weil wenn ich diese entferne, dann geht's. Aber ohne die kann ich ja nicht prüfen, ob der jeweilige Banner noch angezeigt werden soll.

    Mfg, berti
    Zuletzt geändert von berti@SR; 12.11.2006, 11:44.

  • #2
    `banner_count` varchar(100) collate latin1_general_ci NOT NULL default '',
    `banner_max` varchar(100) collate latin1_general_ci NOT NULL default '',
    varchar(100) für beide Spalten ist ein Witz, oder?

    INTEGER, aber bitte

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Sch****, das hatte ich komplett übersehen. der MySQL Code ist schon älter^^ Denken hilft, ich weiß

      Kommentar

      Lädt...
      X