|
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.
|
| 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 |
Posté le: 23 Juil 2005, 18:13 Sujet du message: |
|
|
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  _________________ Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse  |
|
|
 |
chab42 Embryon
Inscrit le: 03 Juin 2005 Messages: 9 Localisation: Rive de Gier |
Posté le: 08 Aoû 2005, 23:35 Sujet du message: porblème d'accents |
|
|
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 |
|
|
 |
Cyrano Ganesha

Inscrit le: 07 Fév 2005 Messages: 17887 Localisation: Paris XIII |
Posté le: 09 Aoû 2005, 10:17 Sujet du message: |
|
|
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  |
|
|
 |
chab42 Embryon
Inscrit le: 03 Juin 2005 Messages: 9 Localisation: Rive de Gier |
Posté le: 09 Aoû 2005, 19:03 Sujet du message: explications complémentaires à mon problème |
|
|
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", $email, time()+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... |
|
|
 |
Cyrano Ganesha

Inscrit le: 07 Fév 2005 Messages: 17887 Localisation: Paris XIII |
Posté le: 09 Aoû 2005, 19:27 Sujet du message: |
|
|
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  |
|
|
 |
chab42 Embryon
Inscrit le: 03 Juin 2005 Messages: 9 Localisation: Rive de Gier |
Posté le: 18 Sep 2005, 21:37 Sujet du message: De retour |
|
|
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. |
|
|
 |
Cyrano Ganesha

Inscrit le: 07 Fév 2005 Messages: 17887 Localisation: Paris XIII |
Posté le: 18 Sep 2005, 21:55 Sujet du message: |
|
|
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  |
|
|
 |
chab42 Embryon
Inscrit le: 03 Juin 2005 Messages: 9 Localisation: Rive de Gier |
Posté le: 18 Sep 2005, 22:22 Sujet du message: J'aimerai bien... |
|
|
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 ! |
|
|
 |
Cyrano Ganesha

Inscrit le: 07 Fév 2005 Messages: 17887 Localisation: Paris XIII |
Posté le: 18 Sep 2005, 22:26 Sujet du message: |
|
|
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  |
|
|
 |
Mobman02 Invité
|
Posté le: 27 Sep 2005, 18:38 Sujet du message: |
|
|
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
(je vais p'tre m'inscrire moua ) |
|
|
 |
Invité
|
Posté le: 30 Sep 2005, 12:25 Sujet du message: |
|
|
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é
|
Posté le: 12 Oct 2005, 15:28 Sujet du message: |
|
|
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 "é" )
Y a-t-il une extension spéciale à activer pour que l'exportation en iso-8859-1 AVEC COMPRESSION fonctionne ?
Merci pour votre aide  |
|
|
 |
SebOmaX Embryon
Inscrit le: 12 Oct 2005 Messages: 1
|
Posté le: 12 Oct 2005, 15:38 Sujet du message: |
|
|
Oups, j'avais pas vu que j'avais posté en tant qu'invité. Désolé
Je n'en reste pas moins curieux de savoir comment exporter une base compressée codée en iso  |
|
|
 |
Invité
|
Posté le: 13 Oct 2005, 17:10 Sujet du message: |
|
|
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é
|
|
|
 |
|
|
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
|