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 :

encodage lors d'une insertion dans une BDD Mysql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club Avatar de Halex78
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 75
    Points : 68
    Points
    68
    Par défaut encodage lors d'une insertion dans une BDD Mysql
    Bonsoir,

    j'ai un problème d'encodage lorsque je fais une requete sql.
    J'ai un formulaire dans lequel j'insère du code html : ca sert à afficher des pages mises en page pour mon site, lorsque je valide ce formulaire, le contenu est passé avec mysql_real_escape_string et est stocké dans la base de données Mysql, qui est en UTF8_general_ci (tout est en utf8 y compris le charset du formulaire ainsi que celui de la page qui affiche ces données)
    Donc une fois le formulaire validé, je vais sur ma page et m'apercois que les accents sont remplacés par des trucs comme éé.
    En faisant un utf8_decode ca fonctionne, mais ce qui m'embete c'est que ca ne fait ce problème que pour ce champs, et les problèmes d'accents sont déjà présents dans la base de données. Le problème vient donc de l'enregistrement... Que faut - il faire pour obtenir un texte normal dans la base de données ? à part faire un utf8_decode, car je ne trouve pas ca très logique car je n'ai fait nulle part de utf8_encode

  2. #2
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Lance la requete SET NAMES 'UTF8' apres ta connexion a la base.
    Cela indique à mysql qu'il va recevoir et devra fournir les données en UTF8.

    UTF8_general_ci est un interclassement, il sert uniquement dans les comparaisons et classement de données.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club Avatar de Halex78
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 75
    Points : 68
    Points
    68
    Par défaut
    Ok merci, comment est ce que je fais pour lancer cette requ^^ete ? C'est quand je fais une requete insert ? Pour spécifier le type de données ?

    Pour utf8 general, je me suis renseigné pas mal là dessus, lequel dze utf8 bin et celui ci fallait prendre, et j'ai choisi cet interclassement qui semblait le mieux convenir(insensible à la casse).

    Merci,

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu la lances comme n'importe quelle requete.
    ie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("SET NAMES 'UTF8'");
    pour l'interclassement, je me repête, il ne sert que lors des classements et des comparaisons.
    par exemple : si utilises utf8_ci (insensible a la casse), une requête WHERE champ1 = "abricot" retournera les enregistrements "AbriCot" et "ABRICOT"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club Avatar de Halex78
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 75
    Points : 68
    Points
    68
    Par défaut
    Merci beaucoup de ta réponse, je teste, et si ca marche je mets en résolu...

    Pour l'interclassement, je voulais juste dire que je ne l'avais pas choisi par hasard, que justement lors des classements "order by" et compagnie, la casse ne m'intéresse pas... Merci des précisions cependant !

    EDIT : Génial ca marche du tonnerre ! J'ai ajouté la requ^^ete à mon script de connexion, auquel faisaient appel toutes mes pages, du coup, le changement a été rapide ! Merci encore

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/06/2010, 16h50
  2. Réponses: 2
    Dernier message: 15/11/2007, 17h43
  3. Réponses: 5
    Dernier message: 27/07/2007, 16h21
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. [MySQL] Insertion d'une image dans une div d'une news
    Par godsilken50 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/05/2007, 16h58

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