Mysql, phpmyadmin ...

Eléphant du PHP | 440 Messages

29 nov. 2007, 11:17

Bonjour à tous,


J'ai installé sur mon serveur ubuntu, mysql (MySQL: 5.0.38), apache etc...

Tout fonctionne bien mise à part d'un petit souci, j'ai insérer des données dans ma base le petit soucis c'est que tout les les mots (par exemple: farine fourré) et bien tout les "é" sont remplacé par des point d'interrogation (?)

Comment faire pour éviter ce problème?

Mon ma parler de l'inter classement.

Quel inter classement je doit mettre?

Deuxième petite question:

Je suis obliger de mettre un poit (.) a la place d'une virgule pour les nombre que je rentre, comment faire pour qu'il interprète correctement la virgule
(Car actuellement 2,400 se transforme en 2.000)

Merci d'avance

guigui69

Mammouth du PHP | 19672 Messages

29 nov. 2007, 12:13

Salut,
l'interclassement devrait être à "latin1" qui correspond à "iso-8859-1" : là, je dirais que tu as envoyé des caractères encodées en iso-8859-1 dans une table qui a un interclassement en utf-8. Donc deux solutions possibles : soit tu modifie l'interclassement de toutes tes tables, soit tu encodes les données en utf-8 avant insertion et grosso modo tu traites tout en utf-8.

Quand aux nombres flottants, il faut les enregistrer en utilisant le point décimal et non la virgule qui sera interprétée comme un séparateur d'arguments. donc il faut enregistrer "2.400" et non "2,400". Ça veut dire effectuer un traitement avant le construction de la requête et l'inverse lors de l'affichage des données récupérées dans la base.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 440 Messages

29 nov. 2007, 12:28

Merci pour ta réponse, quel methode me conseille tu au niveau de l'interclassement (le plus simple a mettre en place).

Aurait un petit exemple d'un bout de script pour transformer les virgule en point et vis vers ca (en php)

Merci d'avance

guigui69

Mammouth du PHP | 19672 Messages

29 nov. 2007, 12:46

Essaye ça :
<?php
$nombre = "2,400";
$num_float = str_replace(",", ".", $nombre);
echo("<p>Nombre au départ : ". $nombre ."</p>");
echo("<p>Nombre après traitement : ". $num_float ."</p>");
?>
;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 440 Messages

04 déc. 2007, 16:02

Merci pour ta réponse,

au niveau de phpmyadmin, le champ ou les é sont remplacés par ? l'interclassement est le suivant :

latin1_swedish_ci

Comment le modifié

Merci pour ton code pour remplacer les "," par des points, je teste ca :)

Mammouth du PHP | 19672 Messages

04 déc. 2007, 16:10

Vérifie si le problème est au niveau de l'affichage ou bien des données elles-même qui seraient enregistrées incorrectement. Tu peux tester ça en modifiant l'encodage utilisé par ton navigateur en cliquant sur "Affichage>Encodage des caractères" et en sélectionnant iso-8859-1 par exemple : si ça corrige bien les valeurs, c'est que l'encodage par défaut de ta page est à modifier avec une balise <meta> du genre :

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 440 Messages

04 déc. 2007, 18:04

Ok mais ça doit être dans ma base car dans les données rentrée à la place du 'é' il y a un ? sur tout les mot.

Eléphant du PHP | 440 Messages

04 janv. 2008, 10:54

Bonjour je revient sur ce petit soucis car ma base de donnée commence a bien avancée.

Comment faire pour ma base de donnée soit bien encodé. Que lorsque j'ai des mots avec des accents, les accents reste et ne soit pas transformé en "?".

Cette modification peut-elle est fait depuis phpmyadmin?

Merci pour votre aide

guigui69