bonjour,
j'viens de passer la journée à lire une quantité de posts sur plusieurs forums, qui traitent des jeux de caractères (utf-8...), des formulaires html qui alimentent des bases de données, des tris que l'on peut faire sur des requètes SQL qui sont faussées à cause des accents, etc...
et j'avoue que je suis de nouveau complètement perdu!
je m'occupe de plusieurs sites, et malheureusement les configs chez les hébergeurs ou en local sont tous différents, notamment sur la version de mysql et ses jeux de caractères, magic_quotes_gpc...
bref, ça fait 2 fois que je change de méthode pour récupérer les données de formulaires et les stocker dans une BD, puis les afficher en html, et j'ai à nouveau un problème.
mon cas est simple et ultra classique:
* j'ai un formulaire qui me permet de créer ou modifier des données (balises <input> <textarea>...)
* ces données sont stockées dans une base MySql
* j'affiche ensuite ses données dans une page html
là où je me prends la tête et où je n'arrive pas à choper la bonne info sur les forums, c'est: quel traitement dois-je faire en PHP:
* pour passer des variables $_POST à MySql ?
* pour passer des requètes SQL à l'affichage simple Html?
* pour passer des requètes SQL aux champs par défaut du formulaire quand je veux modifier une ligne?
avant, je faisais avant inclusion dans la base:
pour afficher simplement une donnée Sql en html, je faisais:
et quand je voulais modifier une ligne, je mettais dans la balise input ou textarea du formulaire, la valeur par défaut:
puis, j'ai eu un problème lors de dump des bases SQL où j'ai perdu tous les caractères spéciaux français, et j'ai donc modifié mon code en mettant avant insertion dans la base:
comme çà, je n'avais plus de traitement à faire pour afficher en html après ou pour modifier le champ par le formulaire input (sauf pour le textarea où je créais la fonction inverse à nl2br()...)
malheureusement, avec cette méthode, les tries de la base sont moyens, et le nombre de caractères VARCHAR autorisé dans la table SQL sont faussés puisqu'un simple "é" par exemple prend 8 caractères au lieu d'1, et ça me gène...
je souhaite donc savoir comment vous vous faites pour faire çà ???
si tout bien passer en UTF-8, suffit-il juste de mettre "addslashes" avant la base puis "stripslashes" en sortie, et je ne me soucis plus des "éàùç<>'"" ?
désolé pour ce mail à rallonge...
si vous avez des liens vers un résumé des choses à faire, que j'aurais pas trouvé, chuis preneur
j'viens de passer la journée à lire une quantité de posts sur plusieurs forums, qui traitent des jeux de caractères (utf-8...), des formulaires html qui alimentent des bases de données, des tris que l'on peut faire sur des requètes SQL qui sont faussées à cause des accents, etc...
et j'avoue que je suis de nouveau complètement perdu!
je m'occupe de plusieurs sites, et malheureusement les configs chez les hébergeurs ou en local sont tous différents, notamment sur la version de mysql et ses jeux de caractères, magic_quotes_gpc...
bref, ça fait 2 fois que je change de méthode pour récupérer les données de formulaires et les stocker dans une BD, puis les afficher en html, et j'ai à nouveau un problème.
mon cas est simple et ultra classique:
* j'ai un formulaire qui me permet de créer ou modifier des données (balises <input> <textarea>...)
* ces données sont stockées dans une base MySql
* j'affiche ensuite ses données dans une page html
là où je me prends la tête et où je n'arrive pas à choper la bonne info sur les forums, c'est: quel traitement dois-je faire en PHP:
* pour passer des variables $_POST à MySql ?
* pour passer des requètes SQL à l'affichage simple Html?
* pour passer des requètes SQL aux champs par défaut du formulaire quand je veux modifier une ligne?
avant, je faisais avant inclusion dans la base:
$donnee = nl2br(AddSlashes(htmlspecialchars($_POST['donnee'])));
pour afficher simplement une donnée Sql en html, je faisais:
$donnee = stripslashes($donnee)
et quand je voulais modifier une ligne, je mettais dans la balise input ou textarea du formulaire, la valeur par défaut:
$donnee = stripslashes(strip_tags($donnee));
puis, j'ai eu un problème lors de dump des bases SQL où j'ai perdu tous les caractères spéciaux français, et j'ai donc modifié mon code en mettant avant insertion dans la base:
$donnee = nl2br(htmlentities($_POST['donnee'], ENT_QUOTES));
comme çà, je n'avais plus de traitement à faire pour afficher en html après ou pour modifier le champ par le formulaire input (sauf pour le textarea où je créais la fonction inverse à nl2br()...)
malheureusement, avec cette méthode, les tries de la base sont moyens, et le nombre de caractères VARCHAR autorisé dans la table SQL sont faussés puisqu'un simple "é" par exemple prend 8 caractères au lieu d'1, et ça me gène...
je souhaite donc savoir comment vous vous faites pour faire çà ???
si tout bien passer en UTF-8, suffit-il juste de mettre "addslashes" avant la base puis "stripslashes" en sortie, et je ne me soucis plus des "éàùç<>'"" ?
désolé pour ce mail à rallonge...
si vous avez des liens vers un résumé des choses à faire, que j'aurais pas trouvé, chuis preneur