{MySQL} Bloquage Accent.
Fermé
pierlucm
Messages postés
19
Date d'inscription
lundi 9 juillet 2007
Statut
Membre
Dernière intervention
9 décembre 2011
-
5 janv. 2010 à 15:39
dam75 Messages postés 1041 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 - 5 janv. 2010 à 17:24
dam75 Messages postés 1041 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 - 5 janv. 2010 à 17:24
A voir également:
- {MySQL} Bloquage Accent.
- E avec accent - Guide
- Mysql community server - Télécharger - Bases de données
- Comment faire un accent circonflexe sur un clavier azerty ✓ - Forum Réseaux sociaux
- Mysql error in file: /engine/classes/mysql.php at line 53 ✓ - Forum Réseaux sociaux
- U accent grave clavier ✓ - Forum Logiciels
1 réponse
dam75
Messages postés
1041
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
21 février 2023
67
5 janv. 2010 à 17:24
5 janv. 2010 à 17:24
Bonjour,
Il y a plusieurs endroits où tu dois gérer le codage des caractères :
- le codage de la page HTML, défini par la fonction header(...) de PHP (ex : header('Content-Type: application/xhtml+xml; charset=iso-8859-1',true);) , ainsi que par la balise <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- le codage de la base de données, défini lors de la création des tables et des champs (voir la documentation de Mysql)
- le codage de la connexion au serveur Mysql, défini SET NAMES
Le mieux pour éviter les ennuis est que l'ensemble de ces paramètres soient tous mis à la même valeur, je te recommande UTF8, qui permet de gérer correctement l'ensemble des langues possibles (ce qui n'est pas le cas de iso-8859 !)
Par ailleurs sur ta requête $sql = "UPDATE db_accueil SET data='$data' WHERE 1 ;";
3 choses :
1/ Tu dois absolument "protéger" les chaînes via mysql_real_escape_string ou, au pire, mysql_escape_string. Sinon, le moindre ' dans la chaîne suffira à faire échouer la requête, sans compter les risques d'injection SQL (utilisation de cette faille pour faire passer une requête normalement interdite au système, je n'en dis pas plus :) )
2/ Normalement, et si tu respectes bien le point 1/, tu ne devras avoir besoin de rien.
Au pire, tu peux aussi forcer l'encodage via les fonctions PHP utf8_encode ou utf8_decode par exemple.
3/ Ca n'a rien à voir, mais tu es sûr de ton WHERE 1 ?? cela signifie que TOUS les enregistrements seront mis à jour, ce qui est rarement souhaité :)
Bon courage,
Il y a plusieurs endroits où tu dois gérer le codage des caractères :
- le codage de la page HTML, défini par la fonction header(...) de PHP (ex : header('Content-Type: application/xhtml+xml; charset=iso-8859-1',true);) , ainsi que par la balise <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- le codage de la base de données, défini lors de la création des tables et des champs (voir la documentation de Mysql)
- le codage de la connexion au serveur Mysql, défini SET NAMES
Le mieux pour éviter les ennuis est que l'ensemble de ces paramètres soient tous mis à la même valeur, je te recommande UTF8, qui permet de gérer correctement l'ensemble des langues possibles (ce qui n'est pas le cas de iso-8859 !)
Par ailleurs sur ta requête $sql = "UPDATE db_accueil SET data='$data' WHERE 1 ;";
3 choses :
1/ Tu dois absolument "protéger" les chaînes via mysql_real_escape_string ou, au pire, mysql_escape_string. Sinon, le moindre ' dans la chaîne suffira à faire échouer la requête, sans compter les risques d'injection SQL (utilisation de cette faille pour faire passer une requête normalement interdite au système, je n'en dis pas plus :) )
2/ Normalement, et si tu respectes bien le point 1/, tu ne devras avoir besoin de rien.
Au pire, tu peux aussi forcer l'encodage via les fonctions PHP utf8_encode ou utf8_decode par exemple.
3/ Ca n'a rien à voir, mais tu es sûr de ton WHERE 1 ?? cela signifie que TOUS les enregistrements seront mis à jour, ce qui est rarement souhaité :)
Bon courage,