IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

UI Autocomplete et les accents


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 166
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    json_encode($matches);
    c'est corrcet. J'ai remplacé
    ceci
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    $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 :
    Gomé
    ou
    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

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    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 - Mon Blog 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

    Venez sur le Chat de Développez !

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 166
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 166
    Par défaut
    Dans mon fichier autocomplete_client.php,
    j'ai même ajouté ceci à la première ligne
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header( 'content-type: text/html; charset=utf-8' );

    Pour info, mon fichier autocomplete_client.php est le suivant
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    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 - Mon Blog 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

    Venez sur le Chat de Développez !

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 166
    Par défaut
    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

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    header( 'content-type: text/html; charset=utf-8' );
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    print json_encode($matches);
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, 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
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FoxPro]Instruction pour enlever les accents ?
    Par Fab-FoxPro dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 02/01/2025, 15h09
  2. [String] Comment supprimer les accents
    Par iuz dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 08/03/2004, 02h58
  3. [JDBC] Problème avec les accents
    Par seawolfm dans le forum Administration
    Réponses: 2
    Dernier message: 29/01/2004, 14h56
  4. les accents et printf
    Par remi77 dans le forum C
    Réponses: 5
    Dernier message: 07/07/2003, 20h53
  5. Comment afficher les accent sous mysql v4.0.13
    Par buildozer dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/06/2003, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo