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 du Club
    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 !
    Retrouvez-moi tous les dimanches à 22H pour une heure de mix en live tout au vinyle sur eurodance90.fr

  2. #2
    Membre émérite
    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 du Club
    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
    Retrouvez-moi tous les dimanches à 22H pour une heure de mix en live tout au vinyle sur eurodance90.fr

  4. #4
    Membre émérite
    C'est la galère des caractères spéciaux avec mysql et mysqli, il vaut mieux que tu passes à pdo.

  5. #5
    Membre du Club
    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
    Retrouvez-moi tous les dimanches à 22H pour une heure de mix en live tout au vinyle sur eurodance90.fr

  6. #6
    Membre émérite
    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 du Club
    Merci pour le lien, je vais bookmarker ça en attendant car j'ai pas mal de couin sur la planche lol

    Bon ouiK !
    Retrouvez-moi tous les dimanches à 22H pour une heure de mix en live tout au vinyle sur eurodance90.fr