Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/08/2006, 17h54   #1
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Par défaut [SQL] Caractères spéciaux transformés

Salut,

J'ai une requête qui ajoute des mots dans un table. Juste avant l'insertion, je fais un echo des mots pour vérifier leur orthographe.
Par exemple: équilibré s'affiche bien équilibré.
Par contre, avec ce mot, si je regarde après l'ajout dans la table j'ai: équilibré.

Mon type de champ possède le langage latin1_swedish_ci.

Comment faire pour bien insérer équilibré?
Merci
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 21h32   #2
Membre émérite
 
Inscription : mai 2004
Messages : 709
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 709
Points : 852
Points : 852
Essaye de convertir ta table dans le set de caractères approprié. Par exemple:
Code :
ALTER TABLE ta_table CONVERT TO CHARACTER SET latin1 COLLATE latin1_bin
Avec, bien sûr, les recommandations d'usage comme: fais une copie de ta table avant!

Ce qui marche également sur les SELECT c'est ceci:
Code :
SELECT * FROM ta_table COLLATE latin1_bin
Jamais testé avec un INSERT.
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
:quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
Jabber: ripat at im.apinc.org
ripat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 22h05   #3
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Merci à toi mais cet interclassement ne fonctionne pas non plus Ni dans le SELECT.
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 22h11   #4
Membre émérite
 
Inscription : mai 2004
Messages : 709
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 709
Points : 852
Points : 852
Qu'est-ce que ça m'a déjà énervé ce problème d'accent!

Et latin1_general_ci non plus sans doute?

EDIT:

Que donne:
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
:quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
Jabber: ripat at im.apinc.org
ripat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 22h15   #5
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Peux-tu fournir le code PHP d'insertion ?
Pou visualiser le contenu de la base, qu'utilises-tu ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 23h51   #6
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Citation:
Envoyé par ripat
Qu'est-ce que ça m'a déjà énervé ce problème d'accent!

Et latin1_general_ci non plus sans doute?

EDIT:

Que donne:
Sur ma page php quand je fais la requête j'ai:
Citation:
Array
(
[Collation] => big5_chinese_ci
[Charset] => big5
[Id] => 1
[Default] => Yes
[Compiled] => Yes
[Sortlen] => 1
)
Sinon latin1_general_ci ne change rien.


Citation:
Envoyé par Yogui
Salut

Peux-tu fournir le code PHP d'insertion ?
Pou visualiser le contenu de la base, qu'utilises-tu ?
Mon code d'insertion est simple:
Code :
1
2
$db->insert = array("word" => trim($_POST['word']));
$db->insert("_words");
Je peux aussi mettre la fonction insert() de ma classe:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
# Insérer des données
function insert($table) {
   global $configuration, $fields, $entries;
   $table = $configuration['prefix'].$table;
   foreach($this->insert as $key => $value) {
      $fields .= $key.',';
      $entries .= $this->quote_smart($value).",";
   }
   $fields = substr($fields, 0, strlen($fields) - 1);
   $entries = substr($entries, 0, strlen($entries) - 1);
   $this->query("INSERT INTO ".$table."(".$fields.") VALUES(".$entries.")");
   $this->insert = array();
}
Pour visualiser ma base, j'utilise PhpMyAdmin 2.6.1

Merci
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2006, 00h03   #7
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355


Depuis quand y a-t-il des accents (alphabet européen) en chinois ?

Essaie de faire une table neuve en charset latin et d'y insérer un accent. Les données déjà entrées en bdd sont probablement à supprimer.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2006, 06h35   #8
Membre émérite
 
Inscription : mai 2004
Messages : 709
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 709
Points : 852
Points : 852
big5_chinese_ci est la première collation par ordre alphabétique. Tu n'as sans doute affiché que la première ligne de ton tableau résultat. Tu dois certainement en avoir d'autres.

Pour voir ce qui est disponible sur ton serveur MySQL, exécute les requêtes suivantes dans phpMyadmin:
Code :
1
2
SHOW CHARACTER SET
SHOW COLLATION
Pour voir les valeurs des variables actuelles du serveur:
Code :
1
2
SHOW VARIABLES LIKE 'character_set%'
SHOW VARIABLES LIKE 'collation%'
A partir de là, et après un peu de lecture dans la doc (lien ci-après), essaye plusieurs collations (affichage) ou bien de changer le character set de ta table (ALTER TABLE...).

A lire en cas de problème d'accents (indigeste mais indispensable)
http://dev.mysql.com/doc/refman/4.1/en/charset.html

Vérifie aussi, comme suggéré plus haut, s'il ne s'agit pas d'un problème d'affichage des résultats. Essaye avec un client MySQL en ligne de commande, hors navigateur/html.
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
:quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
Jabber: ripat at im.apinc.org
ripat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2006, 12h45   #9
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Citation:
Envoyé par Yogui
Essaie de faire une table neuve en charset latin et d'y insérer un accent. Les données déjà entrées en bdd sont probablement à supprimer.
J'ai remis comme interclassement latin1_swedish_ci, et quand j'insère directement un accent à partir de PhpMyAdmin ça fonctionne. Mais pas provenant de mon serveur (EasyPhp).

