8722 sujets

Développement web côté serveur, CMS

Bonjour,


C'est connu, les accents deviennent des symboles, il y a pleins de solutions sur le NET, mais après en avoir essayé rien ne résout mon problème.

Explications : J'ai un formulaire PHP avec une base de données derrière. Quand je rempli le formulaire, les caractères spéciaux sont OK, mais les accents sont le seul problème car au lieu qu'ils soient transformés en caractères spéciaux, le mot complet n'apparaît pas dans la base de données.
Illustrations :
upload/50375-Capture.PNG
upload/50375-Capture25.PNG
upload/50375-Capture2.PNG

Ma base de données a le même encodage que ma page PHP :
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />

Que voici :
// recherche de l'action demande par l'utilisateur
if (isset($_GET['action']))
{
  // ajout d'un lment
  if ($_GET['action']=="A")
  {
       //formulaire d'ajout d'un lment	   
       echo '<form method="POST" action="ssmenu_enr.php" >' ;
	   echo '<h2 id="ancre_ajout"><u><br />Ajout d\'un sous-menu</u></h2><br /><br />';
       if (isset($_SESSION['mess']) && ($_SESSION['mess']!=""))
       {
           echo '<p class="erreur">'.$_SESSION['mess'].'</p>' ;
       } 
       echo '<div class="data">' ;
	   echo '<center>N&deg; d\'ordre:&nbsp;&nbsp;<input type="text" name="ordre" id="ordre" size=15/><span class="donnee_obligatoire">&nbsp;&nbsp;&nbsp;</span></center><br>' ;  
	   $req="select * from menu order by NomMenu asc";
       $exec=mysql_query($req);
          
	   echo '<br><br>Nom du menu: <select name="menu" size=1>';
	   while ($ligne=mysql_fetch_array($exec))
	   {
			echo '<option value="'.$ligne['NumMenu'].'">'.$ligne['NomMenu'];   
	   }
	   echo '</select>';
	   echo '<center>Nom du sous-menu:&nbsp;&nbsp;<input type="text" name="nomSS" id="nomSS" size=20/><span class="donnee_obligatoire">&nbsp;&nbsp;&nbsp;</span></center><br>' ;
       
	   echo 'Visible que pour les adherents ? <INPUT type="checkbox" name="visible" value="1">'; // Checkbox //
	   
	   echo '</div><br>' ;
       echo '<p><center><input type="submit" class="submit"  value="&nbsp;&nbsp;Valider" />' ;
       echo '<input type="reset" class="reset" value="Effacer" /> </center> </p>' ;
	   echo '<p class="droite"><span class="donnee_obligatoire">&nbsp;&nbsp;&nbsp;</span><span class="saisie_ob">saisie obligatoire</span></p>' ;
       echo '</form>' ;

  }


Merci pour tout savoir transmit.

Cordialement,
lizeal
Enfait ça a été plus simple et étonnant, j'ai juste supprimé les htmlentities qui posaient problèmes juste sur certains $_POST.
Pourtant il me semblait que htmlentities justement empêchaient ce problème ...
Euh je trouve un peu louche quand même... C'est plus ou moins obligatoire comme fonction pour se protéger des injections (sql dans ton cas). Tu devrais au moins essayer un htmlspecialchars
Je trouve ça louche aussi. J'ai mes fichiers qui sont en iso, mes tables aussi. Et ça passe avec ça :

$nom=htmlentities($nom,ENT_QUOTES,'ISO-8859-15');
Moi aussi j'ai trouvé ça louche et pourtant j'ai quand même voulu essayer, je les aient supprimés et ... tout fonctionne O_o
lizeal a écrit :
Moi aussi j'ai trouvé ça louche et pourtant j'ai quand même voulu essayer, je les aient supprimés et ... tout fonctionne O_o

Tu es bien certain(e) d'avoir précisé l'encodage dans le htmlentities ?