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'un INSERT d'un formulaire


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Par défaut Encodage lors d'un INSERT d'un formulaire
    Bonjour,

    J'ai créé un formulaire HTML que j'envoie aux abonnés de ma lettre.

    Lors de la validation du formulaire, les accents des données insérées ne correspondent pas au format initial.

    Voici quelques infos :

    SHOW VARIABLES

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     SHOW VARIABLES LIKE '%char%'
    Variable_name 	Value
    character_set_client 	utf8
    character_set_connection 	utf8
    character_set_database 	latin1
    character_set_filesystem 	binary
    character_set_results 	utf8
    character_set_server 	latin1
    character_set_system 	utf8
    character_sets_dir 	/usr/share/mysql/charsets/
    CREATION DE LA TABLE MISE A JOUR
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    -- 
    -- Structure de la table `una_dons`
    -- 
     
    CREATE TABLE `una_dons` (
      `don_id` bigint(21) NOT NULL auto_increment,
      `don_civilite` varchar(10) NOT NULL,
      `don_nom` varchar(50) NOT NULL,
      `don_prenom` varchar(50) NOT NULL,
      `don_adresse` text NOT NULL,
      `don_codepostal` varchar(10) NOT NULL,
      `don_ville` varchar(50) NOT NULL,
      `don_mail` varchar(100) NOT NULL,
      `don_tel` varchar(20) NOT NULL,
      `don_portable` varchar(20) NOT NULL,
      `don_fax` varchar(20) NOT NULL,
      `don_date_promesse` datetime NOT NULL default '0000-00-00 00:00:00',
      `don_date_enregistre` datetime NOT NULL default '0000-00-00 00:00:00',
      `don_statut` tinyint(1) NOT NULL default '0',
      PRIMARY KEY  (`don_id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
    SCRIPT DE MISE A JOUR DE LA TABLE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    <?php
     
    // Parametres mysql à remplacer par les vôtres
    define('DB_SERVER', 'mabase'); // serveur mysql
    define('DB_SERVER_USERNAME', 'utilisateur'); // nom d'utilisateur
    define('DB_SERVER_PASSWORD', 'monmotedepasse'); // mot de passe
    define('DB_DATABASE', 'mabase'); // nom de la base
     
    // Connexion au serveur mysql
    $connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME,DB_SERVER_PASSWORD)
    or die('Impossible de se connecter : ' . mysql_error());
    // sélection de la base de données
    mysql_select_db(DB_DATABASE, $connect);
     
    $msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>";
    $msg_ok = "Merci pour votre aide";
    $message = $msg_erreur;
     
    // vérification des champs
    if (empty($_POST['civilite']))
      $message .= "Votre civilité<br/>";
    if (empty($_POST['nom']))
      $message .= "Votre nom<br/>";
    if (empty($_POST['prenom']))
      $message .= "Votre prénom<br/>";
    if (empty($_POST['adresse']))
      $message .= "Votre adresse<br/>";
    if (empty($_POST['codepostal']))
      $message .= "Votre code postal<br/>";
    if (empty($_POST['ville']))
      $message .= "Votre ville<br/>";
    if (empty($_POST['mail']))
      $message .= "Votre courriel<br/>";
     
     
    // si un champ est vide, on affiche le message d'erreur
    if (strlen($message) > strlen($msg_erreur)) {
     
      echo $message;
     
    // sinon c'est ok
    } else {
     
      foreach($_POST as $index => $valeur) {
        $$index = mysql_real_escape_string(trim($valeur));
      }
     
      $sql = "INSERT INTO una_dons(
      	`don_civilite`,
      	`don_nom`,
      	`don_prenom`,
      	`don_adresse`,
      	`don_codepostal`,
      	`don_ville`,
      	`don_mail`,
      	`don_tel`,
      	`don_portable`,
      	`don_fax`,
      	`don_date_promesse`)
     VALUES (
    	'".$civilite."', 
    	'".$nom."', 
    	'".$prenom."', 
    	'".$adresse."', 
    	'".$codepostal."', 
    	'".$ville."', 
    	'".$mail."',
    	'".$telephone."', 
    	'".$portable."', 
    	'".$fax."',
    	   now())";
     
    $res = mysql_query($sql);
     
      if ($res) {
        echo $msg_ok;
      } else {
        echo mysql_error();
      }
     
    }
    ?>
    Merci de votre aide

  2. #2
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    Problème de charset.
    Regarde du coté de utf8_encode().

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Par défaut
    Citation Envoyé par |PaRa-BoL Voir le message
    Problème de charset.
    Regarde du coté de utf8_encode().
    Je ne suis pas sur de comprendre ce qu'il faut faire :

    Lors de la création de la table; faut-il remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1 AUTO_INCREMENT=
    9

    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 AUTO_INCREMENT=9
    ou s'agit-il d'une fonction appeler lors de l'INSERT ?

    Merci de ton aide

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/07/2015, 09h38
  2. Réponses: 6
    Dernier message: 07/10/2009, 15h05
  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] Encodage lors d'une insertion de données dans MySQL
    Par arnaudperfect dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 08/02/2008, 14h24
  5. Réponses: 3
    Dernier message: 26/04/2006, 08h16

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