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 :

mysql_query et caractères accentués


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 37
    Par défaut mysql_query et caractères accentués
    Bonjour,
    J'ai une petite question à propos de mysql_query :
    Dans une table, j'ai des noms stockés, qui peuvent avoir des caractères accentués.
    Si j'effectue une requête Select directement avec la commande mysql ça ne pose pas de problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from ma_table where nom = 'André'
    me trouve bien la ligne où le nom est André et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from ma_table where nom = 'Andre'
    ne me renvoie rien car André != Andre

    Par contre, on dirait que la fonction mysql_query supprime les accents. Avec mysql_query les 2 requêtes ci-dessus me renvoient le même résultat.

    Est-ce qu'il y a quelque chose à configurer pour que mysql_query fonctionne correctement ?
    Merci

  2. #2
    Membre éclairé Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Par défaut
    Bonsoir

    Normalement si vous utilisez le même jeu d'encodage de caractère (UTF-8 ou autre) sur le serveur PHP, sur la base SQL ET dans vos fichiers de script, vous ne devriez pas avoir de problème avec les caractères accentués.

    Dernière chose, mysql_query est obsolète. Vous ne pourrez plus l'utiliser avec PHP6. Alors autant mettre les scripts à jour dès maintenant. Regardez la doc relative à PDO. Ça pourrait également résoudre votre problème si la première condition est remplie.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 37
    Par défaut
    Merci pour ta réponse.
    Dernière chose, mysql_query est obsolète.
    Tu es sûr que tu ne confonds pas avec une autre fonction ? Je n'ai vu nulle part que mysql_query est obsolète, contrairement à d'autres.

    Et ça me semble bizarre que ce soit juste un problème d'encodage. En général quand il y a un problème d'encodage c'est le contraire qui se passe (é par reconnu comme é mais comme un caractère exotique). Enfin je vais quand même vérifier.

    Voici l'encodage de la base mysql :
    +--------------------------+----------------------------+
    | Variable_name | Value |
    +--------------------------+----------------------------+
    | character_set_client | latin1 |
    | character_set_connection | latin1 |
    | character_set_database | latin1 |
    | character_set_filesystem | binary |
    | character_set_results | latin1 |
    | character_set_server | latin1 |
    | character_set_system | utf8 |
    | character_sets_dir | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+
    Mon script PHP est en ANSI, mais je ne sais pas comment vérifier l'encodage du serveur PHP. Sous firefox l'encodage est en UTF-8.

    Au fait ce problème survient sous Mantis. Je ne vais donc pas refaire entièrement le système, je veux juste corriger un problème qui vient du fait qu'une requête mysql sur "Andre" renvoie aussi "André".

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Dernière chose, mysql_query est obsolète. Vous ne pourrez plus l'utiliser avec PHP6.
    mysql_* n'est pas obsolète et sera toujours utilisable en PHP6 ; il est juste prévu que ces extensions soient déplacés dans PECL.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Par défaut
    Citation Envoyé par sabotage Voir le message
    mysql_* n'est pas obsolète et sera toujours utilisable en PHP6 ; il est juste prévu que ces extensions soient déplacés dans PECL.
    En effet mes infos étaient un peu datées. Quoi qu'il en soit, pour une question de portabilité de code à d'autre SGBD, et d'évolutivité, je conseille toujours de passer à PDO. De plus les avantages apportés sont significatifs par rapport aux fonctions mysql_* qui commencent à dater. Enfin c'est mon avis.

    Concernant les accents, si codé en dur le problème apparait aussi, alors je pencherais plutôt sur un problème de configuration de MySQL et pas de PHP.

    Bon courage.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 37
    Par défaut
    Sinon j'ai mis la requête en dur dans le code (donc en latin1 comme la base) et pareil,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from ma_table where nom='André'
    me renvoie la ligne dont le nom est "Andre" avec accent.
    Il y a sûrement une option quelque part qui sert à ignorer les accents, non ?

Discussions similaires

  1. Caractères accentués avec <html:link>
    Par papysam dans le forum Struts 1
    Réponses: 5
    Dernier message: 25/05/2007, 15h18
  2. Chaines avec caractères accentués dans interbase
    Par Tsimplice dans le forum Bases de données
    Réponses: 4
    Dernier message: 08/03/2004, 17h12
  3. Chaînes avec des caractères accentués dans Interbase
    Par Invité dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/03/2004, 22h39
  4. [PostgreSQL] Les caractères accentués ?
    Par yacomor dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/02/2003, 16h30
  5. insérer des caractères accentués INFORMIX/JDBC
    Par donde dans le forum Informix
    Réponses: 2
    Dernier message: 19/11/2002, 20h02

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