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 :

codage caractères formulaire=>Bd ? [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 10
    Points : 7
    Points
    7
    Par défaut codage caractères formulaire=>Bd ?
    Bonjour,
    J'ai un formulaire de saisie en method="post" qui :
    - écrit dans une table de ma base de données via une requête SQL
    - envoi un mel de validation de saisie à l'utilisateur.
    Les valeurs des champs sont :
    - récupérées sous la forme $champs = utf8_decode($_POST['champs']);
    La base de données a un codage interclassement utf8_general_ci et la table concernée interclassement latin1_swedish_ci.

    En résultat, j'ai :
    - dans la table des valeurs de champs enregistrées avec des "?" à la place des caractères accentués
    - dans le mel, les caractères accentués sont affichés normalement.

    J'ai essayé divers mode d'interclassement pour la table, sans obtenir l'affichage des accents.

    Merci d'une proposition ?

  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
    L'interclassement n'intervient pas dans la facon dont sont enregistrés et lus les données : il ne sert qu'a trier et comparer.

    Par contre :
    http://php.developpez.com/faq/?page=mysql#mysql-utf-8
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci de ta réponse, éclairante quant à l'usage de linterclassement.

    Citation Envoyé par sabotage Voir le message
    L'interclassement n'intervient pas dans la facon dont sont enregistrés et lus les données : il ne sert qu'a trier et comparer.

    Par contre :
    http://php.developpez.com/faq/?page=mysql#mysql-utf-8
    Par contre, j'ai bien les bonnes références au utf-8 dans le header de ma page ... et j'ai beau ajouter " $sql="SET NAMES 'utf8'"; (codaprès l'ouverture de la base comme proposé dans la FAQ, le résultat est le même.

  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
    et j'ai beau ajouter " $sql="SET NAMES 'utf8'";
    Il faut executer la requête hein ...pas juste l'écrire.

    Les valeurs des champs sont récupérées sous la forme $champs = utf8_decode($_POST['champs']);
    Pourquoi faire un decode si tu es tout en UTF8 ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Ouiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii !
    J'avais bien exécuté la requête voui .... : j'ai quand même passé ce stade là rires.
    Citation Envoyé par sabotage Voir le message
    Pourquoi faire un decode si tu es tout en UTF8 ?
    Et oui : j'avais aussi fait un essai en supprimant de utf8_decode(), mais c'était sans ta proposition magique !

    Donc, avec :
    - $sql="SET NAMES 'utf8'"; tout de suite après la connection à la base
    ET sans utf8_decode()

    Bonne soirée ...
    Merci ... !

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Je reviens ... :
    - la difficulté a été solutionnée pour l'enregistrement dans la base de données,
    - mais le codage est maintenant erroné dans le mel de validation envoyé à l'utilisateur ; les "e" sont codés "é" ...

    Une idée pour ne pas détruire d'un côté ce que j'arrange de l'autre ?
    Merci.

  7. #7
    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
    Il faut egalement mettre le SET NAMES pour la lecture.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Il faut egalement mettre le SET NAMES pour la lecture.
    Je veux bien, mais ... je ne vois pas à quel endroit le mettre :
    - le texte du mel est constitué dans le corps de la même requête
    ...!?

  9. #9
    Membre habitué Avatar de greg13
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 144
    Points : 156
    Points
    156
    Par défaut
    Il faut spécifier l'encodage du mail dans l'entete, ou bien alors tu n'envois pas ton email en utf8.
    Greg
    Parempi karvas totuus kuin makea valhe.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Bonjour,
    Citation Envoyé par greg13 Voir le message
    Il faut spécifier l'encodage du mail dans l'entete, ou bien alors tu n'envois pas ton email en utf8.
    Merci de cette proposition.
    En fait, j'ai provisoirement contourné la difficulté et codé pour chaque champ concerné :
    une action vers la base de données sans utf8_decode()
    une action vers le mel avec utf8_decode().
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (!empty($_POST['prenom'])){
      $prenom = ($_POST['prenom']);// vers SGBD
      $prenommel = utf8_decode(($_POST['prenom']));// vers mel
    }
    Pas propre, mais fonctionnel !
    Merci.

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

Discussions similaires

  1. Affichage et Codage dans formulaires
    Par krefkref dans le forum Access
    Réponses: 3
    Dernier message: 28/10/2014, 13h15
  2. Recherche tutoriel codage caractères
    Par Papy214 dans le forum C#
    Réponses: 2
    Dernier message: 05/03/2009, 14h45
  3. Problème de caractères non latin dans un formulaire
    Par Huntress dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2006, 13h34
  4. [W3C] Nombre de caractère dans les formulaires
    Par oranoutan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 12/12/2005, 01h37
  5. Réponses: 3
    Dernier message: 27/11/2004, 16h23

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