<?

// Regie de Publicité par Francois L.
// Inspirée de la régie écrite pour ASP de ASP-FR

// Voici une regie de pub qui gere l'affichage de bandeaux et qui en
// comptabilise le nombre d'affichages et le nombre de clicks pour votre regie
// interne.
// Elle gere aussi les scripts qui vous sont fournis par les régies
// publicitaires comme ComClick,etc... Dans ce cas, seul le nombre d'affichage
// est comptabilisé.
// Dans les deux cas, la régie gére les dates de demmarage et de fin de
// campagne publicitaire.

// Le champs IdCategorie, vous permet de cibler la pub, par exemple, si vous
// voulez affichez un certain groupe de pub, vous faites
// require "publicite.php3?IdCat=5";
// Le choix des bannieres se portera sur celles qui auront le champs IdCategorie=5

// CREATE TABLE publicite (
//    IdBan mediumint(9) NOT NULL auto_increment,
//    UrlBan varchar(255) NOT NULL,
//    GfxBan varchar(255) NOT NULL,
//    AffMaxBan int(11) DEFAULT '0' NOT NULL,
//    ClickMaxBan int(11) DEFAULT '0' NOT NULL,
//    AffBan int(11) DEFAULT '0' NOT NULL,
//    ClickBan int(11) DEFAULT '0' NOT NULL,
//    RawCode text NOT NULL,
//    IdCategorie int(11) DEFAULT '0' NOT NULL,
//    DateDebut date DEFAULT '0000-00-00' NOT NULL,
//    DateFin date DEFAULT '2010-01-01' NOT NULL,
//    KEY IdBan (IdBan),
//    UNIQUE IdBan_2 (IdBan)
// );


$mysql_link = mysql_connect("localhost","root","");
mysql_select_db("creshendo",$mysql_link);

$sql  = "select IdBan, UrlBan, GfxBan,RawCode from publicite ";
$sql .= "where ( (AffBan < AffMaxBan) AND (ClickBan < ClickMaxBan) ";
$sql .= "AND (DateDebut <= CurDate()) AND (DateFin > CurDate()) ";

// pour trouver une campagne ciblée
if (isset($IdCat))
  
$sql .= " AND ( IdCategorie = $IdCat ) ";

$sql .= " )";

$res = mysql_query($sql,$mysql_link);
$NbBan=mysql_num_rows($res);

if (!
$NbBan) {

  
// Si pas de campagne ciblées en cours on cherche une autre banniere
  
$sql  = "select IdBan, UrlBan, GfxBan,RawCode from publicite ";
  
$sql .= "where ( (AffBan < AffMaxBan) AND (ClickBan < ClickMaxBan) ";
  
$sql .= "AND (DateDebut <= CurDate()) AND (DateFin > CurDate()) ) ";
  
  
$res = mysql_query($sql,$mysql_link);
  
$NbBan=mysql_num_rows($res);

}

if (
$NbBan) {

  
// Si campagnes en cours
  
srand(time());
  
rand();
  
$BanIndex=intval($NbBan*rand()/getrandmax());
  
$succ=mysql_data_seek($res,$BanIndex);
  
$row=mysql_fetch_row($res);
  if (
$row[3]<>"")
    echo
$row[3];
  else {
    echo
"<a href=\"go_ban.php3?IdBan=$row[0]\" target=\"_blank\">";
    echo
"<img src=\"$row[2]\" border=0></a>";
  }
  
$sql="UPDATE publicite SET AffBan = AffBan + 1  where IdBan = $row[0]";
  
mysql_query($sql,$mysql_link);

} else {
  
// C'est la banniere à afficher si toutes les campagnes
  // publicitaires sont épuisées
  
echo "<img src=\"BanniereParDefaut.gif\">";
}

mysql_close($mysql_link);

?>


FICHIER go_ban.php3
-------------------

<?
$mysql_link
= mysql_connect("localhost","root","");
mysql_select_db("creshendo",$mysql_link);

$sql="UPDATE publicite SET ClickBan = ClickBan + 1  WHERE IdBan = $IdBan ";
mysql_query($sql,$mysql_link);
$sql="SELECT UrlBan FROM publicite WHERE IdBan = $IdBan ";
$res=mysql_query($sql,$mysql_link);
mysql_close($mysql_link);
if (
$row=mysql_fetch_row($res))
  
header("Location: $row[0]");
else
  echo
"Erreur de redirection...";

?>