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 :

JQuery Autocomplete et caractères spéciaux


Sujet :

jQuery

  1. #1
    Membre très actif Avatar de Couin
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2014
    Messages : 146
    Par défaut JQuery Autocomplete et caractères spéciaux
    Yop !

    C'est encore moi

    Voilà, j'utilise une fonction "autocomplete" de JQuery afin de faire une liste déroulante dont les choix proposés contiennent ce que je saisis dans le champs input. Les choix sont actualisés en temps réel , au fur et à mesure de la saisie.

    Le souci c'est que certains choix contiennent des " , et/ou caractères spéciaux ( genre accentués, ou bien encore des & ).

    Voici le code (simplifié pour plus de clarté) utilisé sur la page qui a l'input :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <input type="text" class='autotheme '>
    <script type="text/javascript">
    $(function() {
            $(".autotheme ").autocomplete({
                    source: "suggtheme .php",
                    minLength: 1
            });             
    });
    </script>

    Et la page suggtheme .php :
    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
    header('Content-Type: text/json');
    $get_term = $_GET['term'];
    	$wideterm = '%'.htmlspecialchars($get_term).'%'; // permet de chercher des caractères accentués
    	$return_arr = array();
     
    		require 'data_connect.php'; 
     
    		$sql = 'SELECT theme FROM playlist WHERE UPPER(theme) LIKE UPPER("'.$wideterm.'") GROUP BY theme ORDER BY UPPER(theme) ASC, datepl DESC';
     
    		$requete = mysql_query( $sql ) ;
    		while( $result = mysql_fetch_object( $requete ) )
    		{
    			$return_arr[] = utf8_encode($result->theme);
    		}
     
    	    echo json_encode($return_arr);

    Si je cherche spé par exemple, j'ai comme résultat Spéciale "remixes" au lieu de Spéciale "remixes"

    J'ai essayé avec htmlspecialchars à la place de utf_encode, j'obtiens Spéciale &quot;remixes&quot; , j'ai essayé avec des utf8_decode, des combinaisons etc etc mais les résultat sont tous plus pourris les uns que les autres lol

    Si quelqu'un a une idée à explorer, à vot' bon coeur m'ssieurs dames

    Merkouin !

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 506
    Par défaut
    Salut,

    Essaie de mettre un mysql_set_charset('latin1',$link); avant d’exécuter la requête.

    Mais il faut que tu saches deux choses :

    1-L'api mysql est obsolète et ne devrait plus être utilisée, donc il faut d'abord que tu la remplace par mysqli ou pdo.

    2- Ta requête n'est pas protégée contre les injections Sql.

  3. #3
    Membre très actif Avatar de Couin
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2014
    Messages : 146
    Par défaut
    Hello,

    Merci pour ta réponse

    J’avais oublié de précisé que dans le fichier data_connect.php j'avais ceci
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        //connection au serveur:
        $db=mysql_connect( "localhost", "playlist", "playlist" ) ;
        //sélection de la base de données:
        $db_base=mysql_select_db( "playlist" ) ;
    	mysql_query("SET NAMES 'utf8'");
    J'ai ajouté (et essayé aussi en remplaçant) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	// mysql_query("SET NAMES 'utf8'");
    	mysql_set_charset('utf8',$db);
    Mais rien de mieux

    Concernant les 2 points, oui, je prévois de passer en mysqli à terme, mais le serveur sur lequel est le script n'est pas accessible depuis l’extérieur, il ne me sert qu'en local, donc c'est un moindre mal

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 506
    Par défaut
    C'est la galère des caractères spéciaux avec mysql et mysqli, il vaut mieux que tu passes à pdo.

  5. #5
    Membre très actif Avatar de Couin
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2014
    Messages : 146
    Par défaut
    Les messages disparaissent ou bien ? Heureusement que je l'avais vu avant lol mais le temps de tester et de faire le retour, a pu

    Car :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_set_charset('latin1',$db);
    a résolu le souci, bien que pourtant ma DB et mes pages soient en UTF8-Bin.

    Pour ce qui est des caractères spéciaux j'ai plus l'impression que le souci est surtout avec json/jquery, car en temps normal pour genre afficher une page avec des données contenant des caractères spéciaux je ne galère pas comme ça.

    Pour ce qui est de PDO, pour être franc, je n'ai jamais compris le concept "orienté objet" , objet de quoi ? fourchette ? pneu d'voiture ? jamais compris. Et encore moins la syntaxe C'est pour moi un nouveau langage (déjà que j'ai quand même assez galérer avec mysql/mysqli lol)... Faut pas oublier qu'un canard c'est assez limité lol

    En tout cas, merci pour le coup de palme

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 506
    Par défaut
    Concernant le PDO voilà un article PDO une soupe et au lit du forum à consulter.

    Et c'est vrai qu'au début je t'ai suggéré d'utiliser "latin1" puis après je l'ai modifié

  7. #7
    Membre très actif Avatar de Couin
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2014
    Messages : 146
    Par défaut
    Merci pour le lien, je vais bookmarker ça en attendant car j'ai pas mal de couin sur la planche lol

    Bon ouiK !

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

Discussions similaires

  1. jQuery & caractères spéciaux sur Internet Explorer
    Par manudwarf dans le forum jQuery
    Réponses: 10
    Dernier message: 12/01/2012, 10h18
  2. Où trouver la liste des caractères spéciaux?
    Par gamez dans le forum Langage
    Réponses: 3
    Dernier message: 19/08/2003, 17h54
  3. Transformation XSL et caractères spéciaux
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 4
    Dernier message: 28/04/2003, 10h38
  4. [Sybase] filtre sur caractères spéciaux
    Par montelieri dans le forum Sybase
    Réponses: 4
    Dernier message: 07/04/2003, 16h49
  5. Traiter les caractères spéciaux
    Par ricola dans le forum Langage
    Réponses: 2
    Dernier message: 20/02/2003, 09h23

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