Hello tout le monde,

J'ai un problème avec mon système de commentaire, lorsqu'on ajoute un commentaire qui contient des accents ils ne passent pas...

Je vous mets mon code :


<?php
mysql_connect("host", "login", "mdp"); // Connexion à MySQL
mysql_select_db("mabase"); // Sélection de ma base

$infos = mysql_query("SELECT * FROM commentairesvids WHERE id='" . $_GET['id'] . "'")or die (mysql_error()); // Ici on liste les commentaires dans l'ordre décroissant où le champ idnews est le même que celui de la variable contenue dans l'adresse de la page

while ($donnees = mysql_fetch_array($infos)) // Une boucle pour écrire les données
{
$pseudo = stripslashes($donnees['pseudo']);
$email = stripslashes($donnees['email']);
$message = stripslashes($donnees['message']);
?>

<div class="content-commentaires"><span class="auteur-commentaire">Par <strong><?php echo $pseudo; ?></strong> le </span>
<?php echo $message; ?>
</div>


<?php
} // On n'oublie surtout pas de fermer la boucle !
if (isset($_POST['message']) AND isset($_POST['pseudo']))
{
if($_POST['message'] != '' AND $_POST['pseudo'] != '')
{
$auteur = addslashes(htmlentities($_POST['pseudo'], ENT_QUOTES));
$email = addslashes(htmlentities($_POST['email'], ENT_QUOTES));
$message = addslashes(htmlentities($_POST['message'], ENT_QUOTES));
$idcomment = $_POST['idcomment']; // Vérification : on fait attention à ce que l'auteur ait rempli tous les champs. Quels champs ? Ceux du formulaire que l'on va créer un peu plus bas

mysql_query ("INSERT INTO commentairesvids VALUES('', '" . $auteur . "', '" . $email . "', '" . $message . "', '" . $idcomment . "')")or die (mysql_error()); // Là, on entre juste les données dans une nouvelle entrée de la table SQL...

echo "Votre commentaire a bien été enregistré !";
}
}
?>

<br /><br />

<!--formulaire commentaire -->
<span class="titre-ajout-commentaires" id="ajoutercommentaire">Ajouter un commentaire</span>
<div id="ajouter-commentaire">
<form method="post">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td height="30">Votre nom / pseudo</td>
    <td height="30"><input type="text" name="pseudo" /></td>
  </tr>
  <tr>
    <td height="30">Votre e-mail (non affiché)</td>
    <td height="30"><input type="text" name="email" /></td>
  </tr>
  <tr>
    <td height="30" valign="top">Votre commentaire</td>
    <td height="30"><textarea name="message" rows="5" cols="25"></textarea></td>
  </tr>
  <tr>
    <td height="30">&nbsp;</td>
    <td height="30"><input type="hidden" name="idcomment" value="<?php echo $_GET['id']; ?>" />
<input type="submit" value="Envoyer !" /></td>
  </tr>
</table>
</form>


Si vous voulez d'autres précisions hésitez pas à demander,

Merci pour votre aide.
Modifié par Artefact (13 Jul 2008 - 00:10)
Modérateur
Salut,

Peux-tu indiquer :

- quel est l'encodage de la page html depuis laquelle on écrit un commentaire ?
- quel est l'encodage de ta base ?
- quel est l'encodage de la page html dans laquelle tu affiches les commentaires ?
- le code qui te sert à afficher ces commentaires ?

PS : C'est hors sujet ici mais je t'invite à consulter ce document. Smiley cligne
Alors :

- Encodage de ma page html pour écrire et afficher les commentaire (c'est sur la même page) : charset=utf-8
- Encodage de ma base : UTF-8 Unicode (utf8)

Le code pour afficher les commentaires :

<?php

mysql_connect("host", "login", "mdp"); // Connexion à MySQL

mysql_select_db("mabase"); // Sélection de ma base



$infos = mysql_query("SELECT * FROM commentairesvids WHERE id='" . $_GET['id'] . "'")or die (mysql_error()); // Ici on liste les commentaires dans l'ordre décroissant où le champ idnews est le même que celui de la variable contenue dans l'adresse de la page



while ($donnees = mysql_fetch_array($infos)) // Une boucle pour écrire les données

{

$pseudo = stripslashes($donnees['pseudo']);

$email = stripslashes($donnees['email']);

$message = stripslashes($donnees['message']);

?>



<div class="content-commentaires"><span class="auteur-commentaire">Par <strong><?php echo $pseudo; ?></strong> le </span>

<?php echo $message; ?>

</div>
Modérateur
Ben y'a pas de problème alors...

salut ! Smiley lol




...

Plus sérieusement, rien ne me semble anormal dans ton code... Le problème doit venir d'ailleurs. Smiley sweatdrop

Ton fichier est-il bien encodé en utf-8 (je ne parle pas là de la balise meta mais bien de l'encodage du fichier) ?
Et quel est ton éditeur ?
J'utilise Dream'.

Je peut pas rajouter une fonction lors de l'affichage ? J'avais essayé ceci :

mysql_query("SET NAMES UTF8"); 


Mais sans succès. Smiley sweatdrop
Non sa ne fonctionne pas non plus Smiley ohwell

Sinon y'a pas moyen que mes accent ne soit pas "convertis" lors de l'envois dans le formulaire ?
Artefact a écrit :
Sinon y'a pas moyen que mes accent ne soit pas "convertis" lors de l'envois dans le formulaire ?
il suffit de remplacer les htmlentities par des htmlspecialchars.

Sinon pour Dreamweaver, tu as bien fait : Modifier -> Propriétés de la Page -> Titre / Codage -> UTF-8 ?
Merci Heyoan sa fonctionne maintenant Smiley biggrin !

Heyoan a écrit :
Sinon pour Dreamweaver, tu as bien fait : Modifier -> Propriétés de la Page -> Titre / Codage -> UTF-8 ?


Oui Smiley cligne