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

SQL Procédural MySQL Discussion :

Formatage de chaine avant insertion dans BDD MySQL


Sujet :

SQL Procédural MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 20
    Points : 16
    Points
    16
    Par défaut Formatage de chaine avant insertion dans BDD MySQL
    Bonjour à tous !
    J'ai un problème de format de caratères d'une chaine insérées dans la BDD MySQL. EN effet si les catères de la chaines sont accentués, ils sont transformés en d'autres caratères bizarre.
    En effet dans le champ Collation de cette colonne, j'ai choisi utf8_general_ci.
    Quelqu'un pourrait il me dire ce qu'il est lieu de faire ?
    Merci d'avance

  2. #2
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    Je connais très mal les collations.

    ou bien dans ton extraction tu convertis dans la bonne collation, ce que je ne sais pas faire, ou bien tu lances sur ta table source la commande suivante et tu lances ensuite l'extraction comme tu avais fait:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER TABLE Ta_Table ALTER COLUMN Ta_Colonne
                varchar(50) COLLATE Latin1_General_CI_AS NOT NULL
    GO
    où varchar(50) sera le type déjà utilisé dans ton CREATE TABLE existant
    où NOT NULL (ou NULL) sera ta contrainte déjà utilisée dans ton CREATE TABLE existant
    où Latin1_General_CI_AS sera la collation correspond au jeu de caractère que tu as attends dans MySQL, à toi de voir laquelle il te faut
    msdn sql server: Selecting a SQL Collation

    Peut-être qu'à l'inverse tu peux aussi essayer de modifier le jeu de caractère dans MySQL

    Tout en ayant bien soin auparavant de sauvegarder la table SQL Server, ou de créer de nouveaux champs pour ne pas que ta base SQL Server impacte les applications existantes.

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par phili_b Voir le message
    Je connais très mal les collations.

    ou bien dans ton extraction tu convertis dans la bonne collation, ce que je ne sais pas faire, ou bien tu lances sur ta table source la commande suivante et tu lances ensuite l'extraction comme tu avais fait:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER TABLE Ta_Table ALTER COLUMN Ta_Colonne
                varchar(50) COLLATE Latin1_General_CI_AS NOT NULL
    GO
    où varchar(50) sera le type déjà utilisé dans ton CREATE TABLE existant
    où NOT NULL (ou NULL) sera ta contrainte déjà utilisée dans ton CREATE TABLE existant
    où Latin1_General_CI_AS sera la collation correspond au jeu de caractère que tu as attends dans MySQL, à toi de voir laquelle il te faut
    msdn sql server: Selecting a SQL Collation

    Peut-être qu'à l'inverse tu peux aussi essayer de modifier le jeu de caractère dans MySQL

    Tout en ayant bien soin auparavant de sauvegarder la table SQL Server, ou de créer de nouveaux champs pour ne pas que ta base SQL Server impacte les applications existantes.
    Merci Phili pour ta promtitude. J'ai modifié directement dans la table déjà crée mais malheureusement ça fait pareil

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    Bonjour,

    si je comprends bien, il s'agit de transférer des données mysql vers sql server ou l'inverse ? Par quel moyen le faites-vous ?

    Si vous pouviez-préciser un peu ...merci
    Emmanuel T.

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par kagemaru Voir le message
    Bonjour,

    si je comprends bien, il s'agit de transférer des données mysql vers sql server ou l'inverse ? Par quel moyen le faites-vous ?

    Si vous pouviez-préciser un peu ...merci
    Bonjour Kagemaru
    En effet il s'agit dans un permier temps de récupérer des valeurs à partir d'un formulaire, de les insérer temporairement dans une table sous MySQL, en attendant de les récupérer à nouveau de la base de données pour des traitements. Déjà le problème se pose à la première phase (Formulaire---->MySQL). Je travaille sous PHP. Lorsque l'utilisateur met des valeurs de champs avec des caractères accentués, dès leur insertion dans la base de données ces caratères deviennent "bizarres". Du coup je reste bloqué en ce sens que dans cet état, si je les récupère ils ne peuvent m'être utiles pour traitement. Je recherche alors à éviter les accents. Donc par exemple avant insertion dans la base de données je dois faire en sorte que les caratères accentées soient transformés dans leur équivalent non accentués. J'ai essayé des possibiltés qui pour lors sont pas concluantes.
    En tout merci d'avance de tout apport.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    En fait il faudrait tout d'abord s'adresser au forum MySQL pour votre premier problème ... je déplace le post.
    Emmanuel T.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 36
    Points
    36
    Par défaut
    Verifie que l'encodage de ta page html sur laquelle se trouve ton formulaire est bien en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    autre hypothese si tu formates tes donnees avec php avec htmlentities() ou htmlspecialchars() par exemple, par defaut c'est de l'iso 8859-1, il faut specifier style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    htmlentities($str, ENT_QUOTES,"utf-8");
    En gros si tu inseres des caracteres au format iso 8859-x ou cp ou autres dans des champs de table MySQL en UTF8 , c'est normal

    ++

  8. #8
    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
    Pour comprendre de quoi il s'agit exactement, je vous conseille la lecture de mon article sur le sujet (lien en signature).

    Plus généralement, il n'est PAS nécessaire que la page PHP et la base MySQL aient le même jeu de caractères. S'ils sont différents, MySQL fera automatiquement les conversions. La seule chose importante est que le jeu de caractère déclaré à chaque niveau corresponde bien au jeu réel des données.

    Enfin, les problèmes d'affichages peuvent être de simples problèmes d'affichage ou bien dus à des erreurs de données. Pour faire la différence, il faut utiliser les fonctions ord() de MySQL et PHP pour connaître le code des caractères. Avec de l'Unicode (utf8 par exemple), il est souvent utile de comparer le nombre de caractères (CHAR_LENGTH dans MySQL) avec le nombre d'octets (OCTET_LENGTH). Par exemple, le 'é' en utf8 est codé sur deux octets, il doit donc y avoir un caractère et deux octets. S'il y a deux et deux, c'est que le 'é' a été mal interprété et transformé en é.
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

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

Discussions similaires

  1. [MySQL] Insertion checkbox dans bdd mysql
    Par abdias1976 dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 19/04/2010, 16h48
  2. [MySQL] Insertion de données xml dans bdd mysql
    Par mathcanto dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/01/2010, 10h56
  3. [MySQL] Insertion multiple dans BDD MySQL
    Par popovitch130 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 10/08/2008, 13h38
  4. Formater texte avant insertion dans une BDD
    Par cflo91 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 05/04/2008, 09h12
  5. Réponses: 12
    Dernier message: 16/08/2006, 22h28

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