Avatar billede lajer Nybegynder
06. juni 2002 - 20:10 Der er 4 kommentarer og
1 løsning

Banner styring ->> PHP

Hejsa...

Har en lidt tricky en til jer her... - har en tabel bygget sådan her:

CREATE TABLE banner (
  id int(9) NOT NULL auto_increment,
  navn varchar(255) NOT NULL default '',
  banner text NOT NULL,
  side varchar(255) NOT NULL default '',
  noside varchar(255) NOT NULL default '',
  procent tinyint(4) NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

id siger sig selv, det samme med navn.
banner = bannerkoden
side = hvilke sider hvor banneret skal have x antal procent størrer chance for at blive vist.

procent = procent angivelse for ovenstående.

noside = hvilke sider banneret ikke må vises på.

side og noside er delt op med ",". Eksempelvis: index.php, enside.php, en_anden_side.php

Derudover skal man kunne vælge at banneret kun skal vises inden for det og det klokkeslet. Men det har jeg ikke fået lavet række til endnu.



Ville blive jævnt glad hvis I kunne komme med et par ideér til hvordan jeg klarer den her :)

// Torben Lajer
Avatar billede hansk Nybegynder
06. juni 2002 - 20:25 #1
Du vil formentlig få en nemmere opgave hvis du lavede et par tabeller mere:

Table: BannerSide
ID:    BannerID
      LBNR
DATA:  Side 'side tilladt
      TidFra
      TidTil

Table: BannerNoSide
ID:    BannerID
      LBNR
DATA:  Side 'side ikke tilladt

Så vil du med simple SQL udtræk kunne bestemme om banneret skal vises.
Avatar billede hansk Nybegynder
06. juni 2002 - 20:28 #2
Det blev flyttet lidt rundt, men du forstår sikkert meningen.

På denne måde vil du ikke have begrænsninger på antallet af sider.
Avatar billede lajer Nybegynder
06. juni 2002 - 20:31 #3
hansk... det tricky ligger lidt i at jeg _kun_ må bruge en tabel... !! :)
Avatar billede lajer Nybegynder
06. juni 2002 - 20:34 #4
Har fået så småt styr på det meste nu...

Men hvis der er nogen der har nogen idé til hvordan man skal lave "procent" tricket... Så råb lige op!
Avatar billede lajer Nybegynder
06. juni 2002 - 21:57 #5
Lige pludselig var den der altså bare... Har selv klaret den!

Paster lige lidt kode hvis det skulle have interesse for nogen. -> der mangler dog stadig det med klokken!

// BANNER STYRING

    // FUNKTION -> NOSIDE
    $ThisSite = str_replace("/", "", $PHP_SELF);

    $q_noside = mysql_query("SELECT * FROM banner");
    while($r = mysql_fetch_array($q_noside)) {

        $noside_array = split(",", $r["noside"]);
        for($x=0; sizeof($noside_array) > $x; $x++) {
            if($noside_array[$x] == $ThisSite) { // EXTRA WHERE STATEMENT
                $id = $r["id"];

                if($SQLcheck == 1) {
                    $exSQL .= "&& id!='$id' ";
                }
                else {
                    $exSQL .= "id!='$id' ";
                    $SQLcheck++;
                }

            }
        }

    }

    // VÆLG BANNER
    $q_side = mysql_query("SELECT * FROM banner WHERE $exSQL ORDER BY RAND()") or die (mysql_error());

    if(mysql_num_rows($q_side) > 0) {
        while($r = mysql_fetch_array($q_side)) {
            $side_array = split(",", $r["side"]);

            if(sizeof($size_array) > 0) {
                for($y=0; sizeof($side_array) > $y; $y++) {

                    if($side_array[$y] == $ThisSite) {

                        $id = $r["id"];                       
                        if($r["procent"] >= rand(0,100)) {
                        $query = mysql_query("SELECT banner FROM banner WHERE id='$id'");
                        $bannerFound = 1;
                        }

                    }
                    if($bannerFound != 1) {
                        $query = mysql_query("SELECT banner FROM banner WHERE $exSQL ORDER BY RAND()");
                    }

                }
            }
            else {
                $query = mysql_query("SELECT banner FROM banner WHERE $exSQL ORDER BY RAND()");
            }
        }
    }
    else {
        $query = mysql_query("SELECT banner FROM banner ORDER BY RAND() LIMIT 1");
    }

    echo = mysql_result($query, 0, "banner");
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester