Retourner sur PHPFrance


 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   Accéder aux archivesArchives  S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
PHPFrance est maintenu par des bénévoles et soutenu par les sociétés Actoo et Anaska, Conseil et Formation pour PHP
Pour optimiser vos chances commencez par consulter la FAQ et faites une recherche.
Bon esprit, politesse et entraide sont les règles de ce forum.

[Résolu] Caractères spéciaux, accents dans mysql
Aller à la page Précédente  1, 2, 3  Suivante
 
Poster un nouveau sujet   Répondre au sujet    PHPFrance Index du Forum -> SQL & Bases de données
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Cyrano
Ganesha


Inscrit le: 07 Fév 2005
Messages: 17887
Localisation: Paris XIII
MessagePosté le: 23 Juil 2005, 18:13    Sujet du message: Répondre en citant

Génial, j'avais pourtant cherché pas mal,mais je n'ai pas eu l'assiduité de faire un tour détaillé et complet du fichier de configuration de phpMyAdmin.

Merci pour le tuyau, ça resservira sûrement à d'autres Smile
_________________
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse Axe
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
chab42
Embryon


Inscrit le: 03 Juin 2005
Messages: 9
Localisation: Rive de Gier
MessagePosté le: 08 Aoû 2005, 23:35    Sujet du message: porblème d'accents Répondre en citant

bonsoir,

je suis tombé sur votre post sur les accents et php/mysql.
J'ai lu attentivement mais un problème subsiste toujours me concernant.

Je suis hébergé chez free, et ils ont fait une montée de version de mysql et de php.
depuis, les connexions à ma base de données ne fonctionnent plus comme avant. Je m'explique :

c'est une base de données d'anciens élèves. les prénoms et les noms contiennent des accents.
Avant, je pouvais me connecter facilement avec "sebastien.chabanel", alors que dans la base le prénom est indiqué avec un accent.

depuis quelques semaines, je suis obligé de me connecter en mettant les accents de partout, sinon il ne reconnait pas le login.

Comment pourrais-je continuer à fonctionner comme avant ?
Que dois-je modifier (dans mes scripts php, dans le header de mes pages, dans phpmyadmin...)

Si quelqu'un a la réponse, ou au moins un début de piste je suis preneur

Merci par avance...

Seb
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur MSN Messenger
Cyrano
Ganesha


Inscrit le: 07 Fév 2005
Messages: 17887
Localisation: Paris XIII
MessagePosté le: 09 Aoû 2005, 10:17    Sujet du message: Répondre en citant

Je ne comprends pas bien ton problème: les caractères accentués concernent aussi les noms de tables et de champ de ta base ? Si c'est ça, tu as un problème, on n'utilise en principa jamais de caractères spéciaux pour nommer une base, une table ou un champ quelconque dans une base de données.
_________________
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse Axe
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
chab42
Embryon


Inscrit le: 03 Juin 2005
Messages: 9
Localisation: Rive de Gier
MessagePosté le: 09 Aoû 2005, 19:03    Sujet du message: explications complémentaires à mon problème Répondre en citant

non je ne parle pas des noms de tables, qui sont sans accents évidemment, mais je parle des champs.

Je ne sais pas quelle montée de version a fait free, mais en tout cas actuellement c'est la version MySQL 4.1.13 qui me pose problème.

cela ne concerne pas la connexion à la base, je me suis mal expliqué, mais les champs de cette dernière.

Voici le code de vérification du login, une fois le formulaire posté :

PHP:
<? session_start();

include(
"config.inc.php");
include(
"functions.inc.php");

// nettoyage des données en entrée

$loginm clean_input($_POST['loginm']);
$password clean_input($_POST['password']);

// Récupérer le prénom et le nom du login "prenom.nom"

$champs explode(".",$loginm);

$prenom $champs[0];
$nom $champs[1];

// connection à la BDD

$db mysql_connect($dbhost,$dbuser,$dbpass)
    or die(
"Impossible de se connecter à la base de données !");

mysql_select_db($dbname,$db)
    or die (
"Impossible de sélectionner la base de données !");

// verification de l'utilisateur en fonction du login et du mot de passe

$sql "SELECT id, first_name, last_name FROM members WHERE first_name='".$prenom."' AND last_name='".$nom."' AND password='".$password."'";
$result mysql_query($sql)
    or die (
"Impossible de récupérer vos informations !");

if (
mysql_num_rows($result) != 1) {
    
session_unset();
    
session_destroy();

    
setcookie("check_email"""time()-1800"/"""0);
    
setcookie("check_hash"""time()-1800"/"""0);
    
setcookie(session_name(), ""time()-1800"/"""0);
// message d'erreur de connexion
    
die("L'autentification a échoué !<br>Retournez sur la page de <a href=index.php>Connexion</a> et connectez-vous à nouveau !");

} else {

    
$_SESSION['IDtag'] = mysql_fetch_row($result);

// Créer un cookie valable 30 minutes
    
setcookie("check_email"$emailtime()+1800"/"""0);
    
setcookie("check_hash"md5($email.$hash_password), time()+1800"/"""0);

// Remplacer le champ "first login" à '0' pour indiquer que l'utilisateur s'est déjà connecté au moins une fois au site
    
$sql "UPDATE members SET first_login=0 WHERE id='".$_SESSION['IDtag'][0]."'";
    
$result mysql_query($sql)
        or die (
"Impossible de mettre à jour le tag de session !");

    
header("Location:members/index.php");
    exit;
}

?>


avant, mon script se foutait que dans la base le prénom et le nom soit accentué ou pas, et maintenant si je mets pas les caractères accentués, ça marche pas, j'arrive sur le message d'erreur de connexion
Si tu as une piste ganesh je suis preneur...
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur MSN Messenger
Cyrano
Ganesha


Inscrit le: 07 Fév 2005
Messages: 17887
Localisation: Paris XIII
MessagePosté le: 09 Aoû 2005, 19:27    Sujet du message: Répondre en citant

La solution consisterait à remplacer tous les caractères accentués des valeurs envoyées avec un str_replace. On a déjà vu plusieurs fois sur le forum des formules complètes, mais voici une base:
PHP:
<?php
function sansaccent($chaine)
{
    
$accents = array("à","ä","é","è","ë","ï","ö","ù");
    
$sans    = array("a","e","e","e","e","i","o","u");
    
$retour str_replace($accents$sans$chaine);
    return 
$retour;
}
?>

Applique ça aux valeurs envoyées vers la base de données.

Si les valeurs contenues dans la base comportent des accents, récupères-les sur la base du mot de passe, traite-les avec la même fonction et fais ensuite ta comparaison.

J'ajouterai pour l'avenir: traite toute nouvelle entrée avec la fonction pour n'enregistrer que des données non accentuées et le problème sera réglé.
_________________
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse Axe
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
chab42
Embryon


Inscrit le: 03 Juin 2005
Messages: 9
Localisation: Rive de Gier
MessagePosté le: 18 Sep 2005, 21:37    Sujet du message: De retour Répondre en citant

Merci ganesh pour ta réponse mais je ne souhaite pas modifier le contenu de ma base de données, tout simplement parce qu'en français, les accents change la prononciation, d'ou leur importance.

Je chercherai plutot le moyen d'effectuer une requete mysql où lorsque je cherche "sebastien", il m'affiche à la fois les résultats "sébastien" ET sebastien".
De plus, je vais avoir ce problème sur tous les autres champs de ma base, pour le nom de la ville, des commentaires, ...

J'ai vu qu'une fonction d'indexation (Fulltext) permettai de rechercher directement dans les champs indéxés, mais ça ne marche pas sous mon hébergeur (free). Les requetes restent sensibles à la casse.

Merci d'avance de votre réponse.
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur MSN Messenger
Cyrano
Ganesha


Inscrit le: 07 Fév 2005
Messages: 17887
Localisation: Paris XIII
MessagePosté le: 18 Sep 2005, 21:55    Sujet du message: Répondre en citant

Alors rajoute des clauses dans la clause WHERE : sommairrement WHERE (clauses sans accents) OR (clauses avec accents)
_________________
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse Axe
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
chab42
Embryon


Inscrit le: 03 Juin 2005
Messages: 9
Localisation: Rive de Gier
MessagePosté le: 18 Sep 2005, 22:22    Sujet du message: J'aimerai bien... Répondre en citant

Merci pour cett réponse rapide, mais je ne peut pas rajouter ceci.
car je ne sais pas à l'avance lorsque quelqu'un va se connecter si "etienne" correspond à "étienne" étiénne" ou "etiénne"...

Je sais pas si tu vois ce que je veux dire. Ce champ est important car c'est le login pour le site...

Je pensais qu'il était possible de faire une requete sql sans tenir compte des accents, si c'est pas possible je dirais aux membres de faire attention lors de leur connection !
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur MSN Messenger
Cyrano
Ganesha


Inscrit le: 07 Fév 2005
Messages: 17887
Localisation: Paris XIII
MessagePosté le: 18 Sep 2005, 22:26    Sujet du message: Répondre en citant

C'est vrai qu'en temps normal, une authentification est sensible aux accents et égaslement à la casse : login != Login != lOgIn etc...
_________________
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse Axe
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Mobman02
Invité




MessagePosté le: 27 Sep 2005, 18:38    Sujet du message: Répondre en citant

Moi aussi j'aurais un gros probléme avec des accent sous MySQL.

Je change d'hebergeur en ce moment,
l'ancien est sous MySQL 4.1.13, je veut l'exporter chez un autre hebergeur qui lui est en 4.0....

Lorsque j'exporte mes données du 1er hebergeur, les fichiers SQL que je télécharge sont plein de é (J'ouvre les fichier SQL avec plusieurs éditeur de texte, mais rien n'y fait, et je fait ça sous Windows 98, cela joue t'il ? )

Pourtant toutes les tables du 1er hebergeur sont en interclassement "latin1_swedish_ci"...

J'ai essayer d'importer les fichier de backup (je me suis dit que peut etre mes accents serais normaux lol) mais il s'affiche alors aussi en é dans PHPmyAdmin, ainsi que lors d'une requete en PHP (site en ISO ^^).

Alors voila il semble que mon probleme vien de l'export, mais, avec de nombreux test, je ne parvient toujour pas a recuperer ma BDD en un format ISO.

Pour info l'hebergeur dont j'essaye de me separer est Infomaniak.

Voila merci de votre aide Razz
(je vais p'tre m'inscrire moua Smile )
Invité





MessagePosté le: 30 Sep 2005, 12:25    Sujet du message: Répondre en citant

salut à tous,
J'avais le même soucis. Pas d'accent dans ma requête SQL. Solution simple (pour moi) : j'ai ouvert le fichier avec notepad et je l'ai enregistré en ANSI.
Du coup, je récupère tous mes accents dans ma requête SQL que je passe dans MySQL Control Center...
Invité





MessagePosté le: 12 Oct 2005, 15:28    Sujet du message: Répondre en citant

Grâce à vos réponses, j'ai mis "AllowAnywhereRecoding" à TRUE et j'ai chargé l'extension apache iconv.

Résultat, ma base est
- correctement exporté en iso-8859-1 SANS COMPRESSION
- pas exporté (elle n'apparait meme pas ds le fichier zip) en iso-8859-1 AVEC COMPRESSION (zip ou gzip)
-correctement exporté en utf-8 avec et sans compression (malheureusement l'utf8 convertis mes caractères accentués en "é" Rolling Eyes)

Y a-t-il une extension spéciale à activer pour que l'exportation en iso-8859-1 AVEC COMPRESSION fonctionne ?

Merci pour votre aide Wink
SebOmaX
Embryon


Inscrit le: 12 Oct 2005
Messages: 1
MessagePosté le: 12 Oct 2005, 15:38    Sujet du message: Répondre en citant

Oups, j'avais pas vu que j'avais posté en tant qu'invité. Désolé Embarassed

Je n'en reste pas moins curieux de savoir comment exporter une base compressée codée en iso Very Happy
Voir le profil de l'utilisateur Envoyer un message privé
Invité





MessagePosté le: 13 Oct 2005, 17:10    Sujet du message: Répondre en citant

Salut a vous,

J'ai un probleme de la meme veine, mais un peu plus complexe.
Je suis en cours de migration d'un serveur MS SQL Server vers un serveur MySQL 5.0.
J'ai utilisé un programme qui génère les instructions INSERT pour reinsérer mes données dans MySQL. Jusqu'ici OK...
La ou vient le probleme : dans une table j'ai un index PRIMARY et UNIQUE pour le login de l'utilisateur. Or dans le fichier exporté j'ai, par exemple, "René" et "Rene" comme noms tout a fait valide sous MS SQL Server (qui avait egalement les memes contraintes d'index). Lors de l'import j'obtient un message :
Citation:
ERROR 1062 : Duplicate entry 'Rene' for key 1


Qqn aurait une explication et une solution? J'ai des milliers d'utilisateurs, donc pas question de supprimer ou de changer leurs données...
MySQL est supposé utiliser UTF8 pour les chaines, mais apparement... soit ca marche pas, soit il faut changer qqchose...
Citation:
Global Variables

character_set_server = latin1
character_set_system = utf8

Le probleme se pose sur MyISAM et InnoDB indifferement...
Invité





MessagePosté le: 17 Oct 2005, 13:19    Sujet du message: Répondre en citant

Allez voir ca: http://dev.mysql.com/doc/refman/4.1/en/charset-upgrading.html
Ca explique bien vos problemes et comment les resoudres Smile

JB
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    PHPFrance Index du Forum -> SQL & Bases de données Toutes les heures sont au format GMT + 2 Heures
Aller à la page Précédente  1, 2, 3  Suivante
Page 2 sur 3

 
Sauter vers:  
Vous pouvez poster de nouveaux sujets dans ce forum
Vous pouvez répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum
Powered by phpBB © phpBB Group - PHPFrance est hébergé par Sivit