PHP->Besoin d'aide pour un script de bannière

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

PHP->Besoin d'aide pour un script de bannière

Message le Sam Déc 30, 2006 22:47

Bonjour,

Pour faire un script de rotation de bannière, j'ai fais ce code qui fonctionne :
Code: Tout sélectionner
<?
include('header.inc.php');
$requete = mysql_query("SELECT * FROM demo_a_pub");
$nb_banniere = mysql_num_rows($requete);
$alea = rand(1, $nb_banniere);
$requete2 = mysql_query("SELECT * FROM demo_a_pub where id='$alea'");
while($ligne2 = mysql_fetch_array($requete2))
{
   $ban = $ligne2["banner"];
   $id = $ligne2["id"];
   echo'<a href="../click.php?id='.$id.'" target="_blank"><img src="'.$ban.'"></a>';
}
?>

Mais le problème est que si une bannière a été supprimée de la base de donnée, le script n'affiche rien.

Comment faire ?

Merci.

meduim
WRInaute discret
WRInaute discret
 
Messages: 71
Inscription: 16 Mai 2006

Message le Sam Déc 30, 2006 23:08

mets

if(empty($ban)){$ban="http://tonsite.com/imagesirien.jpg"}

juste apres

$ban = $ligne2["banner"];

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

Message le Sam Déc 30, 2006 23:12

Pour mettre une bannière avec une URL par défaut ?


manthoR
WRInaute discret
WRInaute discret
 
Messages: 231
Inscription: 13 Mar 2006

Message le Sam Déc 30, 2006 23:22

Sinon, moi j'utilise phpadsnew c'est ultra puissant pour gerer tous tes espaces, avec pondération, capping, etc.
Bref, tu geres comme tu veux tout tes emplacements / campagnes. En plus il peut automatiquement modifier le script pour compter les clics histoires de voir "chez toi" les stats affichages / clics par annonceurs

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

Message le Sam Déc 30, 2006 23:27

Je l'ai essayé mais je n'ai pas besoin d'un script si performant...
Merci quand même !

jeroen
WRInaute passionné
WRInaute passionné
 
Messages: 2461
Inscription: 30 Aoû 2002

Message le Dim Déc 31, 2006 0:53

Ton système est nul : Genre tu as 4 enregistrements 1 3 4 5 (le 2 a été supprimé) , tu choisis rand(1,4) donc
- le 5 ne sortira jamais
- le 2 sortira alors qu'il n'existe plus...

Solution : il faut faire le rand() par mysql :
Code: Tout sélectionner
SELECT * FROM demo_a_pub ORDER BY RAND() LIMIT 1

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

Message le Dim Déc 31, 2006 1:56

Ton système est nul : Genre tu as 4 enregistrements 1 3 4 5 (le 2 a été supprimé) , tu choisis rand(1,4) donc
- le 5 ne sortira jamais
- le 2 sortira alors qu'il n'existe plus...

C'est pour ça que je postais...
Code: Tout sélectionner
<?
include('header.inc.php');
$requete = mysql_query("SELECT * FROM demo_a_pub ORDER BY RAND() LIMIT 1");
mysql_fetch_array($requete);
$ban = $requete["banner"];
$id = $requete["id"];
echo'<a href="../click.php?id='.$id.'" target="_blank"><img src="'.$ban.'"></a>';
?>

Et là, ça ne devrait pas marcher ?

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

Message le Dim Déc 31, 2006 2:00

Non, en fait avec :
Code: Tout sélectionner
<?
include('header.inc.php');
$requete = mysql_query("SELECT * FROM demo_a_pub ORDER BY RAND() LIMIT 1");
$row = mysql_fetch_array($requete);
echo'<a href="../click.php?id='.$row[0].'" target="_blank"><img src="'.$row[2].'"></a>';
?>

...ça marche...

jeroen
WRInaute passionné
WRInaute passionné
 
Messages: 2461
Inscription: 30 Aoû 2002

Message le Dim Déc 31, 2006 11:01

Très bien comme ça, par contre évite une sélection * si tu n'a besoin que de 2 champs : tu consomme des ressources pour rien :wink:


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités