[RESOLU] Conversion accents.

Eléphant du PHP | 290 Messages

26 mai 2014, 12:55

Bonjour,

J'ai une page de formulaire et une page de traitement de formulaire.
Lorsque en tant qu'utilisateur, j'envoie des données dans ma base de données,
les accents ne sont pas convertis.

Pour résoudre le problème, j'ai:

- ajouté dans chacune des en-têtes de mes deux pages (formulaire et traitement de formulaire):
<meta http-equiv="Content-type" content="text/html; charset=UTF-8/>
J'ai également vérifié l'activation de l'encodage UTF-8 dans Dreamweaver
(Edition > Préférences > Nouveau document > Codage par défaut)

-ajouté en plus dans la page de traitement de formulaire:
mysqli_query("SET NAMES 'utf8'");

-choisi l'Interclassement utf8_general_ci pour tous mes champs dans l'interface de phpmyadmin

-dans le document httpd.conf, j'ai rajouté la ligne
AddDefaultCharset UTF-8 (je ne avais pas trop où la mettre, je l'ai mis tout en haut de la page)

Je me suis aidé du forum pour faire ça.
Je n'arrive toujours pas à retrouver mes accents sur mes données rentrées dans ma base de données.

Quelqu'un pourrait-il m'aider?

Eléphant du PHP | 422 Messages

26 mai 2014, 13:41

hello

il n'y aurait pas une fonction qui supprime les accents dans le code ?

un problème d'encodage supprime pas les accents mais remplace par des caractères bizarre.

++
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

Eléphant du PHP | 290 Messages

26 mai 2014, 14:07

Je me suis mal exprimé:
les accents rentrés dans le formulaire resortent dans ma base de données transformés en caractères bizarres.
J'ai par exemple un é rentré dans le formulaire qui devient un A avec le tilde espagnol (la vague sur le n en espagnol) suivi d'un c entouré d'un rond,
une fois que je retrouve mon mot dans la ligne de ma table dans l'interface phpmyadmin.

Eléphant du PHP | 422 Messages

26 mai 2014, 15:08

hello

c'est quoi l'encodage de la base ? ( à la création)

des idées
http://www.php.net/manual/fr/function.m ... coding.php
http://www.php.net/manual/fr/function.m ... harset.php
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

ViPHP
xTG
ViPHP | 7331 Messages

26 mai 2014, 16:39

Un peu de littérature sur le sujet pour éviter ce genre de problème : faq-tutoriels/encodage-utf-t245062.html

Eléphant du PHP | 290 Messages

26 mai 2014, 17:41

L'encodage (Interclassement dans phpmyadmin) était latin1_swedish_ci à la base.
Maintenant c'est utf8_general_ci

J'avais déjà lu le lien de xTG puisque c'est celui dont je me suis servi pour apporter
mes modifications.

J'ai lu ceux de telnes aujourd'hui.

Je ne comprends pas ce qu'il cloche.
Je pense pourtant avoir fait le tour.

Devrais-je commencer par faire une vérification de mon encodage avec le premier lien de telnes?
Si oui, je ne sais pas comment m'y prendre, même avec les explications.
Le problèmes c'est qu'il y a plein de bouts d'explications éparpillées et je ne sais pas
à quelle portion de code cette vérication doit être associée et comment.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 mai 2014, 18:35

salut,

tu peux ajouter accept-charset="UTF-8" à ta balise form.

tests à effectuer :
- entrer un texte avec accent avec phpmyadmin (pma) => est ce que cela s'afficher correctement sur ta page web ?
- entrer un texte "en dur" dans la requête d'insertion (dans ton code) => est ce que cela s'affiche correctement (pma / page web)?

est ce que tu utilise des fonctions de traitement de chaines de caractères ? (certaine ne sont pas faite pour utiliser de l'utf-8 d'ou les liens de telnes).

sans code on ne peux que rester dans le vague.
mes question vont te permettre de cibler le code qui pose problème (affichage, insertion, les deux ;) ).

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 290 Messages

27 mai 2014, 12:10

J'ai écrit accet-charset="UTF-8" dans toutes mes balises form.
J'enlève temporairement les fonctions de traitement de chaines de caractères pour simplifier les choses.

J'ai fait des tests:
- envoi de données avec pliens d'accents depuis une page web vers mon SGDB.
Ca marche, mais tous les accents sont déformés en signes bizarres.

