Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/12/2010, 08h13   #1
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Par défaut UI Autocomplete et les accents

Bonjour à tous,

Je viens a vous cars j'ai des petits problèmes d'accents vec jQueryUI - Autocomplete.

J'ai opté pour ceci : http://jqueryui.com/demos/autocomplete/#remote-jsonp

J'ai donc un fichier autocomplete_client.php qui va consulter la base de données et avec la fonction json_encode() me retourne les valeurs en fonction de $q = trim(strtolower(strip_tags($_GET['term'])));

Je pense et je suis persuadé que ce qui me retourne par print
Code PHP :
json_encode($matches);
c'est corrcet. J'ai remplacé
ceci
Code PHP :
$q = trim(strtolower(strip_tags($_GET['term'])));
par ceci
Sachant que dans ma base de donnée j'ai des nom temporaire tel que Gomé, Goméés...

Quand je cherge ma page autocomplete_client.php rirectement dans mon browser, je vois bien l'affichage des nom avec accents, s'affiché correctement.

En revanche dans le menu déroulant généré par jQueryUI, je vois ceci :
Citation:
Gomé
ou
Citation:
Goméés
tel que ce mot est enregistré dans la base de donnée.

Ainsi, comment puid-je corriger ce problème pour que ca fonctionne bien avec les noms?

Merci pour votre aide
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 09h45   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 001
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 001
Points : 45 077
Points : 45 077
le problème est multiple et javascript ou jquery n'a que peu a voir avec
Il est préférable d'être en 100% utf 8 (http://j-willette.developpez.com/tut...-site-en-utf8/)

et en effet c'est le strtolower qui pose souci
passe plutot par mn_convert_case
http://php.net/manual/fr/function.mb-convert-case.php
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 11h23   #3
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Salut,
J'ai suivi tes conseils, mais malheureusement ca ne marche pas :o(.
Je suis de plus plus persuadé que ce problème vient de JqueryUI.
Bon je peux tojours me tromper, mais , j'y pense.

Comme je l'ai écris, le
Code PHP :
print json_encode($matches);
Imprime très bien les caractères.

Je pense que cest lorsque ce script traville le code que le problème se produit:
Code JQUERY :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
$(document).ready(function(){				   
 
		var ac_config = {
			source: 'autocomplete_client.php',
			select: function(event, ui){
				alert(ui.item.fd_name);
				$("#id_client").val(ui.item.id_clients);
				$("span#client_id").html(ui.item.id_clients);
				$("#id_civility").val(ui.item.fd_civility);
				$("#id_name").val(ui.item.fd_name);
				$("#id_firstname").val(ui.item.fd_firstname);
				$("#id_city").val(ui.item.fd_city);
				$("#id_state").val(ui.item.fd_state);
				$("#id_street").val(ui.item.fd_street);
				$("#id_numero").val(ui.item.fd_nb);
				$("#id_bp").val(ui.item.fd_postal_box);
				$("#id_cp").val(ui.item.fd_cp);
				$("#id_phone").val(ui.item.fd_phone);
				$("#id_fax").val(ui.item.fd_fax);
				$("#id_mobile").val(ui.item.fd_mobile);
				$("#id_email").val(ui.item.fd_email);
				$("#id_url").val(ui.item.fd_url);
				$("#id_identity_type").val(ui.item.fd_identity_type);
				$("#id_identity_type_no").val(ui.item.fd_id_identity_type);
				$("#id_country").val(ui.item.fd_country);
 
				if(ui.item.fd_client_direct == 1)
				{
					$("#id_client_direct").attr('checked','checked');
				}
				else
				{
					$("#id_client_direct").attr('checked','');
				}
 
				if(ui.item.fd_client_TO == 1)
				{
					$("#id_client_to").attr('checked','checked');
				}
				else
				{
					$("#id_client_to").attr('checked','');
				}
				$("#id_comment").val(ui.item.fd_coment);
 
				deroulant_close();
				$("div#error-display").empty();
 
			},
			minLength:1
		};
		$( "#id_name" ).autocomplete(ac_config);
 
	});
Mais bon je ne suis pas certain d'avoir raison, car je ne trouve pas la solution
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 11h25   #4
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Dans mon fichier autocomplete_client.php,
j'ai même ajouté ceci à la première ligne
Code PHP :
1
2
 
header( 'content-type: text/html; charset=utf-8' );

Pour info, mon fichier autocomplete_client.php est le suivant
Code PHP :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
<?php
header( 'content-type: text/html; charset=utf-8' );
$clients = array(
);	
 
$root="../";
include($root.'sql/db_connect.php');
$sql_search = 'SELECT * FROM tb_clients ORDER BY fd_name';
$query_search = mysql_query($sql_search)or die(mysql_error());
$nb_search = mysql_num_rows($query_search);
 
 
while($data_search=mysql_fetch_assoc($query_search)){
	$clients[]=$data_search;
}
 
// Cleaning up the term
 
#$q = trim(strtolower(strip_tags($_GET['term'])));
$q = "Gom";
if (!$q) return;
 
// Rudimentary search
$matches = array();
foreach($clients as $client){
 
	if(stripos($client['fd_name'], $q) !== false){
	#if (strpos(strtolower($city['city']), $q) !== false) {
		// Add the necessary "value" and "label" fields and append to result set
		$client['value']= $client['fd_name'];
		$client['label']="{$client['fd_name']} {$client['fd_firstname']}, {$client['fd_state']}";
	#	$matches[] = html_entity_decode($client,ENT_COMPAT,'UTF-8');
		$matches[] = $client;
	}
	#else{
		#$matches[]= '';
	#}
}
 
// Truncate, encode and return the results => LIMIT THE OUTPUT
#$matches = array_slice($matches, 0, 10);
print json_encode($matches);
?>
qui fonctionne bien, sauf, ... avec les accent
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 12h50   #5
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 001
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 001
Points : 45 077
Points : 45 077
je pense que le fichier qui fait le traitement du json_encode n'est pas en utf8
vérifie dans notepad++ l'encodage de ton fichier et convertis le en utf8 sans bom si il ne l'est pas
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 12h54   #6
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Ben oui, je te confirme qu'il est bien en itf-8.
Sous Dreamviewer je suis aller voir sous Title/encoding"

et sous TextWangler c'est bien indiqué Unicode (UTF-8, no BOM)

je n'ai pas notepad++, je suis sous mac
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 12h55   #7
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
Code php :
header( 'content-type: text/html; charset=utf-8' );
Code php :
print json_encode($matches);
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 23h10   #8
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
J'ai trouvé!!!

Et c'est téllement simple que j'ai du mal à croire que c'est pour cela que ca marche!!!!!

J'ai longtemps tourné autour de ca
Code PHP :
1
2
echo html_entity_decode($client['fd_name'];
);
Puis j'ai ajoutl ca
Code PHP :
1
2
echo html_entity_decode(json_encode($client['fd_name']
,ENT_COMPAT,'UTF-8');

Et vu que ca me donnais un résultat concluant, je l'ai déplacé ici

Code PHP :
echo html_entity_decode(json_encode($matches),ENT_COMPAT,'UTF-8');

Et ca marche super bien, du moins pour le moment, mais mes accent ss'affichent correctement pour tous mes champs du formulaires!!!!

C'est super que ca marche car j'ai surfé toutes la journée pour trouver des compromis avec jQuery et je suis tombé sur des trucs que je ne comprennais rien de rien.

Et finallement, cette solution marche très bien, qui semble SI SIMPLE.

Quand pensez-vous?
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h22.


 
 
 
 
Partenaires

Hébergement Web