Problème d'accents après validation dans textarea

Problème d'accents après validation dans textarea - PHP - Programmation

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 :p
 
Merci

Reply

Marsh Posté le 01-06-2009 à 22:31:34   

Reply

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()).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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

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 :p (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 :p
 
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 :p)
 

Citation :

<?php
 
header('Content-type: image/jpeg');


Message édité par charlelechauve le 02-06-2009 à 20:18:13
Reply

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 :


c'est bien, j'ai testé.
Ca marche pas...


Message édité par rufo le 03-06-2009 à 09:56:32

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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

Citation :

faut mettre ce qui vient des champs de biochimie.html entre les () de utf8_decode


 
Pourrais tu m'en dire plus ?  :ange:  Je dois avouer que je debute en php, je ne trouve pas que mettre dans cette parenthese...  :cry:  
 
Et pour l'histoire des \ dans l'affichage je viens de comprendre, mais comment faire pour les retirer ?  :D  
 
Moi qui pensais avoir fais le plus dur. Au final je suis completement emmerdé et bloqué a cause d'une stupide zone de texte  :cry:  
 
Merci pour ton aide :) J'espere que je vais y parvenir dans un futur proche :p


Message édité par charlelechauve le 03-06-2009 à 21:08:03
Reply

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!


Message édité par rufo le 04-06-2009 à 15:10:41

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 04-06-2009 à 19:18:28    

J'ai envie de pleurer !  :D  .  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  :cry: . 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é :p) uniquement le "é", pour les autre ca fait de signes bisarres.  
 
Je suis au bord du gouffre, je piétine depuis 5 jours  :pt1cable:  
 
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  :kaola: )
 

Citation :

<?php
 
header('Content-type: image/jpeg');
/* ligne à modifier selon votre installation */
 
 
$materiel1 = (isset($_POST['materiel1']) && strlen($_POST['materiel1'])>0);
$materiel2 = (isset($_POST['materiel2']) && strlen($_POST['materiel2'])>0);
$materiel3 = (isset($_POST['materiel3']) && strlen($_POST['materiel3'])>0);
$materiel4 = (isset($_POST['materiel4']) && strlen($_POST['materiel4'])>0);
 
if ($materiel1 && !$materiel2 && !$materiel3 && !$materiel4)
{
$file = 'img-test/becher.jpg';
} elseif ($materiel1 && $materiel2 && !$materiel3 && !$materiel4)
{
$file = 'img-test/burettebecher.jpg';
} elseif (!$materiel1 && $materiel2 && $materiel3 && !$materiel4)
{
$file = 'img-test/ballon+burette.jpg';
} elseif (!$materiel1 && !$materiel2 && $materiel3 && !$materiel4)
{
$file = 'img-test/ballon.jpg';
} elseif (!$materiel1 && !$materiel2 && !$materiel3 && $materiel4)
{
$file = 'img-test/erlen.jpg';
} elseif (!$materiel1 && $materiel2 && !$materiel3 && $materiel4)
{
$file = 'img-test/buretteerlen.jpg';
}
 
 
$image = imagecreatefromjpeg($file); //ouverture de l'image jpeg
 
$couleur = imagecolorallocate ($image, 0, 0,0);//black text  
 
imagestring($image, 3, 80, 45, $_POST['textfield2'], $couleur);  
imagestring($image, 3, 80, 100, $_POST['textfield3'], $couleur);  
 
$Msg = utf8_decode($_POST["textfield2"]);
$Msg = utf8_decode($_POST["textfield3"]);  
   
$string = stripslashes($string);  
 
imagejpeg($image);
imagedestroy($image);
?>


 
edit : j'te paye un biere apres ca  :lol:


Message édité par charlelechauve le 04-06-2009 à 19:22:12
Reply

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


---------------
http://petitjonas.blogspot.com/
Reply

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);  
imagestring($image, 3, 80, 100,stripslashes ($_POST['textfield3']), $couleur);  


 
 
Et ca marche nikel. Merci beaucoup  :jap:  
 
Par contre pour mon probleme d'aller a la ligne et de language, tu veux pas aider rufo ? Il galere !!!  :kaola:  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 :p), mais ce truc d'aller a la ligne ...  :cry:  Super énervant.  
 
Merci à vous !!

Reply

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.


---------------
http://petitjonas.blogspot.com/
Reply

Marsh Posté le 05-06-2009 à 00:43:13   

Reply

Marsh Posté le 05-06-2009 à 10:35:56    

Code :
  1. $Msg = utf8_decode($_POST["textfield2"]);
  2. $Msg = utf8_decode($_POST["textfield3"]); 
  3.  
  4. $string = stripslashes($string);


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 :
  1. $Msg2 = stripslashes(utf8_decode($_POST["textfield2"]));
  2. $Msg3 = stripslashes(utf8_decode($_POST["textfield3"]));


 


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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  :sweat: .  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 ?  :D  
 
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^^)  :heink: .  
Tenez, un petit extrait de la fin de mon script dans resultat.php
 

Citation :

$image = imagecreatefromjpeg($file); //ouverture de l'image jpeg
 
$couleur = imagecolorallocate ($image, 0, 0,0);//black text  
 
// Définition de la variable d'environnement pour GD
putenv('GDFONTPATH=' . realpath('.'));
 
// Nom de la police à utiliser (notez l'absence de l'extension .ttf)
$font = 'confn';
 
imagettftext($image, 20, 0, 11, 21, $couleur, $font, stripslashes ($_POST['textfield2']);
imagettftext($image, 20, 0, 11, 21, $couleur, $font, stripslashes ($_POST['textfield3']);  
 
imagejpeg($image);
imagedestroy($image);
?>


 
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  :pt1cable:  
 
Merci pour tout ce que vous avez fait deja
 

Reply

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


---------------
http://petitjonas.blogspot.com/
Reply

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 !


---------------
http://petitjonas.blogspot.com/
Reply

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 ; ?  :pt1cable:
 
 
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 />
<b>Warning</b>: imagettftext() [<a href='function.imagettftext'>function.imagettftext</a>]: Invalid font filename in <b>/home/enrico83/public_html/resultat.php</b> on line <b>43</b><br />
<br />
<b>Warning</b>: imagettftext() [<a href='function.imagettftext'>function.imagettftext</a>]: Invalid font filename in <b>/home/enrico83/public_html/resultat.php</b> on line <b>44</b><br />
ÿØÿàJFIFÿþ>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality
ÿÛC 

 $.' ",#(7),01444'9=82<.342ÿÛC 
 
2!!22222222222222222222222222222222222222222222222222ÿÀ(b"ÿÄ  
ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚  
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ  
ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ


Message édité par charlelechauve le 06-06-2009 à 14:20:33
Reply

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

Reply

Marsh Posté le 06-06-2009 à 19:04:01    

Génial, content d'avoir pu aider :)


---------------
http://petitjonas.blogspot.com/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed