Rechercher : dans
Par :

Formulaire + get + enlever accents

Dernière réponse le 29 oct 2009 à 13:07:06 biguiz, le 31 jui 2008 à 14:49:55 
 Signaler ce message aux modérateurs

Bonjour à tous,
j'utilise un formulaire pour récupérer un mot pour mon moteur de recherche.
Tout marche niquel sauf quand le mot comporte un accent, ça ne m'affiche aucun enregistrement, alors que dans la base il contient bien un accent.

Connaitriez-vous une méthode pour envoyer mon mot en GET sans l'accent afin que ma requête fonctionne convenalblement ? Peut être avec du javascript ?


Merci par avance !

Configuration: Mac OS X
Safari 525.18

Meilleures réponses pour « Formulaire + get + enlever accents » dans :
Supprimer les accents avec PHP Voir Pour un tas de raisons, il est parfois utile de convertir un texte accentué en un texte sans accents. Voici une fonction permettant de transformer très simplement la quasi-totalité des accents en leur équivalent non-accentués : function...
[Webmaster] Un formulaire de contact pour votre site VoirCe formulaire permet d'avoir une page pour être contacté sur son site, sans utiliser de logiciel de messagerie. La personne qui vous contacte indique son adresse, l'objet du message et son message (évidemment). Le code est une version...
Mythe - Il existe des logiciels pour enlever la voix d'un MP3 VoirMythe Il existe un logiciel pour enlever les paroles d'une musique afin de l'utiliser pour un karaoke. Réalité VRAI et FAUX Explications C'est possible théoriquement et dépendamment de comment la chanson a été enregistrée, et pas besoin de...
Télécharger Accent Excel Password Recovery VoirAccent Excel Password Recovery est un récupérateur de mots de passe pour fichier excel. Fini donc les mots de passe oubliés ou perdus. Sa particularité est d'utiliser des algorithmes permettant la récupération du mot de passe : - Soit l'algorithme de...
Les formulaires HTML VoirIntérêt d'un formulaire Les formulaires interactifs permettent aux auteurs de pages Web de doter leur page web d'éléments interactifs permettant par exemple un dialogue avec les internaute, à la manière des coupons-réponse présents dans certains...
Servlets - Gestion des formulaires VoirIntroduction 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...
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...

1

PeterPeterPeter, le 31 jui 2008 à 15:48:55

http://www.01php.com/fiche-sources-26.html

Je n'ai pas testé mais ça a l'air de marcher.

Répondre à PeterPeterPeter

2

biguiz, le 31 jui 2008 à 15:55:14

OK merci.
J'ai testé ce code mais je ne sais pas comment l'utiliser.
Faut que je mette cette fonction au niveau de la requête ?
Faut-il que je remplace le $string par une de mes variables ?

Répondre à biguiz

3

PeterPeterPeter, le 31 jui 2008 à 16:17:45

Balance ton code jusqu'à maintenant voir à quoi il ressemble et où il faut placer le tout.

edit : c'est lors de la reception de ton GET avant qu'il ne soit traité tu dois le faire passer par la fonction.

Répondre à PeterPeterPeter

4

biguiz, le 31 jui 2008 à 16:32:28

Function removeaccents($mot)
{
$mot= strtr($mot,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");

return $mot;
} ;

$mots = explode(' ', $mot); //séparation des mots de la recherche à chaque espace
$nombre_mots = count ($mots); //compte le nombre de mots

$valeur_requete = '';
for($nombre_mots_boucle = 0; $nombre_mots_boucle < $nombre_mots; $nombre_mots_boucle++)
{
$valeur_requete .= 'AND (nom LIKE \'%' . $mots[$nombre_mots_boucle] . '%\' OR descriptif LIKE \'%' . $mots[$nombre_mots_boucle] . '%\' OR categorie LIKE \'%' . $mots[$nombre_mots_boucle] . '%\')'; //modification de la variable $valeur_requete
}
$valeur_requete = ltrim($valeur_requete,'AND');


mysql_connect ($Hote, $Utilisateur, $Motdepasse);
$mot = addslashes($mot);
$Requete2 = "SELECT * from $Nomtable WHERE $valeur_requete";
$Resultat2 = mysql_db_query ($Nombase, $Requete2);

//comptage
$Nbe = mysql_num_rows($Resultat2);

Répondre à biguiz

5

 Laurent Delacre, le 29 oct 2009 à 13:07:06

Le problème est que la fonction GET envoie les données tapées au clavier via l'URL à ton fichier PHP. Or il est interdit de mettre des accents dans un URL. La fonction GET utilise donc une table spéciale pour convertir tes accents en caractères de base. Chez moi, par exemple, mon serveur utilise l'utf8 (UNICODE), et la fonction get traduit le caractère "é" en "é".

Il est toutefois possible de faire reconvertir (dans l'autre sens) ton code PHP (à la réception de ces caractères bizarres donc) pour obtenir à nouveau les caractères accentués. Pour cela, tu dois utiliser la fonction PHP utf8_decode. Tu peux ensuite, si tu le souhaite, enregistrer ces données dans une base de données, à condition que celle-ci soit également configurée pour utiliser l'unicode...

Voici un exemple de codes html, puis php qui illustrent mes propos:

index.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<FORM METHOD=GET ACTION="reception.php">
		nom: <INPUT NAME="nom"><BR>
		prénom: <INPUT NAME="prénom"><BR>
		<INPUT TYPE=SUBMIT>
	</FORM>
</body>
</html>


reception.php:

<?php
foreach($HTTP_GET_VARS as $clé=>$valeur){
	$clé = utf8_decode($clé);
	$valeur = utf8_decode($valeur);
	echo "$clé => $valeur<BR>\n";
}
?>

Répondre à Laurent Delacre