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 de données dans MySQL [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut Encodage lors d'une insertion de données dans MySQL
    Bonjour,

    J'ai un formulaire en HTML et j'envoie ces données avec la méthode POST.

    Ensuite, j'ai mon script PHP qui réalise une insertion dans ma base de données MySQL.

    Toutes mes page HTML sont encodé en ISO-8859-1.

    Lorsque je fais mon insertion MySQL, mes données qui ont des caractères accentués sont remplacé par d'autres caractères.

    Comment faire pour que lorsque j'enregistre dans ma base de données, enregistré mes données en ISO-8859-1 ?

    J'ai testé avec "mysql_query("SET NAMES 'ISO-8859-1'");" avant de realiser ma requête SQL, mais cela n'apporte rien.

    Merci d'avance de votre aide.

    Arnaud

  2. #2
    Membre actif Avatar de romain_ci
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 262
    Points : 287
    Points
    287
    Par défaut
    Essay d'encoder en UTF-8 !!

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 96
    Points : 72
    Points
    72
    Par défaut
    Au niveau de la structure de ta base est ce que l'encodage (interclassement) de tes champs correspond bien à du latin1?

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Interclassement : latin1_general_cs
    cela ne dois pas être ca...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 96
    Points : 72
    Points
    72
    Par défaut
    peut être que les données que tu envoies à ta base sont encodées en utf8?
    Est ce que dans ta base les accents sont remplacés par ce genre d'encodage:
    é ?
    Si c'est le cas essaies de les envoyer en faisant un utf8_decode.

  6. #6
    Membre régulier Avatar de loopback
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 170
    Points : 113
    Points
    113
    Par défaut
    essai avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql -u user -ppassword --defaults-character-set=latin1 ta_base < fichier.sql
    en adaptant la requête sql pour php

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par arnaudperfect Voir le message

    J'ai testé avec "mysql_query("SET NAMES 'ISO-8859-1'");" avant de realiser ma requête SQL, mais cela n'apporte rien.
    La bonne syntaxe est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("SET NAMES latin1") or die(mysql_error());
    Citation Envoyé par david42
    Au niveau de la structure de ta base est ce que l'encodage (interclassement) de tes champs correspond bien à du latin1?
    L'encodage c'est (en gros) le character set, donc latin1.
    L'interclassement c'est la collation, donc latin1_general_cs. Les problèmes de mauvaise interprétation des caractères ne sont jamais dus à la collation (qui ne fait que dire l'ordre de tri et les équivalences entre caractères), mais seulement au jeu de caractère. Si bcp de gens confondent les deux, c'est à cause de phpMyAdmin qui ne montre que l'interclassement.

    Envoyer des données latin1 (càd ISO-8859-1) dans une colonne utf8 n'est pas un problème. MySQL fera la conversion automatiquement. A l'inverse, ce n'est donc pas en changeant le jeu de caractère de la colonne qu'on résoudra le problème.

    Citation Envoyé par loopback
    essai avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql -u user -ppassword --defaults-character-set=latin1 ta_base < fichier.sql
    C'est la même chose que de faire un SET NAMES.

    La gestion des jeux de caractère est totalement contre-intuitive. On ne peut pas résoudre les problèmes au petit bonheur la chance, il faut connaître le système. Pour cela, je vous conseille à tous la lecture de mon article (lien en signature).

    La première étape du diagnostic, c'est de déterminer si tes données sont bonnes mais mal affichées, ou vraiment mauvaises. Pour la démarche, cf http://www.developpez.net/forums/sho...15&postcount=2.
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  8. #8
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    en faite, sur mon serveur de production, aucun problème. Sur mon serveur de dev, probleme...

  9. #9
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    c'est bon, mon problème est résolu. Je ne sais pas pourquoi ca marche bien sur les deux systèmes maintenant.

    Par contre, j'aimerai savoir comment protéger automatiquement les " entrée dans un champs de formulaire.

    Merci d'avance

  10. #10
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    trouvé : mysql_real_escape_string()

    merci a vous pour votre aide !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/03/2010, 13h31
  2. Insertion de donnée dans mysql : problème d'accent
    Par DonKnacki dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 20/06/2009, 18h44
  3. [MySQL] encodage lors d'une insertion dans une BDD Mysql
    Par Halex78 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/11/2008, 13h54
  4. [MySQL] Securité lors de l'insertion de données dans MySQL
    Par Little_flower dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/10/2007, 09h13
  5. [C#] problème avec l'insertion des données dans MySQL
    Par madica dans le forum Accès aux données
    Réponses: 7
    Dernier message: 08/11/2005, 13h27

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