Bonjour à vous.
Pour _activmik
Voici la structure de ma table news :
Code : Tout sélectionner
-- phpMyAdmin SQL Dump
-- version 2.11.3
-- http://www.phpmyadmin.net
--
-- Serveur: XXXXX.sql.free.fr
-- Généré le : Mar 26 Août 2008 à 14:46
-- Version du serveur: 5.0.67
-- Version de PHP: 5.2.5
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Base de données: `XXXXX`
--
-- --------------------------------------------------------
--
-- Structure de la table `site_news`
--
CREATE TABLE IF NOT EXISTS `site_news` (
`news_id` int(11) NOT NULL auto_increment,
`news_auteur` varchar(255) character set latin1 collate latin1_general_ci NOT NULL,
`news_date` datetime NOT NULL,
`news_auteur_modification` varchar(255) character set latin1 collate latin1_general_ci default NULL,
`news_date_modification` datetime default NULL,
`news_titre` varchar(255) character set latin1 collate latin1_general_ci NOT NULL,
`news_contenu` blob NOT NULL,
`news_destinataire` int(1) NOT NULL default '1',
`news_is_supprimee` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`news_id`),
KEY `news_is_supprimee` (`news_is_supprimee`),
KEY `news_auteur` (`news_auteur`),
KEY `news_auteur_modification` (`news_auteur_modification`),
KEY `news_date` (`news_date`),
KEY `news_date_modification` (`news_date_modification`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Table des news et messages' AUTO_INCREMENT=13 ;
Pour @rthur, je vais regarder pour htmlentities..., mais ce qui me surprend le plus, ce que jusqu'à présent, je faisais toujours comme actuellement et ça fonctionnait... (traitement de base : trim() + addslash())... et là... pffff !?
A ce propos, je sais que ce n'est plus vraiment du SQL "pur", mais quel "traitement" me conseillez vous de faire avant l'insertion dans la BDD et inversement pour l'affichage... ?
Voici au cas où mes fonctions actuelles :
Pour l'insertion :
function cleanData($Variable){
//On vérifie l'activation ou non des magic_quote
if(test_magic_quotes() == FALSE){
//Magic_quote désactivées donc on traite les données
//ATTENTION cette fonction n'est pas récursive !!!!
//On doit donc rentrer dans le tableau
if (is_array($Variable)) {
//On parcours le contenu du tableau
foreach ($Variable as $i => $Contenu) {
//Suppression des espaces
$Variable[$i] = trim($Contenu);
//Echappement des caractères spéciaux MySQL (',",\n,\r,NULL...)
$Variable[$i] = addslashes($Contenu);
}
}
//Sinon ce n'est pas un tableau (champ simple) donc on traite simplement
else{
//Suppression des espaces
$Variable = trim($Variable);
//Echappement des caractères spéciaux MySQL (',",\n,\r,NULL...)
//$Variable = mysql_real_escape_string($Variable);
$Variable = addslashes($Variable);
}
}
else{
//Magic_quote activées, donc on ne rajoute pas de caractères d'échappement
//ATTENTION cette fonction n'est pas récursive !!!!
//On doit donc rentrer dans le tableau
if (is_array($Variable)) {
//On parcours le contenu du tableau
foreach ($Variable as $i => $Contenu) {
//Suppression des espaces
$Variable[$i] = trim($Contenu);
}
}
//Sinon ce n'est pas un tableau (champ simple) donc on traite simplement
else{
//Suppression des espaces
$Variable = trim($Variable);
}
}
//On retourne la variable
return $Variable;
}
Pour l'affichage après un select :
function displayData($Variable){
//On vérifie l'activation ou non des magic_quote
if(test_magic_quotes() == FALSE){
//Magic_quote désactivées donc on traite les données
//ATTENTION cette fonction n'est pas récursive !!!!
//On doit donc rentrer dans le tableau
if (is_array($Variable)) {
//On parcours le contenu du tableau
foreach ($Variable as $i => $Contenu) {
//Conversion des caractères spéciaux HTML
$Variable[$i] = htmlentities($Contenu);
}
}
//Sinon ce n'est pas un tableau (champ simple) donc on traite simplement
else{
//Conversion des caractères spéciaux HTML
$Variable = htmlentities($Contenu);
}
}
else{
//Magic_quote activées, donc on supprime les caractères d'échappement "\"
//ATTENTION cette fonction n'est pas récursive !!!!
//On doit donc rentrer dans le tableau
if (is_array($Variable)) {
//On parcours le contenu du tableau
foreach ($Variable as $i => $Contenu) {
//Suppression des backslashes
$Variable[$i] = stripslashes($Contenu);
}
}
//Sinon ce n'est pas un tableau (champ simple) donc on traite simplement
else{
//Suppression des backslashes
$Variable = stripslashes($Variable);
}
}
//On retourne la variable
return $Variable;
}
Merci encore pour votre aide car je reste bloqué sur ces **** de caractères spéciaux !
Cordialement,
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]
EDIT
Bon, je n'ai toujours pas compris le pourquoi du comment...
Toutefois, bien que réticent à basculer en UTF-8... j'ai mis moins de temps à le faire que de gratter dans tous les sens...
Donc je suis toujours preneur d'une explication (je serai moins bête...

), mais j'ai contourné le problème

.
Merci à tous quand même