Problème d'encodage de données de formulaire
Résolu
a.finot
Messages postés
74
Date d'inscription
Statut
Membre
Dernière intervention
-
enox -
enox -
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>
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>
A voir également:
- Problème d'encodage de données de formulaire
- Whatsapp formulaire opposition - Guide
- Fuite données maif - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Supprimer les données de navigation - Guide
8 réponses
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.
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...
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...
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ?
As-tu une solution ?
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.
Faut saisir les caractères spéciaux en utf8 également sinon je vois pas.