Page 1 sur 1

problème de banniere

Posté : 16 août 2005, 10:05
par Tomcat92fr
Bonjour

Voila j’ai un petit problème avec la bannière.
La mise en place de la table a été faite
L’adaptation du script aussi cependant une erreur persiste.

Lorsque que je lance l’affichage j’ai une erreur du type « Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp\www\cuisine\__environnement\ptitafiche.php on line 10 »

Merci de me dire ou j’ai pu faire une erreur

Ci-dessous le code de la page
<?

        $table_pub = "bandeaux";

//--------------------------------------------------

//--------- Requête pour connaître le --------------

//--------- nombre de lignes ds la table -----------

//--------------------------------------------------

        $query_pub ="select * from $table_pub";

        $result_pub = mysql_query($query_pub);

        $ligne_pub = mysql_num_rows($result_pub);

         mysql_free_result($query_pub);

//--------------------------------------------------

//-------- Calcul d'un nombre aléatoire ------------

//-------- en fonction du nombre de ligne --------

//--------------------------------------------------

                 srand (time());

        $number_pub=(rand()%$ligne_pub);

        $number_pub++;

//--------------------------------------------------

//-------- Recupération de la ligne ----------------

//-------- tirée au sort ---------------------------

//--------------------------------------------------

        $query_pub2="select * from $table_pub where id=\"$number_pub\"";

        $banner_pub=mysql_query($query_pub2);

 

//--------------------------------------------------

//------- Ranger le resultat dans un tableau -------

//------- pour utiliser les informations -----------

//--------------------------------------------------

        $row_pub=mysql_fetch_row($banner_pub);

        $url_pub=$row_pub[1];

        $fichier_pub=$row_pub[2];

        $lien_pub=$row_pub[3];

        mysql_free_result($banner_pub);

//--------------------------------------------------

//------- Afficher la banniere ---------------------

//--------------------------------------------------

print("<a href=\"http://".$lien_pub."\">\n<img src=\"../_img/".$url_pub."/".$fichier_pub."\" border=\"0\">\n</a>\n");

?>

Posté : 16 août 2005, 10:09
par Cyrano
Tu as une erreur: au lieu de la ressource, tu as mis la requête:
Remplace par:
$query_pub ="select * from $table_pub";

        $result_pub = mysql_query($query_pub);

        $ligne_pub = mysql_num_rows($result_pub);

         mysql_free_result($result_pub);

Posté : 16 août 2005, 12:08
par Tomcat92fr
Merci ca fonctionne effectivement j'avais inversé la requete et la ressources.

Seule ombre au tableau c'est que lorsque la page se charge elle affiche une image vide et le fait de recharger la page affiche la banière.

Aurais tu une idée ???

Posté : 16 août 2005, 12:11
par Bobulum
Tu as fais des echos pour vérifier que le nombre qu'il te sort est bien un bon nombre?

Posté : 16 août 2005, 16:08
par Tomcat92fr
Non bonne idée je vais le faire de suite
Je te tiens au courant
Merci

Posté : 16 août 2005, 17:00
par Tomcat92fr
Bon alors ce qui se passe il affiche les différentes bannières puis une fois de temps en temps rien j'ai mis un echo et il ne renvoi aucunes données
Je ne sais pas pourquoi

Ci joint le code de la BdD

Code : Tout sélectionner