-page web pour récupérer les données (avec des signes bizarres dans mon SGDB).
Rien ne s'affiche. Il s'agit bien sûr d'une page de script avec une extension php.
Je n'arrive même pas à faire afficher dans cette page du texte html!!
Je précise que le texte html que j'ai écris je ne l'ai pas écris dans des balises <?php ... ?>
J'ai même mis du html dans une instruction echo " ... "; à l'intérieur de balises <?php ... ?>
et rien ne s'affiche non plus.
La page est toute blanche!!

-test pour envoyer une requête depuis phpmyadmin (envoyer des données).
J'ai écrit comme requête SQL:
INSERT INTO essai (nom, zonedetexte) VALUES (moi, c'est la galère avec php);
le nom de ma table est essai
le nom de la première colonne de cette table est nom
le nom de la deuxième colonne de cette table est zonedetexte
Je n'ai rien mis d'autre dans ma requête.
Je n'ai pas l'habitude d'envoyer des requêtes directement depuis phpmyadmin,
je ne sais donc pas si la seule ligne que j'ai écris doit suffire.
La requête n'étant pas acceptée, ce que je fais n'est pas bon.
J'ai une difficulté ici aussi.

-concernant le test pour envoyer un texte "en dur", je sais encore moins comment m'y prendre.
Je m'y prends ainsi pour envoyer des données vers mon SGDB, en récupérant des données
saisies dans le formulaire:

$nom=$_POST['nom'];
$zonedetexte=$_POST['zonedetexte'];

$req="INSERT INTO essai (nom, zonedetexte)
VALUES('".$nom."','".$zonedetexte."')";

Mais pour envoyer un texte en dur, je ne sais pas comment m'y prendre.

Enfin, dernier point d'incompréhension, depuis que j'ai fait des réglages pour
me mettre en UTF-8 (messages plus haut), quand j'envoi des données vers mon SGDB
il n'y a plus de message "Les données que vous avez saisies ont bien été
enregistrées" (html) n'y de message d'erreur.
J'ai l'impression qu'il y a un lien entre ce problème et mon problème d'affichage
avec la page web pour récupérer les données.

Eléphant du PHP | 290 Messages

30 mai 2014, 09:39

J'ai bien avancé!!

Dans mes deux pages de traitement de formulaire et d'affichage de données
j'ai enlevé tout le code HTML et SGML avant et après les balises de code php: <?php ... ?>
Du coup, j'ai un affichage sur mes pages "Les données que vous avez saisies ont bien été enregistrées"
avec tous les accents bien écrits. Apparemment ces parties de code dérangeaient.

Sur phpmyadmin, tous les signes sont convertis en signes bizarres, mais pourtant,
quand je demande de réafficher ces mêmes données enregistrées dans ma table,
elles ressortent très propres avec tous les accents comme il faut dans ma page d'affichage de données.
Est-ce que c'est normal que dans phpmyadmin SEULEMENT elles soient converties en signes bizarres?
Si non, qu'est-ce que je dois faire pour régler la chose.
Si oui, comment dois-je m'y prendre si un jour je veux ressortir sur imprimante une partie des données sur
trouvant dans ma base et sans les signes bizarres? Dois-je absolument passer par une page de réaffichage des données?

Aussi, mon serveur m'indique deux choses:
mysqli_query() expects at least 2 parameters, 1 given
Cela concerne la ligne où j'ai écrit comme vous me l'avez proposé:
mysqli_query("SET NAMES 'utf8'");
Savez-vous pourquoi on me demande un deuxième paramètre?

mysqli_close() expects parameter 1 to be mysqli, boolean given in
J'ai mis la variable de ma base entre les parenthèse de mysqli_close
C'est bien ça qu'il faut faire?
Qu'est-ce que vous mettez vous?

Je souhaite que quelqu'un voudra bien m'aider :|

Merci déjà pour votre aide :)

Eléphant du PHP | 290 Messages

02 juin 2014, 17:44

Bonjour,

Problème d'UTF-8 résolu.

Il y a juste que mes caractères sont convertis en signes bizarres dans phpmyadmin uniquement
et je voudrais savoir si c'est normal.
Si quelqu'un a la réponse est-ce qu'il peut me la donner?

J'arrive à envoyer tout type de caractère dans mon SGBD et à afficher tout type
de caractères venant de mon SGBD, c'est juste que les caractères "sont bizarres" dans les tables
et dans les tables seulement.
J'apprécierais beaucoup d'avoir la réponse, même si je mets le problème comme étant résolu. :D
Un simple oui ou non serait déjà beaucoup pour moi.

J'ai aussi résolu mes problèmes de la série mysqli aussi.