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 :

pb d'encodage sur base de données


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Par défaut pb d'encodage sur base de données
    bonjour

    j'ai une base de donné dans laquelle je récupère et écrit des données dans plusieurs table à partir de srcripts PHP mon tou est ok au niveau fonctionnelle mais mon souci est que lorsque j'écrit des donnés dans une table les caractère accentué ne sont pas écrits correctement ; je voudrais donc savoir ce qu'il faut configurer pour que mes données soit sauvegarder proprement.

    merci

  2. #2
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Bonjour,

    Regarder du côté des collations !

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  3. #3
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    Il nous faudrait plus d'informations :
    • encodage de la base MySQL ;
    • encodage de tes pages html ;
    Merci

  4. #4
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Par défaut
    mon encodage html : charset=iso-8859-1
    par contre pour la base MySQL je ne sais pas ce qu'il faut parametrer pour que sa fonctionne avec les caractères spéciaux (é_à_ù...)

  5. #5
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    Dans PHPMYADMIN, tu sélectionnes ta base de données et tu vas dans le menu OPERATIONS...
    Tu dois avoir une liste déroulante 'Interclassement' qu'il faut que tu mettes sur 'latin1'

  6. #6
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Par défaut
    Merci rems033

    dans la liste 'interclassement" c'est 'Latin_bin" qui était possible de choir mais malgré cela ça ne fonctionne pas y a-t-il une autre chose à faire ?

  7. #7
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    quel est le type de résultat de données stockées ?
    Fais moi un copier coller des caractères accentués ?

  8. #8
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Par défaut
    En faite j'ai une liste qui se remplit automatiquement et lorsque je sélectionne une valeur de cette liste un champs type text se remplit. le champ type texte est correctement remplit tant que dans le le contenu de l'option que je choisit il n'y a pas de ( é-è-à-ù-apostrophes-?... ) j'ai utilisé la fonction mysql_escape_string() dans mon script mais sa ne résoud que le pb des apostrophes

  9. #9
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    • Pour les apostrophes, il faut mettre la fonction addslashes($string) pour hôter le problème...par contre, pour un affichage sur la page, il faudra utiliser la fonction stripslashes($data['ton_string_de_la_base']) ;
    • Pour les accents, regarde du côté de la fonction php htmlentities() ou htmlspecialchars() ;

  10. #10
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Par défaut
    Merci rems033
    l'idéal serai de pouvoir gerer tous en une fonction mais je vais tester

  11. #11
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    tu peux très bien les combiner ensemble du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function convert_string($string)
    {
         return addslashes(htmlspecialchars($string));
    }
    et ainsi dans ton insertion tu n'as plus qu'à rappeler cette fonction...

    Bon courage...

    Personnellement, je passe tout en utf8 (BDD+HTML) et j'utilises les fonctions utf8_encode() et utf8_decode() pour gérer l'accentuation

    PS : penses à mettre "Résolu" sur ton sujet en cliquant sur le bouton du même nom sous le dernier post, merci

  12. #12
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Par défaut
    j'ai fait toute les combine possible je réussi seulement à échapper les appostroches mes les caractèresaccentué ne sont pas géré par l'ensemble des fonctione que tu m'a préconisé.

    Pour exemple avec htmlspecialchars:
    téléintervention donne téléintervention
    et
    N° de demande donne N° de demande



    avec htmlentities :
    téléintervention donne téléintervention

    N° de demande donne N° de demande

  13. #13
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    c'est en fait de l'utf8 interprété en iso
    Utilises alors utf8_decode($string) avant d'insérer dans ta base

  14. #14
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Par défaut
    la fonction utf8_decode ne fonctionne pas non plus, après quelque heur de galère j'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-type: text/html; charset="iso-8859-1"');
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-type: text/html; charset="UTF-8"');
    ça m'affiche correctement les données (ms re-pb qd il y a un appostrophe) mais lorsque j'interoge ma base pour remplir mon champs type texe il ne m'affiche rien (et cela quelque l'option que je choisit dans ma liste)

  15. #15
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    lo po compris ce que tu veux dire, un exemple en ligne peut être ?

  16. #16
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Par défaut
    voici le script qui gère ce que je veut afficher dans mon chams type teste
    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
     
    <?php
    header('Content-Type: text/html; charset=ISO-8859-1');
     
    if(isset($_POST["inde1"])&&isset($_POST["inde2"]))
    {
     
    $temp1=$_POST["inde1"];
    $temp2=$_POST["inde2"];	 
     
     
    // Connexion bdd  	
     
     $bd= "importation"; //Base de données importation  
    $hote= "localhost"; //Hote (localhost en principe)  
    $use= "root"; //Utilisateur  
    $pass= ""; //Mot de passe 
    @mysql_connect($hote,$use,$pass) or die("Impossible de se connecter ");
    @mysql_select_db($bd);
     
    $temp1b= htmlentities($temp1); 
    $temp2b= htmlentities($temp2);
     
    $msg="";
     
     
    $result1 = mysql_query("SELECT * FROM table_champs WHERE NomInput='$temp1b' AND Champs='$temp2b'") or die(mysql_error());					
    while($info = mysql_fetch_assoc($result1))
    	{							
    	$msg=$info["Type"];
    	}			
     
    mysql_close(); // Déconnexion
     
    echo $msg;						
     
    }
    ?>
    C'est ma variable $msg qui alimente un champ de type text
    j'ai tester toute les fonctions que tu me demandé mais rien, ou bien je but sur le pb de appostrophes ou bien celui des caractère accentués ou bien les deux

  17. #17
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Par défaut
    si quelqu'un à une piste à me donner svp

  18. #18
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    que donnes le résultat du echo $msg ?

  19. #19
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Par défaut
    pour une info envoyée contenant un appostrophe (avec $temp2b ) sa donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'indispo'' at line 1
    et pour une info envoyé avec des accents ça n'affiche rien

    PS : dans l'exemple du message d'erreur, l'info envoyé est "date de fin d'indispo"

Discussions similaires

  1. Event sur base de donnée Firebird et programmation delphi
    Par seb8810 dans le forum Connexion aux bases de données
    Réponses: 5
    Dernier message: 16/03/2006, 17h06
  2. Requête sur base de données ACCESS
    Par JLamotte dans le forum Access
    Réponses: 1
    Dernier message: 21/11/2005, 10h50
  3. Réponses: 2
    Dernier message: 10/11/2005, 16h59
  4. Conseils developpement sur base de données
    Par koolkris dans le forum Bases de données
    Réponses: 4
    Dernier message: 27/07/2005, 11h16
  5. Manipulation de XML sur base de données
    Par psyche dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 02/11/2004, 14h07

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