-- Structure de la table `bandeaux` -- CREATE TABLE `bandeaux` ( `id` int(20) NOT NULL auto_increment, `url` char(20) NOT NULL default 'pub', `fichier` char(20) NOT NULL default '', `lien` char(30) NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ; -- -- Contenu de la table `bandeaux` -- INSERT INTO `bandeaux` VALUES (0, 'pub', 'pub0.jpg', 'www.yahoo.fr'); INSERT INTO `bandeaux` VALUES (1, 'pub', 'pub1.jpg', 'www.free.fr'); INSERT INTO `bandeaux` VALUES (2, 'pub', 'pub2.jpg', 'www.yahoo.fr'); INSERT INTO `bandeaux` VALUES (3, 'pub', 'pub3.jpg', 'www.free.fr'); INSERT INTO `bandeaux` VALUES (4, 'pub', 'pub4.jpg', 'www.yahoo.fr');
Et le code de la page
<?
        $table_pub = "bandeaux";
//--------------------------------------------------
//--------- Requête pour connaître le --------------
//--------- nombre de lignes ds la table -----------
//--------------------------------------------------
	 $query_pub ="select * from $table_pub"; 
        $result_pub = mysql_query($query_pub); 
        $ligne_pub = mysql_num_rows($result_pub); 
         mysql_free_result($result_pub); 
//--------------------------------------------------
//-------- Calcul d'un nombre aléatoire ------------
//-------- en fonction du nombre de ligne --------
//--------------------------------------------------
                 srand (time());
        $number_pub=(rand()%$ligne_pub);
        $number_pub++;
//--------------------------------------------------
//-------- Recupération de la ligne ----------------
//-------- tirée au sort ---------------------------
//--------------------------------------------------
        $query_pub2="select * from $table_pub where id=\"$number_pub\"";
        $banner_pub=mysql_query($query_pub2);

//--------------------------------------------------
//------- Ranger le resultat dans un tableau -------
//------- pour utiliser les informations -----------
//--------------------------------------------------
        $row_pub=mysql_fetch_row($banner_pub);
        $url_pub=$row_pub[1];
        $fichier_pub=$row_pub[2];
        $lien_pub=$row_pub[3];
        mysql_free_result($banner_pub);
//--------------------------------------------------
//------- Afficher la banniere ---------------------
//--------------------------------------------------
        print("<a href=\"http://".$lien_pub."\" target=\"_blank\">\n<img src=\"_img/".$url_pub."/".$fichier_pub."\" width=\"468\" height=\"60\" border=\"0\">\n</a>\n");
?>

et enfin, la commande qui est dans ma page ou la bannière doit s'afficher
 <? require("__environnement/ptitafiche.php"); ?>
Voilà si tu peux voir si tu as le même problème.
Merci d'avance

Posté : 16 août 2005, 17:07
par Bobulum
Essaye de limiter le rand avec des valeurs entières et possibles.

Posté : 16 août 2005, 17:20
par Tomcat92fr
Et on fait ça comment ????
Quitte à passer pour un ignare au moins ce soir en me couchant, je serais un peu plus intelligent que ce matin 8) :lol:

Posté : 16 août 2005, 17:33
par Bobulum
En gros tu peux passer rand (x,y), afin de limiter le nombre de possibilités.

Tu peux cliquer sur "rand" dans mon message du dessus pour accéder à la doc de PHP :wink: , ce sera plus clair pour toi.

Pour ton problème, je penserais plus à compter le nombre de ligne (par exemple 5). Je met chaque valeur de bannière dans un tableau (exemple $NomSite[0] et $ImageSite[0]...), ensuite via rand je limite de 0 à 4 (5-1, car début à 0), puis je sélectionne (si rand=3) $NomSite[3] et $ImageSite[3] et j'affiche.

Au lieu de faire un modulo % pour sélectionner un nombre :wink: .

Posté : 17 août 2005, 09:28
par Tomcat92fr
J'ai modifié la commande et enlevé la valeur "0" de la BdD comme ci dessous et il y a toujours le meme problème

                 srand (time());
        //$number_pub=(rand()%$ligne_pub);
           $number_pub=(rand(1,5));
           $number_pub++;

Posté : 17 août 2005, 09:31
par Bobulum
Enlève le :
$number_pub++;
Sinon, si il te prend 5 tu l'incrémentes avec le ++ et tu aruas 6, ce qui n'est pas bon.

Posté : 17 août 2005, 09:42
par Tomcat92fr
Super ça fonctionne
Merci à vous 2 pour le coup de main

Maintenant, je m'attaque au moteur de recherche...

Si j'ai un problème je crie :lol: :lol: :lol: :wink:

Plus sérieusement je commence à comprendre les erreurs que je fais, mais bon le PHP c'est comme le Flash ou Photoshop si tu n'en fais pas régulièrement tu perds les automatismes et tu oublies des choses simples