Rechercher : dans
Par :

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

Dernière réponse le 30 jun 2009 à 11:43:43 a.finot, le 27 jun 2009 à 19:18:58 
 Signaler ce message aux modérateurs

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>

Configuration: Windows XP Internet Explorer 7.0

Meilleures réponses pour « problème d'encodage de données de formulaire » dans :
Servlets - Gestion des formulaires Voir Introduction aux formulaires Les servlets rendent très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML, c'est-à-dire une interface graphique permettant à l'utilisateur de saisir des données. Grâce à la balise...
Bases de données - Utilisation de formulaires Voir Utilisation de formulaires Afin d'exploiter les bases de données, il faut fournir une interface à l'utilisateur lui permettant de visualiser des données en fonction de certains critères. Pour cela il existe un outil : les formulaires. Un formulaire...
Supprimer l'historique des recherches VoirLorsque vous utilisez un formulaire de saisie, par exemple dans la barre de recherche de Google, le navigateur affiche la liste des dernières recherches. Pour des raisons de confidentialité ou d'optimisation, vous souhaitez supprimer une ou...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
ASP - L'objet Request VoirPrésentation de l'objet Request Le rôle de l'objet Request est de permettre de récupérer la requête HTTP envoyée par le client au serveur, c'est-à-dire qu'il permet en réalité de manipuler l'ensemble des informations envoyées par le navigateur du...

1

a.finot, le 29 jun 2009 à 11:32:25

Bjr,

Est-ce que ce matin quelqu'un aurait une réponse à m'apporter ?

Répondre à a.finot

2

enox, le 29 jun 2009 à 12:26:24

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.

Répondre à enox

3

a.finot, le 29 jun 2009 à 12:34:50

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

Répondre à a.finot

4

enox, le 29 jun 2009 à 12:38:38

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

Répondre à enox

5

a.finot, le 29 jun 2009 à 12:52:53

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 ?

Répondre à a.finot

6

enox, le 29 jun 2009 à 13:06:28

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.

Répondre à enox

7

a.finot, le 29 jun 2009 à 13:08:45

Il n'y a pas un autre codage plus adapté ?

Répondre à a.finot

8

 enox, le 30 jun 2009 à 11:43:43

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

Répondre à enox