ripat, SHOW VARIABLES LIKE 'character_set%' donne:

Citation:
array(4) {
[0]=>
string(20) "character_set_client"
["Variable_name"]=>
string(20) "character_set_client"
[1]=>
string(6) "latin1"
["Value"]=>
string(6) "latin1"
}
et SHOW VARIABLES LIKE 'collation%' donne :
Citation:
array(4) {
[0]=>
string(20) "collation_connection"
["Variable_name"]=>
string(20) "collation_connection"
[1]=>
string(17) "latin1_swedish_ci"
["Value"]=>
string(17) "latin1_swedish_ci"
}
J'ai change le character set de la table mais rien n'y fait. Avec la console Mysql, quand j'affiche les élements de ma table, les accents sont toujours mal interprétés...

Je ne comprends pas pourquoi ici l'insertion plante, quand j'ajoute d'autres textes dans d'autres tables, les accents sont bien interprétés...

Merci à vous
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2006, 13h31   #10
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Le problème semble donc provenir de ton script, pas de la table. Cela dit, pourquoi choisir swedish plutôt que latin ?
Peut-être qu'en utilisant set_locale() en début de script, tu pourras contourner le problème ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2006, 15h34   #11
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Citation:
Envoyé par Yogui
Le problème semble donc provenir de ton script, pas de la table.
C'est ce que je pense, puisque la seule différence avec le reste de mes codes c'est que la chaine (ici équilibré), est ajoutée à la table par l'intermédiaire javascript (AJAX). Pourtant, juste avant l'insertion, le mot est bien accentué... Je ne vois pas d'où ça vient.
Il faudrait peut être que j'essai sans AJAX.
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2006, 19h41   #12
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Après vérification la seule chose qui plante, c'est bien le fait de passer mes éléments par AJAX...
Au clique d'un bouton, un script javascript récupère la contenance du champ, la transmet au script php qui traite l'info.

Et la ça plante, ça vient donc du javascript.
Quelqu'un connaitrait le remède ?
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2006, 22h29   #13
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Hop, le sujet est déplacé dans Javascript puisque la BDD et PHP ont été mis hors de cause.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2006, 09h50   #14
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 079
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 079
Points : 45 210
Points : 45 210
Utf-8
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2006, 10h59   #15
Expert Confirmé
 
Avatar de FremyCompany
 
Étudiant
Inscription : février 2006
Messages : 2 532
Détails du profil
Informations personnelles :
Âge : 20

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2006
Messages : 2 532
Points : 2 903
Points : 2 903
Envoyer un message via MSN à FremyCompany
Citation:
Envoyé par SpaceFrog
Utf-8
+1, il faut penser à faire un utf8_encode avant le echo ()
__________________
Fremy
Pour vos développements Web et une navigation agréable, le tout gratuit :
1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
FremyCompany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2006, 12h47   #16
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
On va peut être en revenir au php

Sinon le utf8_encode ne change rien, et le ut8_decode remplace les caractères par ?

La possibilité serait que je remplace manuellement tous les faux caractères, mais c'est un peu fastidieux... Le mieux serait une vraie fonction.

Sinon SpaceFrog quand tu disais Utf-8 tu entendais ces fonctions?
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2006, 13h19   #17
Expert Confirmé
 
Avatar de FremyCompany
 
Étudiant
Inscription : février 2006
Messages : 2 532
Détails du profil
Informations personnelles :
Âge : 20

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2006
Messages : 2 532
Points : 2 903
Points : 2 903
Envoyer un message via MSN à FremyCompany
Sinon, tu peux t'amuser à faire du url_decode(url_encode($str)), pour voir si ca marche ou pas

Essaie différentes combinaisons pour tester...
__________________
Fremy
Pour vos développements Web et une navigation agréable, le tout gratuit :
1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
FremyCompany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2006, 15h03   #18
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Explique-moi voir comment tu peux appliquer des fonctions PHP avec une interface utilisateur ?
Si le problème vient de la transmission par AJAX, alors il faut trouver l'équivalent de utf8_encode() en Javascript.
Pour le moment, tes informations semble être encodées avec un encodage invalide avant d'être transmises à PHP. C'est donc avant PHP qu'il faut intervenir.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2006, 16h04   #19
Membre Expert
 
Inscription : juillet 2004
Messages : 1 033
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 1 033
Points : 1 050
Points : 1 050
Il n'y aurait pas une histoire de charset sur la page la dessous ?


-------- edit.
En faits pas vraiment la page. Mais plutot sur le flux XML envoyé par Ajax. Je ne sais plus comment cela fonctionne précisèment mais il faudrait peut être regarder sur le content-encoding du flux.
ePoX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2006, 17h57   #20
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 079
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 079
Points : 45 210
Points : 45 210
j'entendais le doctype et une bazlise meta contense charset ...
je ne l'ai pas là sous le coude je suis en congés mais j'ai ça au boulot ...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h10.


 
 
 
 
Partenaires

Hébergement Web