Problème insert MYSQL avec accent

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par passion, 24 Mai 2013.

  1. passion
    passion WRInaute accro
    Inscrit:
    6 Janvier 2006
    Messages:
    3 865
    J'aime reçus:
    166
    Bonjour,

    Je suis un peu perdu là, j'aurai besoin de vos lumières parce qu'à force d'être dessus, je ne vois plus... 8O

    Voilà, je viens de faire la migration d'un site d'un serveur dédié DEBIAN squeeze 6.0 vers un serveur DEBIAN WHEEZY 7.0.
    Je ne comprends pas car j'ai vraiment essayé de garder les mêmes caractéristiques du serveur MYSQL et PHPMYADMIN pour que la migration se passe bien mais pas au moment de tester le site en ajoutant un article :(

    En faite, dès l'instant que je vais mettre un mot avec accent, le champ de ma table restera vide.

    Voici mes caractéristiques:
    1/ Ma config apache ancienne et nouvelle est en : iso-8859-1
    2/ mes pages sont (meta http-equiv="content-type" content="text/html; charset=iso-8859-1")
    3/ la fonction que j'utilise avant de faire un ajout en base de données:
    Code:
    <?php
    public function textLibre($element){
    	$element1 = htmlentities ($element, ENT_QUOTES);
    	$element2 = stripslashes($element1);
    	$element2 = trim($element2);
    	return $element2;
    }
    }
    ?>
    
    4/ En suite, pour ma table : le moteur (MyISAM) et le charset : (latin1_swedish_ci)

    PS1 : je précise qu'avant la migration et depuis plusieurs années, cela a toujours marché et c'est uniquement depuis cette migration.
    PS2 : en faite, mon insertion se passe bien tant que je ne mets pas de mots avec accent.
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 126
    J'aime reçus:
    318
    Encore cette légende urbaine d'enregistrer les entités HTML dans la DB (htmlentities lors du save => FAIL)...
    Et si tu copies/colles ta query générée dans ton client MySQL préféré, ça donne ?
     
  3. passion
    passion WRInaute accro
    Inscrit:
    6 Janvier 2006
    Messages:
    3 865
    J'aime reçus:
    166
    Merci de ta réponse :)

    Bah en faite, j'ai créé volontairement une erreur dans mon script PHP pour qu'elle puisse me générer une erreur visible, justement pour voir quelle type de requête, je m'apprête à faire et bah... c'est là, que je ne pige pas... 8O

    Si je mets exemple : [bonjour] => ça passe. Maintenant si je mets : [as-tu été à l'école?] ==> ma variable POST sera vide??!!

    Donc cela vient obligatoirement de ma fonction mais pourquoi??
    Je ne fais rien extraordinaire?
    Cela a toujours fonctionné?!

    Est-ce un module spécifique qui n'est pas activé sur apache2?
    J'ai l'impression, c'est une histoire de caractères spéciaux mais traités PHP pas MYSQL puisque c'est ma variable POST qui ne récupère pas les données!
    Merci
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 126
    J'aime reçus:
    318
    Et tu peux nous montrer le code PHP d'insertion ? Afin de s'assurer de voir que tu échappes les données (mysql_real_escape_string() ou autre) ?
    Si ça tombe c'est juste ça, parce que par exemple avant tu avais les magic_quotes activées.

    Edit: ah carrément dans la variable $_POST ?
     
  5. passion
    passion WRInaute accro
    Inscrit:
    6 Janvier 2006
    Messages:
    3 865
    J'aime reçus:
    166
    lol oui... c'est ma variable POST qui ne récupère pas mes données issues de mon formulaire dès l'instant que je vais mettre des caractères spéciaux.

    J'ai créé une erreur dans mon script PHP pour qu'elle puisse me générer visuellement le type de requête que je m'apprête à faire.
    C'est là que je me suis aperçu que si je mets de simple mot sans accent, sans caractères spéciaux => ma variable concernée est ok mais sinon, la variable est vide??!!

    Je ne comprends pas en quoi ma fonction puisse merder?! :?
    Est-ce un module à activer dans apache2?
    Est-ce que cela vient de WHEEZY?
    Comprends pas??!!

    C'est vraiment une migration, je n'ai pas touché au code source!
     
  6. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 126
    J'aime reçus:
    318
    Et dans Firebug ou le débogueur de Chrome, tu peux tout analyser, le request à l'air correct?
     
  7. passion
    passion WRInaute accro
    Inscrit:
    6 Janvier 2006
    Messages:
    3 865
    J'aime reçus:
    166
    Merci de ton aide :oops:

    Franchement, j'y comprends rien??!
    J'ai analysé mon php.ini si cela venait de là mais j'ai rien vu de particulier :(

    Avec firebug, il me précise bien les données issues de mon formulaire en POST, je te mets ce qui pourrait aider:
    Pour infos:
    Code:
    Content-Type	text/html; charset=iso-8859-1
    Date	Fri, 24 May 2013 16:53:50 GMT
    Expires	Thu, 19 Nov 1981 08:52:00 GMT
    Keep-Alive	timeout=5, max=100
    Pragma	no-cache
    Server	Apache/2.2.22 (Debian)
    Vary	Accept-Encoding
    X-Powered-By	PHP/5.4.4-14
    
    Maintenant, ce que me donne firebug:
    J'ai bien toutes mes données puisqu'il me précise [requiredD ==> c'est école].
    Le champ de mon formulaire "requiredD" passe bien mes données avec caractères spéciaux.
    Mais un simple:
    Code:
    <?php
    echo $_POST['requiredD'];
    ?>
    
    Affiche mes données avec ou sans caractères spéciaux!

    Maintenant, si j'utilise "htmlentities()", cela ne me renvoi plus rien !

    J'en déduis (je pense) qu'il y a un module ou une info qui ne doit pas être chargée sur apache ou php parce que là, c'est carrément une fonction de base qui n'a pas l'air d'être reconnue => "htmlentities()"

    Non?!
     
  8. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 126
    J'aime reçus:
    318
    Je ne vois pas non plus comme ça, c'est bizarre :?
     
  9. passion
    passion WRInaute accro
    Inscrit:
    6 Janvier 2006
    Messages:
    3 865
    J'aime reçus:
    166
    Bon... mon problème avance...
    En faite, dans la doc PHP, l'encodage utilisé par php pour htmlentities est ISO-8859-1 pour les versions anterieur à PHP 5.4.0 et UTF-8 a partir de PHP 5.4.0.

    Donc la raison, je l'ai trouvé.

    La solution bourrin serait de rajouter une instruction dans mon htmlentities() de la sorte:
    Code:
    htmlentities($mavariable, ENT_QUOTES, 'iso-8859-1');
    J'ai testé, ça marche !

    Mais je préfèrerai choisir une méthode plus propre parce que je n'ai pas envie de passer sur tout mon code. Alors, j'ai modifié mon php.ini pour lui mettre:
    J'ai redémarré apache mais toujours le même problème?!
     
  10. atanalban
    atanalban Nouveau WRInaute
    Inscrit:
    30 Août 2012
    Messages:
    2
    J'aime reçus:
    0
    Bonjour

    j'ai le meme soucis, que j'avais solutionné une fois, c'est bien dans la config serveur pas la peine de tout reecrire ..
    je me souviens plus, est ce que tu as trouvé ?
     
Chargement...
Similar Threads - Problème insert MYSQL Forum Date
Google Shopping problème Insertion article Google : l'entreprise, les sites web, les services 18 Février 2012
Probleme bizzare d'insertion dans une base de donnée Développement d'un site Web ou d'une appli mobile 18 Août 2011
Problème d'insertion d'une balise DIV Développement d'un site Web ou d'une appli mobile 8 Juin 2011
Problème Realtime trafic Google Analytics il y a 39 minutes
Problème filtrage Safesearch Problèmes de référencement spécifiques à vos sites 3 Avril 2021
Problème mail automatique Développement d'un site Web ou d'une appli mobile 31 Mars 2021
WordPress Problème avec catégories et balises canoniques Crawl et indexation Google, sitemaps 25 Mars 2021
Yoast SEO n'apparait plus, comment corriger ce problème ? Administration d'un site Web 16 Mars 2021
Problème : groupe de canaux Google Analytics 15 Mars 2021
Problème d'indexation : pages non indexées après 3 mois d'attente Crawl et indexation Google, sitemaps 12 Mars 2021