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

PHP & Base de données Discussion :

Get caractère accentué et requête MySQL [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 19
    Points : 13
    Points
    13
    Par défaut Get caractère accentué et requête MySQL
    Bonjour,

    VOici mon problème. J'ai des articles auxquels sont associés des "tags". Ces tags sont de type VARCHAR et peuvent contenir des caractères accentués.

    En cliquant sur un tag, j'appelle une page PHP qui me liste l'ensemble des articles associés au tag. La page devant lister les articles est appelée avec la méthode GET
    mapage.php?tag=accentué

    Dans ma page je récupère le tag $_GET(['tag']) puis construit ma requête SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "SELECT * FROM article WHERE label='".$_GET(['tag'])."'"
    Or quand mon tag à rechercher est accentué, il ne me ramène aucune ligne, le caractère accentué ayant été remplacé dans mon URL.

    Avez vous une solution .

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par babali33 Voir le message
    Or quand mon tag à rechercher est accentué, il ne me ramène aucune ligne, le caractère accentué ayant été remplacé dans mon URL.
    C'est normal, par contre il devrait reprendre sa valeur normale dans $_GET.

    Ici tu as une erreur de syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM article WHERE label='".$_GET(['tag'])."'"
    Il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM article WHERE label='{$_GET['tag']}'"
    Ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM article WHERE label='$_GET[tag]'"
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    Ton "é" est remplacé par quoi ? Si du type "%xyz", applique la fonction urldecode pour chaque variable GET récupérée.

  4. #4
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Ton "é" est remplacé par quoi ? Si du type "%xyz"
    mon "é" est remplacé par Ä avec le "c" de copyright.

    J'ai testé URLDECODE, il n'y a pas de changement.

  5. #5
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    C'est de l'UTF-8.
    Pb de charset.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Je viens d'effectuer quelques test :
    - Si j'encode mes url avec
    Cela fonctionne.

    Cependant je viens de m'apercevoir que le problème se pose lorsque j'active l'url rewriting

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^article-tag-(.*)$ article.php?tag=$1
    La il me transcode le %xx avec le Äc ..

    C'est de l'UTF-8.Pb de charset.
    Dois indiquer quelques choses de sépecial dans mon .htaccess ?

  7. #7
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par babali33 Voir le message
    Je viens d'effectuer quelques test :
    - Si j'encode mes url avec
    Cela fonctionne.
    Parceque tu transformes le é en é qui ne contient plus de caractères "spéciaux".
    Utilise plutôt rawurlencode( ), en espérant que le décodage se fasse après le traitement de mod_rewrite.

    Cependant je viens de m'apercevoir que le problème se pose lorsque j'active l'url rewriting

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^article-tag-(.*)$ article.php?tag=$1
    La il me transcode le %xx avec le Äc ..
    Es-tu sur Apache 2 ?

    Dois indiquer quelques choses de sépecial dans mon .htaccess ?
    Rien trouvé dans la doc sur mod_rewrite, ça doit se passer à un autre niveau.
    Essaie de voir sur le forum Apache
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  8. #8
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Es-tu sur Apache 2 ?
    Oui en apache 2.2.11

    Utilise plutôt rawurlencode( )
    Là j'ai une erreur 403 avec l'utilisation de l'url rewriting

  9. #9
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par babali33 Voir le message
    Oui en apache 2.2.11
    Apache 2 et supérieur travaillent en UTF-8 en interne. C'est peut-être Apache et pas seulement le mod_rewrite qui met le foutoire.

    Là j'ai une erreur 403 avec l'utilisation de l'url rewriting
    Peut-être à cause d'autres directives du .htacces ou httpd.conf.

    Désolé de ne pas pouvoir t'aider davantage, je ne connaîs pas suffisamment Apache et ses directives.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  10. #10
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    J'ai résolu le problème en travaillant avec le id et non plus avec les libellé. Moins problèmatique.

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

Discussions similaires

  1. [WD17] [Accès natif Mysql]Unicode: plantage requête avec caractère accentué..
    Par Christophe Charron dans le forum WinDev
    Réponses: 4
    Dernier message: 03/03/2013, 16h59
  2. Problème caractères accentué [Delphi XE, MySQL 5.1.56]
    Par jnguetsop dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/04/2011, 14h15
  3. [Oracle] Requête avec une variable contenant une chaine de caractères accentué non trouvé
    Par chris0938 dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 07/01/2011, 21h23
  4. Filtrer paramètre GET avant requête MySQL
    Par max-mag dans le forum SGBD
    Réponses: 1
    Dernier message: 21/08/2009, 22h55
  5. Réponses: 1
    Dernier message: 07/08/2006, 10h22

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