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

Langage PHP Discussion :

[PHP-JS] escape() unescape() urlencode() Que Choisir?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 49
    Par défaut [PHP-JS] escape() unescape() urlencode() Que Choisir?
    Bonjour,

    dans le cadre d'une autocompletion , j interroge une table mysql, et parfois les données retournées contiennent des caractères spéciaux (apostrophes notamment).

    vous aurez compris qu il s'agit donc de combiner javascript et php,

    je prepare la reponse dans le code PHP en construisant une liste qui contient un fonction onclick="remplir()".
    Et c'est là que rien ne vas plus, si le parametre de la fonction contient un mot avec apostrophes (levi's par exemple) , je ne sais pas comment echapper ce caracère.
    En fait je ne sais pas à quel moment il faut traiter cela. (sur l'envoi ajax, la fonction javscript, ou dans le code php)

    J'ai cru comprendre que escape et unescape le permettent, mais il faut deja savoir où agir.... arghhhh!

    bon et bien place au code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    function autosuggest() {
    getXhr()
    q = document.getElementById('search-q').value;
    // Set te random number to add to URL request
    nocache = Math.random();
    xhr.open('get','search.php?q='+q+'&nocache = '+nocache);
    xhr.onreadystatechange = autosuggestReply;
    xhr.send(null);
    }
     
    function remplir(a) 
    { 
    document.getElementById('search-q').value =  a; 
    }
    et le traitement PHP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    	$searchq		=	strip_tags($_GET['q']);
    	$getRecord_sql	=	'SELECT * FROM '.$SQL_FROM.' WHERE '.$SQL_WHERE.' LIKE "'.$searchq.'%"';
    	$getRecord		=	mysql_query($getRecord_sql);
    	if(strlen($searchq)>0){
     
    while ($row = mysql_fetch_array($getRecord)) {		
     
     echo ' 
    <li class="contact"><div class="nom" onclick="remplir(\''.$row['marque'].'\');">'.$row['marque'].'</div>
    Donc pour linstant cela fonctionne dans le sens ou la liste construit e contient bien les données avec apostrophes, c'est juste la fonction onclick="remplir()" qui n'en veut pas!
    erreur Firedebug :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Erreur*: missing ) after argument list
    Ligne*: 1, Colonne*: 14
    Code Source*: remplir('levi's');
    @++, si vous connaissez la parade...

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 672
    Par défaut
    déjà coté JavaScript tu dois échapper les données que tu envoies avec la fonction "encodeURIComponent"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open('get', 'search.php?q=' + encodeURIComponent(q) + '&nocache = ' + nocache);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 49
    Par défaut
    merci pour ta suggestion, je connaissais pas!
    mais bon ça ne convient pas. En fait dans l'url envoyée, en paramètre il n'y a que quelques lettre d'envoyées(sans aller jusqu'au caractère gênant).

    c'est vraiment au moment du déclenchement de la fonction suivante que ça plante!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo ' 
    <li class="contact"><div class="nom" onclick="remplir(escape(\''.$row['marque'].'\'));">'.$row['marque'].'</div>
    par le message suivant: missing ) after argument list

    Code Source*: remplir(escape('levi's'));

    ps: j ai essayé escape() dans cet exemple

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

Discussions similaires

  1. Que choisir : PHP ou Java ?
    Par Community Management dans le forum Général Conception Web
    Réponses: 200
    Dernier message: 13/06/2014, 17h00
  2. Que choisir en 2009 : PHP ou ASP(.NET) ?
    Par Bovino dans le forum Général Conception Web
    Réponses: 40
    Dernier message: 01/09/2009, 22h16
  3. Que choisir : PHP versus Java ?
    Par Sniper37 dans le forum Général Conception Web
    Réponses: 164
    Dernier message: 28/04/2009, 16h50
  4. [XSLT][Templates][PHP] Que choisir pour gérer ses templates
    Par ChriGoLioNaDor dans le forum Langage
    Réponses: 8
    Dernier message: 03/09/2008, 20h49
  5. [PHP-JS] que choisir ?
    Par teen6517 dans le forum Langage
    Réponses: 4
    Dernier message: 02/03/2007, 14h10

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