Problème d'encodage de données de formulaire

Résolu/Fermé
a.finot Messages postés 74 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 12 février 2014 - 27 juin 2009 à 19:18
 enox - 30 juin 2009 à 11:43
Bonjour,
J'ai un formulaire d'inscription qui envoie des données dans une base mysql mais les données sont enregistrées en html, donc sans les accents... ma base est codée en utf8.
Je voudrais utiliser la fonction html_entity_decode mais je ne sais pas où la placer. Ca fait des heures que je cherche et après des tas d'essais je ne trouve pas ;-(
Si quelqu'un a la soluce, je suis preneuse !
Merci d'avance.

Voici le code :
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "contacts")) {
$insertSQL = sprintf("INSERT INTO clients (ID, nom, prenom, email, tel, adresse, cp, ville, pays, `index`, niveau) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['ID'], "int"),
GetSQLValueString($_POST['nom'], "text"),
GetSQLValueString($_POST['prenom'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['tel'], "text"),
GetSQLValueString($_POST['adresse'], "text"),
GetSQLValueString($_POST['cp'], "text"),
GetSQLValueString($_POST['ville'], "text"),
GetSQLValueString($_POST['pays'], "text"),
GetSQLValueString($_POST['index'], "text"),
GetSQLValueString($_POST['niveau'], "text"));

mysql_select_db($database_lcdvs, $lcdvs);
$Result1 = mysql_query($insertSQL, $lcdvs) or die(mysql_error());

$insertGoTo = "home.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
?>
<div id="formulairecontact">
<form action="<?php echo $editFormAction; ?>" name="contacts" id="contacts" method="POST""http://www.lesclefsdevotreswing.com/envoimail.php">
<table width="610" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="311" height="27">Nom :
<input name="nom" type="text" id="nom" size="35" /></td>
<td width="299">Prénom :
<input name="prenom" type="text" id="prenom" size="35" /></td>
</tr>
<tr>
<td><p>Adresse :
<input name="adresse" type="text" id="adresse" size="35" />
</p> </td>
<td>Pays :
<input name="pays" type="text" id="pays" size="35" /></td>
</tr>
<tr>
<td>Code postal :
<input name="cp" type="text" id="cp" size="35" /></td>
<td>Ville :
<input name="ville" type="text" id="ville" size="35" /></td>
</tr>
<tr>
<td>Email :
<input name="email" type="text" id="email" size="35" /></td>
<td>Mobile :
<input name="tel" type="text" id="tel" size="35" /></td>
</tr>
<tr>
<td>Index :
<input name="index" type="text" id="index" size="35" /></td>
<td>Si vous n'êtes pas classé, merci de nous indiquer votre niveau :
<select name="niveau" id="niveau">
<option value="Classé">Classé</option>
<option value="Non initié">Non initié</option>
<option value="Débutant">Débutant</option>
<option value="Carte verte">Carte verte</option>
<option value="Moyen">Moyen</option>
</select></td>
</tr>
<tr>
<td><input type="hidden" name="ID" id="ID" /></td>
<td><input type="submit" name="envoyer" id="envoyer" value="Validez votre inscription" /></td>
</tr>
</table>

<input type="hidden" name="MM_insert" value="contacts" />
</form>
</div>

8 réponses

a.finot Messages postés 74 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 12 février 2014 2
29 juin 2009 à 11:32
Bjr,

Est-ce que ce matin quelqu'un aurait une réponse à m'apporter ?
0
Il y a un truc que je comprends pas, tu utilises htmlentities donc normalement tes données sont enregistrées en html et quand tu récupères le contenu de tes bases et que tu les affiches, il n'y a pas à décoder les codes html, c'est le rôle du navigateur ça.
0
a.finot Messages postés 74 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 12 février 2014 2
29 juin 2009 à 12:34
Bjr,
Merci pour ta réponse !
En fait mon problème c'est que je ne veux pas que mes données soient enregitrées en html dans ma base.
Quand j'ai copié mon code je n'ai pas fait gaffe qu'il y avait la fonction htmlentites au lieu de html_entity_decode (ça devait être l'un de mes nombreux tests ;-)). J'ai fait des tas d'essais, notamment sans fonction, avec htmlentities et html_entity_decode à cet endroit et ça ne change rien... je n'ai plus d'idées...
0
Et pourquoi tu veux pas que ce soit en html ? C'est pourtant le plus simple, ça évite les caractères bizarres que tu peux trouvé avec utf8
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
a.finot Messages postés 74 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 12 février 2014 2
29 juin 2009 à 12:52
J'ai besoin d'exporter les données de cette table dans excel, alors les zigouigouis à la place des accents... ça le fait pas.
As-tu une solution ?
0
Le problème c'est que si tu envois tes accents cash dans ta base à mon avis tu va te retrouver avec des choses bizarres...
Faut saisir les caractères spéciaux en utf8 également sinon je vois pas.
0
a.finot Messages postés 74 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 12 février 2014 2
29 juin 2009 à 13:08
Il n'y a pas un autre codage plus adapté ?
0
Bah si ta base est configuré en utf8, si tu veux pas de merdes avec les accents, il faut une saisie en utf8. Enfin chez moi ça marche comme ça ;)
0