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 :

Problème de gestion des accents [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut Problème de gestion des accents
    Bonjour,

    J'apporte une dernier petite retouche a mes codes concernant les carractères avec accent

    J'ai mes tables qui sont en utf8 et inteclassement en utf8_general_ci

    J'utilise un formulaire afin de mettre un champs à jour dans ma tables échange voir ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE TABLE IF NOT EXISTS `echange` (
      `echang_id` varchar(6) NOT NULL,
      `echang_observation` longtext NOT NULL,
      `date_jour` varchar(10) NOT NULL,
      `echang_interlocuteur` text NOT NULL,
      PRIMARY KEY (`echang_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    Dans le formulaire (un textarea), j'utilise une fonction pour géré les BBcode

    Ma fonction de codage
    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
     
    <?php
    function code($document)
    {
    $document = htmlentities($document, ENT_QUOTES,UTF-8);
    //Mise en forme du texte
    //gras
    $document = preg_replace('`\[g\](.+)\[/g\]`isU', '<strong>$1</strong>', $document); 
    //italique
    $document = preg_replace('`\[i\](.+)\[/i\]`isU', '<em>$1</em>', $document);
    //souligné
    $document = preg_replace('`\[s\](.+)\[/s\]`isU', '<u>$1</u>', $document);
    //lien
    $document = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $document);
    //quote
    $document = preg_replace('`\[quote\](.+)\[/quote\]`isU', '<div id="quote">$1</div>', $document);
     
    //taille
    $document = preg_replace('`\[taille=(.+)\](.+)\[/taille\]`isU', '<span style="font-size:$1px">$2</span>', $document);
     
    // Remplacement des sauts de ligne par des <br />
    $document = nl2br($document);
     
    //On retourne la variable texte
    return ($document);
    }
    ?>
    fichier de traitement des données pour l'insertion


    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    <?php
    session_start ();
    ini_set ("error_reporting", "E_ALL & ~E_NOTICE");
    echo "<a href='../index.php'>Retour index</a>";
    include('../inc/inc_connexion.php'); 
    include ('../inc/fonction.php');
    //***********************************************************************
     
    if(isset($_POST['numero']) AND $_POST['numero']!= NULL
    	AND isset($_POST['observation']) AND $_POST['observation']!= NULL)
    	{ 
    $numero= $_POST['numero']; 
    $observation= code(htmlentities($_POST['observation'])); 
    $utilisateur=$_SESSION['pseudo'];
    
    
    $requete ="INSERT INTO echange values('".$numero."','".$observation."','".date("Y-m-d")."','".$utilisateur."')"; 
     
    $req = mysql_query( $requete ) or die(mysql_error());   
      
    header('location:../vues/fiche_pdv_complet.php?numero='.$numero.'');
    	}
    ?>
    <script>
    function bbcode(bbdebut, bbfin)
    {
    var input = window.document.formulaire.observation;
    input.focus();
    if(typeof document.selection != 'undefined')
    {
    var range = document.selection.createRange();
    var insText = range.text;
    range.text = bbdebut + insText + bbfin;
    range = document.selection.createRange();
    if (insText.length == 0)
    {
    range.move('character', -bbfin.length);
    }
    else
    {
    range.moveStart('character', bbdebut.length + insText.length + bbfin.length);
    }
    range.select();
    }
    else if(typeof input.selectionStart != 'undefined')
    {
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    input.value = input.value.substr(0, start) + bbdebut + insText + bbfin + input.value.substr(end);
    var pos;
    if (insText.length == 0)
    {
    pos = start + bbdebut.length;
    }
    else
    {
    pos = start + bbdebut.length + insText.length + bbfin.length;
    }
    input.selectionStart = pos;
    input.selectionEnd = pos;
    }
     
    else
    {
    var pos;
    var re = new RegExp('^[0-9]{0,3}$');
    while(!re.test(pos))
    {
    pos = prompt("insertion (0.." + input.value.length + "):", "0");
    }
    if(pos > input.value.length)
    {
    pos = input.value.length;
    }
    var insText = prompt("Veuillez taper le texte");
    input.value = input.value.substr(0, pos) + bbdebut + insText + bbfin + input.value.substr(pos);
    }
    }
    function smilies(img)
    {
    window.document.formulaire.message.value += '' + img + '';
    }
    </script>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
       <head>
           <title>Gestion des dus</title>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <body>
    
    <form method="POST" action="creer_commentaire_societe.php" name="formulaire" accept-charset="UTF-8">
    <fieldset><legend>Mise en forme</legend>
    <input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('[g]', '[/g]');return(false)" />
    <input type="button" id="italic" name="italic" value="Italic" onClick="javascript:bbcode('', '');return(false)" />
    <input type="button" id="souligné" name="souligné" value="Souligné" onClick="javascript:bbcode('', '');return(false)" />
    <input type="button" id="taille" name="taille" value="Taille" onclick="javascript:bbcode('[taille=18px]', '[/taille]');return(false)" />
    <br/><br/>
    <textarea cols="115" rows="10" name="observation"></textarea><br>
    <input type="text" name="numero" value="<?php echo $_GET['numero'];?>" size='7'>
       <br />
       <input type="submit" name="submit" value="Envoyer" />
       <input type="reset" name="Effacer" value="Effacer" /></p>
    </fieldset>
       </form>
    </body>
    </html>
    Ma page d'affichage du résulta avec mie en forme

    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
     
    <?php
    session_start();
    ini_set ("error_reporting", "E_ALL & ~E_NOTICE");
     
    include('../inc/inc_connexion.php');
     
    if(!empty($_GET['numero']))
    {
    $numero=$_GET['numero'];
     
    $sql = "SELECT COUNT(echang_id) as nb_commentaire, echang_id, echang_observation FROM echange WHERE echang_id = $numero";
     
    $requete = mysql_query( $sql) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" );
     
    while( $result = mysql_fetch_assoc( $requete) )
    {
    //*********************************************************************************************************//
    //                Affichage conditionnel du lien Création ou modification des commentaire                  //
    //*********************************************************************************************************//
     
     if ($result['nb_commentaire'] ==1)
    	{
            echo "<a href='../modele/commentaire_societe.php?numero=$numero'>Mise à jour des commentaires</a>";		
    	}
    else
    	{
    		echo "<a href='../modele/creer_commentaire_societe.php?numero=$numero'>Ajouter un premier un commentaire</a>";
    	}
     
    //********************************************************************************************************//
    //récupération avec mysql_fetch_assoc(), et affichage de nos résultats :
     
    echo( "<table BORDER=1 BORDERCOLOR=#CCCCCC BGCOLOR=#fffccc CELLSPACING=0 CELLPADDING=1 WIDTH=950 ALIGN=left>\n" );
    echo( "<tr>
    
    <td bgcolor='#669999'><div align=\"center\">Commentaire</div></td></tr>" );
     
     
    $obs = $result['echang_observation'];
     
    echo "<tr>\n" ;
     
    echo "<td>".htmlspecialchars_decode($result['echang_observation'])."</td>\n" ;
    echo "</tr>\n";
    	}
    echo "</table><br>\n" ;
    	}
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
       <head>
           <title>Gestion des dus</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <body>
    </body>
    </html>

    Résultat obtenu lors de l'insertion en dans a table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <em>test des &amp;Atilde;&amp;copy; &amp;Atilde;&amp;nbsp; et &amp;Atilde;&amp;sup1; dans un &amp;Atilde;&amp;sect;a</em>
    Résultat lors de l'affichage à l'écran
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    test des é à et ù dans un ça
    Malgré des recher sur google j'ai pas pu résoudre ce problème

    Je vous remerci de l'aide que vous pourriez m'apporter

    Runcafre91

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Salut,

    voir ici pour encoder en utf8 :

    http://j-willette.developpez.com/tut...-site-en-utf8/

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    Salut,

    voir ici pour encoder en utf8 :

    http://j-willette.developpez.com/tut...-site-en-utf8/
    Bonjour,

    Merci pour le lien, j'ai apporté des modification sur concernant la balise méta afin que le text soit mis en utf-8.
    Concernant les éléments provenant de ma base de donnée cela n'a rien changé toujours des caractères bizarre qui apparaissent.
    J'ai pu voir aussi que l'on pouvait utilisé la baslise header mais le problème j'ai essaie de le mettre en place mais voila cela ne fonctionne pas non plus.

    Comment je pourrais procéder pour résoudre ce problème récurent

    Je vous remercie de votre aide

    Runcafre91

  4. #4
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour

    Enregistres tu tes fichiers en UTF-8 sans BOM conformément à ce qu'il est dit ?

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    Après avoir lu en travers -> mysql_set_charset() apres ta connexion à mysql.

    Sans garantie vu que j'ai lu en travers

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut
    Citation Envoyé par Petibidon Voir le message
    Après avoir lu en travers -> mysql_set_charset() apres ta connexion à mysql.

    Sans garantie vu que j'ai lu en travers
    Bonjour,

    Merci de vos réponse, j'ai trouvé une solution de afin de gérer le problème.
    Je gère les insertions et le traitement dans ma fonction et cela fonctionne correctement

    Ci-dessous le bout de ma fonction
    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
     
    <?php
    function code($document)
    {
    $document = htmlentities($document, ENT_COMPAT, 'UTF-8');
     
    //Mise en forme du texte
    //gras
    $document = preg_replace('`\[g\](.+)\[/g\]`isU', '<strong>$1</strong>', $document); 
    //italique
    $document = preg_replace('`\[i\](.+)\[/i\]`isU', '<em>$1</em>', $document);
    //souligné
    $document = preg_replace('`\[s\](.+)\[/s\]`isU', '<u>$1</u>', $document);
    //lien
    $document = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $document);
    //quote
    $document = preg_replace('`\[quote\](.+)\[/quote\]`isU', '<div id="quote">$1</div>', $document);
     
    //taille
    $document = preg_replace('`\[taille=(.+)\](.+)\[/taille\]`isU', '<span style="font-size:$1px">$2</span>', $document);
     
    // Remplacement des sauts de ligne par des <br />
    $document = nl2br($document);
     
    //On retourne la variable texte
    return ($document);
    }
    ?>
    Runcafre91

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

Discussions similaires

  1. Gestion des accents dans le panneau de sortie "Problèmes"
    Par Invité dans le forum Qt Creator
    Réponses: 0
    Dernier message: 29/05/2014, 16h52
  2. [XML][Flash] Problème d'encodage des accents
    Par JoN28fr dans le forum XML/XSL et SOAP
    Réponses: 9
    Dernier message: 06/10/2006, 16h45
  3. [Regex] gestion des accents dans un mot
    Par joseph_p dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 10/05/2006, 09h04
  4. [FLASH 8] Problème de gestion des clips.
    Par glingo dans le forum Flash
    Réponses: 4
    Dernier message: 09/03/2006, 16h17
  5. [Conception] Gestion des accents dans une base de données
    Par MiJack dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 07/07/2005, 11h41

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