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 :

probleme d'encodage de caractere [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 166
    Par défaut probleme d'encodage de caractere
    bonjour à tous, je fais un petit site internet pour un ami et je veux lui faire un espece de panneau d'admin pour pouvoir modifier ses pages. chacune etant legere, je les stock dans une BDD.
    le probleme est que les textes à afficher comprenent des accents des apostrophes etc ...
    on m'a expliqué que c'était un probleme d'encodage mais je n'ai pas tres bien compris. ma table est en utf8 et voilà le script qui update :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php 
    header('Content-Type: text/html; charset=utf8');
    $link=mysql_connect("localhost","ulrich", "mdp") or die(mysql_error());// Connexion à MySQL
    mysql_query('SET NAMES UTF8');
    $database=mysql_select_db("go",$link) or die(mysql_error());	
     
    extract($_POST);
    if(isset($news)){
    	mysql_query("UPDATE news SET texte='".utf8_decode($news)."';") or die(mysql_error());}
    mysql_close($link);
    ?>
    cependant ça ne fonctionne pas ( les deux lignes où il y a ecrit utf8 m'ont été conseillé ).
    EDIT : j'ai ajouté le utf8_decode : celà arrete de me faire une troncature a partir du 1er accent mais ça me les remplace tous par un ?

    EDIT 2: Finalement apres pas mal de temps de recherche sur le net j'ai trouvé comment m'en sortir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php 
    header('Content-Type: text/html; charset=latin1_swedish_ci ');
    $link=mysql_connect("localhost","ulrich", "mdp") or die(mysql_error());// Connexion à MySQL
    mysql_query('SET NAMES latin1_swedish_ci ');
    $database=mysql_select_db("go",$link) or die(mysql_error());	
     
    extract($_POST);
    if(isset($news)){
    	mysql_query("UPDATE news SET texte='".$news."';") or die(mysql_error());}
    mysql_close($link);
    ?>
    EDIT 3 : pas completement sauvé, je ne peux pas encore faire les apostrophe, si vous voyez où est le problème...

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 13
    Par défaut
    Bonjour,

    ton problème d'apostrophe c'est parce qu'elles ne sont pas échappées ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /*
    lors de l'insertion en bdd tu utilises mysql_real_escape_string
    sa ajoute des \ par ex :l'php devient l\'php
    */
    mysql_query("UPDATE news SET texte='".mysql_real_escape_string($news)."'")
     
    /*
    puis quand tu affiches $news dans une page tu utilises stripslashes()
    pour retirer les \
    */
    echo stripslashes($news);

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 166
    Par défaut
    ok donc si j'ai bien compris cette fonction "code" l'entrée de l'utilisateur pour eviter les caracteres d'echapement c'est ça ? comme un cryptage en md5 à l'aide de la fonction du même nom non ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 13
    Par défaut
    C'est tout a fait sa, mysql_real_escape_string permet de protèger les caractères contre l''échappement, et stripslashes déprotège.

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

Discussions similaires

  1. [MySQL] probleme avec l'encodage des caracteres arabes
    Par diengkals dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 10/09/2012, 15h20
  2. probleme avec l'encodage des caracteres
    Par isoman dans le forum Général Java
    Réponses: 2
    Dernier message: 18/05/2009, 23h22
  3. Problème d'encodage des caractères sous debian
    Par HNT dans le forum Administration système
    Réponses: 2
    Dernier message: 05/04/2006, 11h07
  4. Precision sur l'encodage de caractere
    Par La Truffe dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 19/05/2004, 13h52
  5. Encodage de caracteres: eviter 81, 8D, 8F, 90, 9D ->
    Par Fladnag dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 27/04/2004, 11h17

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