criocere
jeudi 5 août 2004 à 15:06
Je te livre un script que j'ai écrit très performant, je pense pour gérer une rotation de bannière en affectant un pourcentage d'impression à chaque régie de publicité.
Pour gérer de manière précise le pourcentage affecté à chaque régie, je m'appuie sur un compteur allant de 1 à 10 ( une sequence ) basé sur une table dont la colonne est incrémenté par LAST_INSERT_ID, ceci assure l'opération d'incrémentation de lecture en 1 passe, ce qui donne une bonne précision sur la gestion des espaces alloués à chacune des régies.
D'autre part, je m'appuie sur une table mémoire HEAP pour les performances.
Dans l'exemple ci-après, j'affecte 30% à la régie1, 30% à la régie2 et 40% à la régie3. Ce qui vous permet de définir la meilleure régie.
Vos remarques, améliorations sont les bienvenues.
@++
Alain
CODE
<?php
include ("dbconnect_pub.php");
$query = mysql_query("UPDATE header_sequence
SET id = LAST_INSERT_ID(id+1)");
if (!$query)
{
mysql_query("CREATE TABLE header_sequence
(id TINYINT UNSIGNED NOT NULL) TYPE = HEAP
MAX_ROWS = 1");
mysql_query("INSERT INTO header_sequence VALUES (0)");
$query = mysql_query("UPDATE header_sequence
SET id=LAST_INSERT_ID(id+1)");
}
$indice = mysql_insert_id();
if ($indice > 10)
{
mysql_query("UPDATE header_sequence SET id = LAST_INSERT_ID(1)");
$indice = mysql_insert_id();
}
mysql_close();
switch($indice)
{
case 1 : include("regie1.php"); break;
case 2 : include("regie1.php"); break;
case 3 : include("regie1.php"); break;
case 4 : include("regie2.php"); break;
case 5 : include("regie2.php"); break;
case 6 : include("regie2.php"); break;
case 7 : include("regie3.php"); break;
case 8 : include("regie3.php"); break;
case 9 : include("regie3.php"); break;
case 10 : include("regie3.php"); break;
}?>