problème de banniere

Eléphanteau du PHP | 35 Messages

16 août 2005, 10:05

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");

?>
Modifié en dernier par Tomcat92fr le 17 août 2005, 09:47, modifié 1 fois.
Apprendre à connaître, c'est refuser de détester sans savoir pourquoi.

Mammouth du PHP | 19672 Messages

16 août 2005, 10:09

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);
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 35 Messages

16 août 2005, 12:08

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 ???
Apprendre à connaître, c'est refuser de détester sans savoir pourquoi.

Eléphant du PHP | 55 Messages

16 août 2005, 12:11

Tu as fais des echos pour vérifier que le nombre qu'il te sort est bien un bon nombre?

Eléphanteau du PHP | 35 Messages

16 août 2005, 16:08

Non bonne idée je vais le faire de suite
Je te tiens au courant
Merci
Apprendre à connaître, c'est refuser de détester sans savoir pourquoi.

Eléphanteau du PHP | 35 Messages

16 août 2005, 17:00

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
Apprendre à connaître, c'est refuser de détester sans savoir pourquoi.

Eléphant du PHP | 55 Messages

16 août 2005, 17:07

Essaye de limiter le rand avec des valeurs entières et possibles.

Eléphanteau du PHP | 35 Messages

16 août 2005, 17:20

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:
Apprendre à connaître, c'est refuser de détester sans savoir pourquoi.

Eléphant du PHP | 55 Messages

16 août 2005, 17:33

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: .

Eléphanteau du PHP | 35 Messages

17 août 2005, 09:28

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++;
Apprendre à connaître, c'est refuser de détester sans savoir pourquoi.

Eléphant du PHP | 55 Messages

17 août 2005, 09:31

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.

Eléphanteau du PHP | 35 Messages

17 août 2005, 09:42

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
Apprendre à connaître, c'est refuser de détester sans savoir pourquoi.