Tutoriaux > PHP / MySQL > Script de rotation de bannières publicitaires en PHP
Ce petit tutorial vous présente un script extrêmement simple mais particulièrement utile à beaucoup de webmasters. Il s'agit d'un gestionnaire de bannières publicitaires qui sont affichées de façon aléatoire sur un site.
Ce script vous permet de réaliser votre propre gestionnaire de bannières à affichage aléatoire. Une bannière est affichée après avoir été tirée au sort aléatoirement parmi les autres enregistrées. Afin de rendre la compréhension et la lecture aisées de ce tutoriel, nous suivrons la méthode présentée par le plan suivant :
1. Structures de données nécessaires
2. Détermination de la clé tirée au sort
3. Affichage de la bannière retenue
4. Le script final
5. Conclusion
1. Structures de données nécessaires
Pour réaliser ce script, nous devrons utiliser deux structures de données. La première est un tableau associatif à deux dimensions (type structuré) et une variable classique (type primitif) de type Integer (nombre en français).
Nous stockerons dans le tableau associatif 4 informations :
1. la clé de la bannière (clé du premier tableau)
2. le lien vers le site (index 0 du second tableau)
3. le lien vers la bannière du site (index 1 du second tableau)
4. une courte description du site (index 2 du second tableau)
La variable quant à elle sera initialisée à 1 par défaut au cas où la valeur aléatoire échoue. Cette valeur permettra donc d'afficher les informations du tableau où la clé est 1 (première bannière enregistrée). Sinon elle stockera une clé existante du tableau prise au hasard.
2. Détermination de la clé prise au hasard
Je suis persuadé que beaucoup d'entre vous auraient choisi d'utiliser une solution ancestrale qui est de sélectionner une valeur comprise entre 1 et la taille du tableau. Cela implique l'utilisation simultanée des fonctions rand() et sizeof() [ ou count() ].
Je vous vois déjà venir vous plaindre et me dire "Que faire alors ? Cette solution marche très bien !". Oui je suis d'accord, cela fonctionne très bien. Mais il faut savoir que PHP fournit bon nombre de fonctions natives que l'on a tendance à laisser de côté. Il n'est donc pas nécessaire de réinventer la roue !!! C'est pourquoi nous utiliserons la fonction array_rand() qui se charge de sélectionner une valeur au hasard dans un tableau. L'avantage ici pour les développeurs est de ne pas s'exposer au risque de prendre une valeur qui n'existe pas (cad en dehors des limites du tableau) dans la structure de données.
D'un point de vue syntaxe, la fonction prend deux paramètres. Le premier est obligatoire contrairement au second. Le premier argument est le tableau dans lequel on doit extraire une valeur et le second le nombre de valeurs aléatoires à retirer. Par défaut, cette valeur est de 1, d'où le côté facultatif.
3. Affichage de la bannière sélectionnée
Enfin, on lance une bête instruction echo() pour générer le code html d'un lien et d'une image. Pour cela, nous passerons comme clé du premier tableau la variable $choix et les numéros d'index de chaque éléments du second tableau.
4. Le script final
<?php
/****************************************************
* Tableau associatif des bannieres et banniere choisie
*****************************************************/
$tabBannieres = array(
1 => array('http://www.site1.com','http://www.site1.com/banniere.gif','Description 1'),
2 => array('http://www.site2.com','http://www.site3.com/banniere.gif','Description 2'),
3 => array('http://www.site3.com','http://www.site3.com/banniere.gif','Description 3')
);
/****************************************************
* Détermination de la banniere à afficher
*****************************************************/
$choix = 1;
$choix = array_rand($tabBannieres, 1);
/****************************************************
* Affichage des bannieres
*****************************************************/
echo '<a href="', $tabBannieres[$choix][0] ,'" title="', $tabBannieres[$choix][2] ,'">
<img src="', $tabBannieres[$choix][1] ,'" alt="', $tabBannieres[$choix][2] ,'" /></a>';
?>
5. Conclusion
En conclusion, je vous laisse apprécier l'utilité et la simplicité de ce script qui ne présente que le principe de fonctionnement. N'hésitez pas à me faire des retours sur ce tutorial afin que je puisse l'améliorer ou le laisser tel quel.
Webdeb73
Par Webdeb73
, Le 18 Décembre 2006 à 01h00
Ce tutoriel est la propriété d'Aidoweb et ne peut en aucun cas être copié.
Oui c'est du Javascript. Regarde du côté de l'editeurjavascript.com ! Sinon tu peux utiliser ce script et l'utiliser avec Ajax mais cela revient à utiliser du Javascript de toute façon.
Exactement mais toujours de manière aléatoire... là je sens que je suis déjà plus clair... C'est dfaisable sans javascript ça m'sieur ?
<a href='http://www.thefull.fr' target='_blank'>http://www.thefull.fr</a>
En fait tu aimerais que ça change de bannière plusieurs fois sur la même page sans recharger la page ?
ben le script tel quel choisit certe une bannière de manière aléatoire mais ne permet d'afficher plusieurs bannières.. une fois choisie.. celle-ci reste affichée... moi je voudrais que la première soit aléatoire... mais qu'elle ne soit pas fixe... genre une vraie ROTATION de bannière au niveau de l'affichage... clair là ? comme dans ROTATION de bannière aléatoire... Merci pour l'intérêt porté à ce post.. je suis tout admiratif quand meêm je tiens à le dire devant ceux qui détiennent le savoir... en bref ch'uis nul...
Non ce n'est pas clair ! Qu'est-ce que tu entends par là ?
bonjour,juste une petite question ?.. serait-il possible avec une portion de code d'obtenir une rotation de banniere sur la page et non juste un choix qui soit fixe..? suis-je clair au moins ?
J'ai fait ce code pour mon site à la base. Je ne voulais pas utiliser de base de données parceque je trouvais la solution non judicieuse pour faire afficher quelques bannières (3 ou 4 en l'occurence). Si j'avais utilisé une BDD, cela aurait impliqué à chaque rechargement de page une requête SQL pour choisir une bannière parmi les 3 ou 4 enregistrées. C'est un peu dommage d'avoir recours à une bdd seulement pour ça. Elles sont pratiques quand il y'a beaucoup d'informations à classer et stocker. Au final, d'où le choix bien réfléchi d'un tableau PHP
>> Le $tabBannieres[] commence forcément par 0 ou il est défini quelquepart ?
Le $tabBannieres[] commence bien à 1 puisqu'ici 1,2,3... sont des clés associatives et non numériques. Pour t'en assurer, je t'invite à écrire le code suivant :
echo '<pre>', print_r($tabBannieres), '</pre>';
Cette instruction te retourne à l'écran la structure arborescente du tableau avec ses clés et valeurs. Nulle part tu verras afficher une clé 0.
>> Aussi, à quoi sert de définir $choix avant d'utiliser array_rand() ?
Tout simplement par bonne pratique de programmation. Quand on déclare une variable, il faut aussi penser à l'initialiser. Ici je mets la valeur 1 pour être sûr qu'en cas de problème lors du array_rand(), $choix aura bien une valeur (mise à part si array_rand() renvoit autre chose qu'un nombre) qui sera appliquée par défaut (affichage de la première bannière). Saisis-tu ?
++
Merci pour ton commentaire
C'est pas mal ce genre de petits codes, moi je ne pense absolument jamais à utiliser des tableaux sans BDD, mais c'est vrai qu'après ça utilise la même structure !
Le $tabBannieres[] commence forcément par 0 ou il est défini quelquepart ?
Aussi, à quoi sert de définir $choix avant d'utiliser array_rand() ?
Merci
Tutoriaux > PHP / MySQL > Script de rotation de bannières publicitaires en PHP