Problème d'accents après validation dans textarea - PHP - Programmation
Marsh Posté le 02-06-2009 à 12:10:27
tout simplement parce que ton charset de page html est en utf-8 et que quand tu génères ton image, t'es un iso-8859-1 (latin1 si les valeurs ont été stockées en bd Mysql puis relues pour générer l'image). 2 solutions :
1) tu changes le charset de ta page html (là où y'a le formulaire) et tu mets "iso-8859-1".
2) pour générer ton image, tu convertis d'utf-8 en iso-8859-1 toutes les chaînes saisies via la fonction utf8_decode()
Pour info, t'as un autre pb : au réaffichage dans l'image, faut virer les \ qui précèdent les ' (fonction stripslasches()).
Marsh Posté le 02-06-2009 à 19:50:43
Tout d'abord, merci de vouloir m'aider. On dirait que les gens n'aiment pas trop ces problemes d'utf et d'iso. Je les comprend c'est super prise de tete..
Citation : 1) tu changes le charset de ta page html (là où y'a le formulaire) et tu mets "iso-8859-1". |
J'ai remplacé, dans ma page html, mon charset=utf-8" /> par charset=iso-8859-1" />. Ca marche tres bien pour le é mais pour le è, et à ca n'a pas resolu le problème. Ni pour le probleme du truc que quand j'appui sur "entrer" dans la zone de texte pour aller a la ligne, que ca me fait pas aller a la ligne mais que ca m'afffice des signes dans mon resultat (et ca c'est le probleme le plus embettant car les accents ca me gene un peu mais ce truc la c'est super embettant car indispensable)
Citation : 2) pour générer ton image, tu convertis d'utf-8 en iso-8859-1 toutes les chaînes saisies via la fonction utf8_decode() |
Le utf-8decode() je le met tel quel dans ma page biochimie.html ou dans resultat.php ? Si oui a quel endroit (je suis un peu nooby) . Et dans le () je doit mettre $string ?
Citation : Pour info, t'as un autre pb : au réaffichage dans l'image, faut virer les \ qui précèdent les ' (fonction stripslasches()). |
Je n'ai pas trouvé ces \ . Tu parles dans la page resultat.php ? Car j'en ai pas vu
Sinon je repete, au cas où, voici ci dessous mon header dans ma page resultat.php. Je ne sais pas si en partie mon probleme vient de la (bien que je ne pense pas mais on sait jamais )
Citation : <?php |
Marsh Posté le 03-06-2009 à 09:54:59
Dans biochimie.html, t'as pas changé le charset donc ça risque pas de marcher. Et si ça marche pour le é, ça marchera pour tous les caractères accentués. Et pour le retour à la ligne, dans le textarea, ça marche très bien mais, quand je fais "entrer", je passe bien à la ligne. Par contre, dans ton image faut que tu le gère toi-même je pense (détecter le caractère 13 en ascii ou le n et passer à la ligne toi-même).
utf8_decode(), c'est dans le php bien entendu et oui, faut mettre ce qui vient des champs de biochimie.html entre les () de utf8_decode
Pour les \ ben tapes ça dans test champs texte :
Citation : |
Marsh Posté le 03-06-2009 à 20:35:18
Je l'avais pas fait en ligne, je l'ai fait sur Wampserver, mais pour te prouver que c'est vraiment incomprehensible je viens de la mettre en ligne, tu peux maintenant la voir par toi meme . Avec Firefox, quand je tape mon texte et que je valide, sur mon schéma seul les "é" marchent. Si je fais un apostrophe ('), ca me donne ca : \' . Et la à et è me donnent des signent bizarres. Maintenant ouvres sous internet explorer c'est encore pire : le language iso n'est pas pas pris en compte dans ma page biochimie.html et aucun accent ne marche dans resultat.php.
Pour la truc que j'ai dis, quand j'appuis sur "enter" et que ca marche pas, ce n'est pas dans la zone de texte où la ca va bien a la ligne, c'est dans mon resultat.php . Tapes un texte avec "enter" pour aller a la ligne et valide, tu verras
Citation : faut mettre ce qui vient des champs de biochimie.html entre les () de utf8_decode |
Pourrais tu m'en dire plus ? Je dois avouer que je debute en php, je ne trouve pas que mettre dans cette parenthese...
Et pour l'histoire des \ dans l'affichage je viens de comprendre, mais comment faire pour les retirer ?
Moi qui pensais avoir fais le plus dur. Au final je suis completement emmerdé et bloqué a cause d'une stupide zone de texte
Merci pour ton aide J'espere que je vais y parvenir dans un futur proche
Marsh Posté le 04-06-2009 à 15:07:29
Penses à ce que ton éditeur de code source soit aussi en iso-8859-1 car maintenant sur ta page html (formulaire), t'as un pb de charset (lignes du bas).
http://www.compterendutp.webou.net [...] n2=Valider
le caractère bizarre entre le "." et "Ca marche pas" vient du retour à la ligne que tu ne traites pas et que t'affiches dans ton image. En plus, sur ton image, ma phrase est coupée (manque le "s" à "pas" ).
Dans ton php, faut que tu traites le retour à la ligne et l'éventuel changement de charset (faut faire $Msg = utf8_decode($_GET["textfield2"]); ) + le pb des \ (avec $Msg = stripslasches($Msg); ). http://fr3.php.net/manual/fr/function.stripslashes.php
ps : ça serait quand même mieux que ton formulaire soit posté en POST et non en GET!
Marsh Posté le 04-06-2009 à 19:18:28
J'ai envie de pleurer ! . Donc j'ai mis mon formulaire en POST (et donc dans resultat.php j'ai remplacé les GET par des POST), et j'ai rajouté dans resultat.php $Msg = utf8_decode($_GET["textfield2"]);. A ce niveau la j'ai fais un petit test sur Wampserver, et magnifique, sans avoir utilisé la fonction stripslasches, mes ' sortent bien, sans le \ (nb : mon wampserver ouvre les pages avec firefox).
Je fais donc un test en ligne en telechargeant mes nouvelles données sur mes pages, et petit test sur IE : les ' donnent encore des \ . Donc j''ai rajouté dans résultat.php la ligne que tu m'as mises, donc la fonction antislasches. Mais ca ne marche pas, toujours ce \. J'ai donc mis a la place $string = stripslashes($string);, pour voir si ca a un meilleur effet, mais non, ca ne marche pas . Et le pire c'est que si j'essaye d'ouvrir avec Firefox ca ne marche plus du tout (il s'affiche l'adresse de la page sur la page).
J'ai aussi mis dans index.html et biochimie.html le charset iso-8859-1, mais sans effet sur IE et sur Firefox (quand ca marché ) uniquement le "é", pour les autre ca fait de signes bisarres.
Je suis au bord du gouffre, je piétine depuis 5 jours
En tout cas merci encore de m'aider, en esperant que je ne t'embete pas trop et qu'on reussisse a quelque chose.
Nb : je ne sais pas si tu peux reussir a voir le code source de ma page resultat.php, donc je te le copie en entier ci dessous (pour les html t'as toujours le lien dans mon premier message )
Citation : <?php |
edit : j'te paye un biere apres ca
Marsh Posté le 04-06-2009 à 20:31:54
tas des serveurs qui ajoutent automatiquement des slash aux POST pour eviter des failles.
essaies stripslashes ($_POST['materiel1']); a tout tes POST
Marsh Posté le 04-06-2009 à 21:11:06
Voila, j'ai uniquement mis ce que tu m'as dis a ces 2 endroits :
Citation : imagestring($image, 3, 80, 45,stripslashes ($_POST['textfield2']), $couleur); |
Et ca marche nikel. Merci beaucoup
Par contre pour mon probleme d'aller a la ligne et de language, tu veux pas aider rufo ? Il galere !!! Je rigole biensur, rufo il est super et en plus c'est un des rares seuls qui osent m'aider dans ce probleme super prise de tete.
En gros, mon plus gros probleme c'est le probleme d'aller a la ligne. Car a la rigueur les accents, je laisserais un petit "nb : n'utiliser pas des accents". Meme si ca fait un peu gland et pas sérieux, ca peut faire bouer de sauvetage si on arrive pas a gerer ce probleme (mais avec des génies comme vous j'suis sur qu'on peut ), mais ce truc d'aller a la ligne ... Super énervant.
Merci à vous !!
Marsh Posté le 05-06-2009 à 00:43:13
http://us3.php.net/imagestring
lit les commentaires ya un developper qui propose une fonction pour ecrire sur plusieurs lignes:
Same function as above but it can display multi-line strings.
Marsh Posté le 05-06-2009 à 10:35:56
Code :
|
Sérieux, comment veux tu que ça marche comme ça? Ta variable $string n'est même pas définie! Et puis tu écrases le contenu de $Msg avec le contenu de textfield3 A un moment, faut quand même que tu te mettes à apprendre le php pour comprendre ce que tu fais ou dois faire...
Code :
|
Marsh Posté le 05-06-2009 à 22:42:02
Désolé rufo, j'suis un peu surmené en ce moment. Je bouffe 40 tuto par jours, il y a 7 ou 8 jours je ne savais meme pas ce qu'etait le php . J'essaye de faire de mon mieux, mais pas facile, je sais que je me suis attaqué à un peu trop dur pour quelqun qui débute, mais terminer ce projet me tient à coeur.
Le probleme des \ lorsqu''on met les ' a donc été résolu grace à vous. Merci. Je vais essayé de resoudre le probleme des accents avec tout ce que vous m'avez donné comme indication, avec l'appui de plusieurs tuto. Puis si je n'y arrive pas dessuite, ce n'est pas grave, dans un premier temps ce n'est pas indispensable surtout qu'on utilise pas beaucoup, voir presque jamais, des accents dans des noms de réactifs chimiques.
Cependant ce qu'il me faut absolument résoudre est le probleme d'aller a la ligne. Jonas3, merci pour ce que tu m'as donné, mais je dois avouer que ca me depasse un brin, je n'ai pas reussi à le faire malgré des dizaines de tests différents . Vous voulez bien m'aider ?
Sinon on m'a conseillé d'utiliser une police true type avec imagegettftext() mais j'ai un souci avec l'utilisation de cette police (on ne sait jamais, si vous savez resoudre mon probleme d'aller a la ligne avec ca plutot qu'avec autre chose, si cela peut le regler biensur^^) .
Tenez, un petit extrait de la fin de mon script dans resultat.php
Citation : $image = imagecreatefromjpeg($file); //ouverture de l'image jpeg |
nb : j'ai mis le fichier confn.ttf dans le meme repertoire que mon index.html et autres fichiers du site, et je l'ai installer dans mon vista avec un click droit. Je ne sais pas si il faut faire autre chose avec... Et j'ai fait les test sur wampserver
Mais si vous pensez que c'est inutile de se prendre la tete avec ca, passons, j'utiliserai mon imagestring qui marche tres bien, et auquel il faut regler le probleme d'aller a la ligne (je me repete ? )
Donc en gros, ..... aidez moi s'il vous plait
Merci pour tout ce que vous avez fait deja
Marsh Posté le 05-06-2009 à 22:56:47
si tu as pas envie de te prendre la tete avec les path et co.
tu peux copier la police dans ton repertoire de script et lapeler directement
$font="arialbd.ttf";
Imagettftext($im, $font_size, 0 , 0 , 0, $color, $font,$initials);
Marsh Posté le 05-06-2009 à 23:06:57
sinon si tu galeres trop avec cette histoire de retour a la ligne tu peux peut etre mettre plusieurs input text dans ton formulaire html.
chaques input text corresponderai a une ligne dans ton image.
C'est un peut moche comme solution mais c'est la plus simple !
Marsh Posté le 06-06-2009 à 12:43:05
En effet si dans 4 jours j'ai pas reussi a regler ca je crois que je vais utiliser cette technique tres moche mais qui marchera.
Pour info, mon message d'erreur est :
Citation : Parse error: syntax error, unexpected ';' in /home/enrico83/public_html/resultat.php on line 43 |
Ma ligne 43 correspond a :
Citation : imagettftext($image, 20, 0, 11, 21, $couleur, $font, stripslashes ($_POST['textfield2']); |
Donc en faite c'eest pour cela que ma police ne marche pas, j'ai une erreur sur cette ligne^^^. Pourquoi j'ai un unexpected ; ?
EDIT : j'avais oublié une parenthese sur ma ligne 43 et 44. Maintenant quand je valide j'ai un message d'erreur qui commence comme ca :
Citation : <br /> |
Marsh Posté le 06-06-2009 à 18:10:51
Voila, j'ai télécharger arial.ttf sur mon serveur (je ne pensais pas que c'etait indispensable, je pensais qu'il l'avait deja) et j'ai renommé en $font= 'arial.ttf' et ca marche super.
Tous les accents marchent, et surtout, quand j'appui sur "enter" dans la zone de texte ca va a la ligne dans le resultat.
Merci à tous ce qui m'ont fait avancer ainsi qu'a tout ceux qui participé !
RESOLU
Marsh Posté le 06-06-2009 à 19:04:01
Reply
Marsh Posté le 01-06-2009 à 22:31:34
Bonsoir, j'ai un enorme souci depuis 2 jours et je n'arrive vraiment pas a le resoudre.
J'ai un textarea qui me pose enorme probleme quand je valide et qu'il s'affiche sur ma page de resultat.php :
Lorsque je tape mon texte dans ma zone de texte (page html) et que je click sur valider, mon texte apparait bien sur mon image (donc le resultat est sur une page php), mais des que j'utilise des accents ou que j'appui sur la touche "enter" pour aller a la ligne, il y apparait des signes bizarres a la place...
Comment faire pour avoir mes accents et que ma touche enter me fasse aller a la ligne sur le resultat au lieu de génrer des signes ? Svp
nb : je ne sais pas si c'est utile de vous le dire, mais mes pages html contiennent ca :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Et dans ma page de resultat PHP je n'ai rien mis, je commence directe pas <?php
nb : pour visualisez le probleme, allez sur :
www.compterendutp.webou.net/biochimie.html
puis clickez sur la premiere case à cocher + la deuxieme (pour générer un schéma dans la page de resultat), et tapez quelques lettres avec des accents dans la zone de texte, puis validez, et vous aurez la resultat... donc le schéma bien généré mais des "A" bisarres et autres a la place de mes accents.
nb : je n'ai pas encore édité une position correcte du texte sur l'image donc je sais ce n'est pas encore tres beau, mais por le moment mon but est de faire marcher le site
Merci