ZyriK Posté(e) le 29 août 2006 Partager Posté(e) le 29 août 2006 Bonjour, je m'explique rapidement : J'aimerais savoir si c'est possible de faire une liste du contenu d'un champ sur mySQL en image. J'arrive a faire une image dynamique, mais comme ca ne prend pas en compte les sauts de ligne, il faut un imagestring pour chaque ligne de texte ... Je sais pas si j'ai été assez clair, si vous ne comprenez pas dites le moi et je reformule ma question. Merci d'avance. Lien vers le commentaire Partager sur d’autres sites More sharing options...
windu.2b Posté(e) le 29 août 2006 Partager Posté(e) le 29 août 2006 Euh... là comme ca, j'ai rien compris Je sais pas si c'est moi qui suis à l'ouest ou toi qui as mal formulé Lien vers le commentaire Partager sur d’autres sites More sharing options...
Max-57450 Posté(e) le 30 août 2006 Partager Posté(e) le 30 août 2006 augh? Pourquoi tu veut des sauts de lignes ? Pour placer le texte sur ton image ? -> Ca ca se fait avec des coordonnées... Pour sauter des lignes à chaques requêtes ? <br /> ça peut marcher... Sinon t'as qu'a faire un truc avec des TR TD et un Include (tonfichieravectesrequêtes) ..... Lien vers le commentaire Partager sur d’autres sites More sharing options...
playstation.2.fg Posté(e) le 30 août 2006 Partager Posté(e) le 30 août 2006 C'est pas compliqué (pas compliqué du tout même) : un petit exemple rapide (en prennant en compte que tu as déja créé ton image et fait ta requete) // $im correspond à ton image // $textcolor correspond à la couleur de ton texte // $string correspond à une chaine de caractère avec (ou sans) sauts de lignes $t = explode("\n", $string); $i = 0; while ($i < sizeof($t)) { imagestring($im, 10, 0, $i*12, $t[$i], $textcolor); $i++; } Enfaite, il suffit de jouer sur la position de ton texte, d'où le $i*12 qui ferra descendre chaque ligne de 12 pixels. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ZyriK Posté(e) le 30 août 2006 Auteur Partager Posté(e) le 30 août 2006 J'avais aussi pensé à une boucle mais ca n'a rien donné ! Merci beaucoup playstation.2.fg Je vais essayé ca :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
ZyriK Posté(e) le 2 septembre 2006 Auteur Partager Posté(e) le 2 septembre 2006 En fin de compte j'arrive pas a m'en sortir ... J'avoue que je n'ai pas encore beaucoup d'experience dans ce domaine ... Je m'explique plus clairement (enfin je vais essayer ) J'ai le titre et le contenu des articles de mon site dans la base SQL. Ce que je voudrais faire c'est afficher tout les articles en liste sur une image dynamique. Pour bien sur eviter de devoir les rajouter a la main (donc en evitant de modifier l'image et de rajouter un imagestring pour chaque ligne) Si j'ai bien compris ton code, tu recopie simplement le contenu de $string sur chaque ligne, ou je me trompe ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
playstation.2.fg Posté(e) le 2 septembre 2006 Partager Posté(e) le 2 septembre 2006 Je copie une partie de $string (ici $t[$i]) sur chaque ligne. Je vais t'expliquer rapidement mon code : $t = explode("\n", $string); Me permet de séparer chaque ligne pour les mettres dans un tableau nommé $t. Donc $t[0] sera la ligne 1, etc... $i = 0; while ($i < sizeof($t)) { est tout simplement le début de la boucle, qui va afficher chaque ligne (un for aurait peut-être plus sa place ici) imagestring($im, 10, 0, $i*12, $t[$i], $textcolor); Va mettre une ligne ($t[$i]) de ton texte dans l'image, et bouger verticalement en fonction de $i. $i++; } Finalement on boucle la boucle :) J'espère que tu as compris quelque chose, car j'ai du mal parfois à expliquer ce queje veux faire (même si le code devrait se suffir à lui même). Ce n'est rien de très sofistiqué ni de très compliqué. L'astuce réside dans le fait qu'on découpe le texte en ligne et que l'on joue sur la position verticale de chaque ligne. Mais pour ta signature, je pense que c'est inutile, étant donné que tu n'a que 4 lignes à afficher. Mon algo est donc inutile. A ta place je ne m'embetterai pas avec ça et ferait dans le simple. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ZyriK Posté(e) le 2 septembre 2006 Auteur Partager Posté(e) le 2 septembre 2006 Les articles étaient uniquement a titre d'exemple, mon but est enfaite de faire une bdd des scores 3dmark06 et 05 des inpactiens dans cartes graphiques/vidéo Mais comme l'auteur du topic n'as aucune connaissance en php ou html, et qu'il se fait chier a mettre ses scores a jour dans word, de faire un screen et de l'envoyer sur un ftp, je chercher à lui simplifier la tache :) Merci encore pour ton aide, avec cette dernière explication je vais pouvoir m'en sortir ! Edit : Je confirme, ca fonctionne comme je le voulais ! Merci (et oui on n'en fait jamais trop dans la vie ) ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
playstation.2.fg Posté(e) le 2 septembre 2006 Partager Posté(e) le 2 septembre 2006 C'est vrai que faire ça via Word c'est un peu lourd (et fastidieux). Par contre, un conseil à te donner : évite au serv qui hébergera l'image d'avoir à recréer l'image chaque fois qu'elle est affichée. Créé plutôt l'image "en dur" à l'execution de ton script. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ZyriK Posté(e) le 2 septembre 2006 Auteur Partager Posté(e) le 2 septembre 2006 Ok, merci pour le conseil, mais ca sera sur un serv free donc ... Enfin si c'est vraiment trop lent je pourrais toujours le modifier ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
windu.2b Posté(e) le 3 septembre 2006 Partager Posté(e) le 3 septembre 2006 Ok, merci pour le conseil, mais ca sera sur un serv free donc ... Enfin si c'est vraiment trop lent je pourrais toujours le modifier ! Il vaut quand même mieux la mettre en 'dur'. Ensuite, tu peux demander à ton script de vérifier si les valeurs ont changé depuis la dernière fois où l'image a été générée. Si oui, tu la régénères, sinon tu ne touches à rien... Ton serveur (et le remps d'accès à l'image) vont y gagner pas mal Lien vers le commentaire Partager sur d’autres sites More sharing options...
ZyriK Posté(e) le 3 septembre 2006 Auteur Partager Posté(e) le 3 septembre 2006 Ok, merci à tous ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
ZyriK Posté(e) le 12 septembre 2006 Auteur Partager Posté(e) le 12 septembre 2006 Je vous donne tout de meme des nouvelles de ce que je voulais faire ^^ Alors la base de donnée c'est ca Et l'image dynamique c'est ca Si vous avez une solution pour une meilleure présentation de l'image dynamique je suis preneur Lien vers le commentaire Partager sur d’autres sites More sharing options...
playstation.2.fg Posté(e) le 13 septembre 2006 Partager Posté(e) le 13 septembre 2006 Si tu pouvais mettre ça sous forme de tableau, parce que là c'est pas vraiment lisible (au niveau de la comparaison entre les différents résultats). Avec une alternance de couleur entre chaque ligne aussi, ça serait sympa. Et éventuellement une autre police. Lien vers le commentaire Partager sur d’autres sites More sharing options...
windu.2b Posté(e) le 13 septembre 2006 Partager Posté(e) le 13 septembre 2006 Ouais, je suis d'accord avec playstation.2.fg, c'est pas des plus lisibles... Je crois qu'on peut définir à partir de quelles coordonnés x,y un texte doit commencer! En te servant de ca, tu dois pouvoir décaler les colonnes... ex: colonne1 commence à x=1 colonne2 commence à x=75 colonne2 commence à x=150 ... Et ainsi tu auras un bien meilleur alignement vertical (le coup des couleurs alternantes est aussi un plus) Lien vers le commentaire Partager sur d’autres sites More sharing options...
ZyriK Posté(e) le 13 septembre 2006 Auteur Partager Posté(e) le 13 septembre 2006 Jusque la vous m'apprenez rien ^^ Ce que je voulais savoir c'est comment faire ... C'est mieux comme ca ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
playstation.2.fg Posté(e) le 16 septembre 2006 Partager Posté(e) le 16 septembre 2006 Oui c'est déja beaucoup plus lisible. Manque plus qu'une autre police éventuellement et/ou une alternance de couleur à chaque ligne. Aussi pour les scores, un alignement à droite serait plus propice à la comparaison. Pour les proco, aussi mettre la ref à gauche, et la fréquence à droite. Ca permet de mieux comparer. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ZyriK Posté(e) le 16 septembre 2006 Auteur Partager Posté(e) le 16 septembre 2006 Les autres ont proposés un histogramme en supplément, ce qui est faisable je sais comment faire. Mais ils veulent aussi un changement de couleur pour les marque de carte graphique, le SLi, les 7950 GX2 et le Crossfire. Comment je peux faire ca ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
playstation.2.fg Posté(e) le 16 septembre 2006 Partager Posté(e) le 16 septembre 2006 Bah c'est pas très dur if ($name == "SLI") { $color = 'FF0000'; } elseif ($name == "Crossfire") { $color = '00FF00'; } Ou encore via un switch/case + un preg_reg. (tient au fait une petite info sur la quantité de Ram ça serait aussi cool). Lien vers le commentaire Partager sur d’autres sites More sharing options...
ZyriK Posté(e) le 16 septembre 2006 Auteur Partager Posté(e) le 16 septembre 2006 Merde c'est tout con en plus ! Mais pour differentier les marques ATI et NVIDIA c'est déjà beaucoup plus dur ... Si on rajoute encore la RAM ca commence a faire beaucoup dans la petite image ^^ Mais je peux toujours proposer ca. Au pire tu peux toujours poster tes idées dans le topic concerné ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
playstation.2.fg Posté(e) le 17 septembre 2006 Partager Posté(e) le 17 septembre 2006 Pour différencier les cartes ATI des cartes nVidia je te conseille les regex. C'est ce qui reste encore la méthode la plus simple, la plus efficace et également la plus rapide. A moins de rentrer toi même, à la main la marque de la CG. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ZyriK Posté(e) le 17 septembre 2006 Auteur Partager Posté(e) le 17 septembre 2006 Donc au pire faudrais rajouter un champ dans la bdd pour la marque de la carte graphique ... Je vais déjà faire changer la couleur de la ligne en fonction des cartes en SLi et crossfire, et pour le reste on verra. Je vais déjà essayer de trouver le temps de faire ca ... Merci pour ton aide :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
ZyriK Posté(e) le 17 septembre 2006 Auteur Partager Posté(e) le 17 septembre 2006 J'ai essayé de faire le changement de couleur de la ligne en fonction du SLi ou du Crossfire mais ca n'a rien donné ... Tu vas encore me dire c'est tout bete et me sortir la solution en 2 lignes mais je débute ^^ Dit moi ce qui vas pas ca sera plus simple :) <?php header("Content-type: image/gif"); include('connect.php'); $req = mysql_query('SELECT * FROM 3dmark ORDER BY score DESC'); $res = mysql_num_rows($req); $hauteur = $res * 15 + 20; $largeur = 800; $im = ImageCreateTrueColor ($largeur, $hauteur) or die ("Erreur lors de la création de l'image"); $color1 = imagecolorallocate($im, 0, 0, 100); $color2 = imagecolorallocate($im, 200, 200, 200); $color3 = imagecolorallocate($im, 230, 230, 230); $color4 = imagecolorallocate($im, 255, 0, 0); $color5 = imagecolorallocate($im, 0, 0, 0); $px = (imagesx($im) - 7.5 * strlen($string)) / 2; $zyzy = "Powered by ZyriK"; while($rep = mysql_fetch_object($req)) { $string .= "".stripslashes($rep->pseudo)." "; $string1 .= "".stripslashes($rep->score)." "; $string2 .= "".stripslashes($rep->cpu)." "; $string3 .= "".stripslashes($rep->gpu)." "; $string4 .= "".stripslashes($rep->mgpu)." "; }; if ($string4 == "SLI") { $color = imagecolorallocate($im, 0, 255, 0); } elseif ($name == "Crossfire") { $color = imagecolorallocate($im, 255, 0, 0); } else { $color = imagecolorallocate($im, 0, 0, 0); } mysql_close($base); ImageFilledRectangle ($im, 0, 0, $largeur, $hauteur, $color2); ImageFilledRectangle ($im, 145, 0, 245, $hauteur, $color3); ImageFilledRectangle ($im, 495, 0, 695, $hauteur, $color3); ImageRectangle ($im, 0, 0, $largeur-1, $hauteur-1, $color5); $t = explode("\n", $string); $i = 0; $t1 = explode("\n", $string1); $i1 = 0; $t2 = explode("\n", $string2); $i2 = 0; $t3 = explode("\n", $string3); $i3 = 0; $t4 = explode("\n", $string4); $i4 = 0; while ($i < sizeof($t)) { imagestring($im, 4, 5, $i*15, $t[$i], $color); $i++; } while ($i1 < sizeof($t1)) { imagestring($im, 5, 150, $i1*15, $t1[$i1], $color); $i1++; } while ($i2 < sizeof($t2)) { imagestring($im, 4, 250, $i2*15, $t2[$i2], $color); $i2++; } while ($i3 < sizeof($t3)) { imagestring($im, 4, 500, $i3*15, $t3[$i3], $color); $i3++; } while ($i4 < sizeof($t4)) { imagestring($im, 4, 700, $i4*15, $t4[$i4], $color); $i4++; } imagestring($im, 1, 360, $hauteur - 10, $zyzy, $color5); imagegif($im); imagedestroy($im); ?> Lien vers le commentaire Partager sur d’autres sites More sharing options...
playstation.2.fg Posté(e) le 20 septembre 2006 Partager Posté(e) le 20 septembre 2006 Déja dans cette partie de code if ($string4 == "SLI") { $color = imagecolorallocate($im, 0, 255, 0); } elseif ($name == "Crossfire") { $color = imagecolorallocate($im, 255, 0, 0); } else { $color = imagecolorallocate($im, 0, 0, 0); } tu ne teste pas 2x la variable $string4 (eh oui faut pas faire un simple copier coller). De plus, à la manière dont tu créé la variable $string4, ça ne risquera pas de marcher (et de te donner toujours du noir) $string4 .= "".stripslashes($rep->mgpu)." "; étant donné que tu saute une ligne : "SLI" != "SLI\n" Je te conseille de faire le choix de la couleur une fois que tu serras dans ta boucle. Ton code n'est non plus pas très propre : pourquoi ne pas directement créer le array ($t1, $t2, etc...) à partir de ta requette MySQL ? Ton script reste encore largement améliorable (et ceci pour toutes les parties de ton code), en mettant par exemple un seul tableau global (au lieu de passer ici par 5 arrays), et de faire un seul while à la fin (voir même directement remplir ton image lors de ton mysql_fetch). Un petit truc quand tu programmes des trucs dont tu n'es pas sur du résultat : fait des echo au milieu du prog, pour en suivre le déroulement (par contre pense à enlever le header alors). Avec le temps et la pratique tu n'en auras plus besoin parce que tu seras sur de ce que tu programmes. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ZyriK Posté(e) le 23 septembre 2006 Auteur Partager Posté(e) le 23 septembre 2006 Encore et encore merci Ca a l'air vraiment tout simple pour toi mais ca l'est pas pour moi forcement ... J'ai finalement réussi et je vais par contre essayer d'alleger le code ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.