1

J'ai un petit problème : je veux générer des boutons automatiquement.
Je crée un PNG, jusque là, tout va bien.
J'y ajoute des éléments (lignes & co), ça marche impec.
Je mets du texte, impec aussi.
Je passe des données en paramètre (?texte=machin&hauteur=...), ça roule.
Je veux récuperer des données d'une base, et là, ça chie, mais grave... j'ai l'impression que le fait d'effectuer des requêtes mySQL dans un fichier qui est sensé fournir un PNG fout en l'air quelque chose, mais quoi ??? Ya pas une solution (mis à part récuperer les données de la base dans un autre fichier PHP et les transfmettre en global) ???
Merciiii
avatar

2

Normalement y a pas de pb, tu peux sortir des données mysql. Y a pas une autre erreur ? Tu peux faire voir un snippet de la source ?
avatar
I'm on a boat motherfucker, don't you ever forget

3

Oui, ça arrive dans l'aprèm
avatar

4

<?php //Note de programmation : ne pas mettre l'extension ".ttf" lorsque des appels à des polices sont nécessaires ! //Paramètres passés : //Texte, fichier PNG source, site (pour la skin standard), visiteur (pour la skin personnalisée), type (bouton ou titre) //$Texte //$Fichier //$NumeroSite //$NumeroVisiteur //$Type //$Largeur //$Hauteur //Récupération des paramètres de bouton pour le site visité et l'utilisateur : //Police, couleur de police, couleur de fond, taille de police, taille de bouton (x, y), image source $ServeurMySQL='localhost';                                        //Adresse IP ou nom d'hôte du serveur MySQL $UtilisateurMySQL='***';                                        //Nom de l'utilisateur se connectant au serveur MySQL $MotDePasseMySQL='***';                                             //Mot de passe de l'utilisateur $NomBaseMySQL='Universel';                                        //Nom de la base MySQL dans laquelle se trouvent les informations $NumeroSite=1;                                                       //Numéro du site require("OuvrirMySQL.php"); //     $LienMySQL=@mysql_connect($ServeurMySQL, $UtilisateurMySQL, $MotDePasseMySQL) or die ("Echec lors de la connexion au serveur MySQL"); //     @mysql_select_db($NomBaseMySQL, $LienMySQL) or die ("Echec lors de la connexion à la base MySQL");      $Requete="SELECT s.CouleurFond1R, s.CouleurFond1V, s.CouleurFond1B, s.CouleurFond2R, s.CouleurFond2V, s.CouleurFond2B ";      if ($Type=='Bouton')      {           $Requete.=", m.TaillePoliceBouton, m.PoliceBouton, s.CouleurPoliceBoutonR, s.CouleurPoliceBoutonV, s.CouleurPoliceBoutonB ";      }      else if ($Type=='Titre')      {           $Requete.=", s.CouleurPoliceTitre, m.PoliceTitre, m.TaillePoliceTitre ";      }      $Requete.="FROM utilisateur u, skin s, miseenformesite m ";      $Requete.="WHERE m.NumeroSite=$NumeroSite AND u.NumeroSkin=s.Numero AND u.Numero=$NumeroVisiteur";      $ResultatRequete=mysql_query($Requete, $LienMySQL);      if (mysql_fetch_row($ResultatRequete))      {           $CouleurFond1R=mysql_result($ResultatRequete, 0, 0);           $CouleurFond1V=mysql_result($ResultatRequete, 0, 1);           $CouleurFond1B=mysql_result($ResultatRequete, 0, 2);                     $CouleurFond2R=mysql_result($ResultatRequete, 0, 3);           $CouleurFond2V=mysql_result($ResultatRequete, 0, 4);           $CouleurFond2B=mysql_result($ResultatRequete, 0, 5);                     $TaillePolice=mysql_result($ResultatRequete, 0, 6);           $Police=mysql_result($ResultatRequete, 0, 7);           $CouleurPoliceR=mysql_result($ResultatRequete, 0, 8);           $CouleurPoliceV=mysql_result($ResultatRequete, 0, 9);           $CouleurPoliceB=mysql_result($ResultatRequete, 0, 10);                                    } require("FermerMySQL.php"); /*     $CouleurFond1=45;      $CouleurFond2=24;      $TaillePolice=12;      $Police='times';      $CouleurPolice=154 ;*/       //Sortie : fichier ".PNG".      $Texte=StripSlashes($Texte); //     $TailleTexte=ImageTTFBBox($TaillePolice,0,$Police,$Texte);      $TailleTexte=ImageTTFBBox($TaillePolice,0,$Police,$Texte);      $LargeurTexte=abs($TailleTexte[2]-$TailleTexte[0]);      $HauteurTexte=abs($TailleTexte[5]-$TailleTexte[3]);      $im=ImageCreate($Largeur,$Hauteur) or die ("Erreur lors de la création de l'image");      $CouleurFond1=ImageColorAllocate($im, $CouleurFond1R, $CouleurFond1V, $CouleurFond1B);      $CouleurFond2=ImageColorAllocate($im, $CouleurFond2R, $CouleurFond2V, $CouleurFond2B);      $CouleurPolice=ImageColorAllocate($im, $CouleurPoliceR, $CouleurPoliceV, $CouleurPoliceB);      ImageLine($im, 1, 1, $Largeur-2, 1, $CouleurFond2);      ImageLine($im, 1, $Hauteur-2, $Largeur-2, $Hauteur-2, $CouleurFond2);      ImageLine($im, 1, $Hauteur-2, 1, 1, $CouleurFond2);      ImageLine($im, $Largeur-2, $Hauteur-2, $Largeur-2, 1, $CouleurFond2); //     ImageTTFText($im, $TaillePolice, 0, (int)(($Largeur-$LargeurTexte)/2), (int)(($Hauteur+$HauteurTexte)/2), $noir, $Police, $Texte);       ImageTTFText($im, $TaillePolice, 0, (int)(($Largeur-$LargeurTexte)/2), (int)(($Hauteur+$HauteurTexte)/2), $CouleurPolice, $Police, $Texte);       Header ("Content-type:image/png");      ImagePNG($im);      ImageDestroy($im); ?>
avatar

5

Bon, ok, j'ai isolé le problème... en fait, ça chie lors de l'include. Quand je mets le code appelé par l'include direct dans la page, ça marche impec.
Mais si quelqu'un connait une solution pour remplacer l'include par autre chose (ça ne marche pas non plus avec require).
avatar

6

Bon, plus ça va, moins je comprends...
En fait, seul le include pour l'ouverture de MySQL chie, celui pour la fermeture marche impec #arg#
avatar

7

Bon, j'ai résolu le problème... en fait, juste après le "?>" de mon include, il y avait deux passages à la ligne qui étaient interprétés comme des données pour mon .PNG, donc ça corrompait le fichier image :/. Maintenant, ça marche.
avatar

8

Arf je voulais vérifier ça, mais tu l'as même pas mis dans ton snippet roll
avatar
I'm on a boat motherfucker, don't you ever forget

9

Ben vi, désolé mur
avatar