Bon[jour|soir]

j'ai un problème avec l'enregistrement de mes données.
Voila, j'a un fichier excel dont j'extrait le contenu pour l'enregistrer en base de donnée.
Seulement, certaines données comportent des caractères accentués et lors de l'enregistrement, la premiere partie du mot sans accent est enregistrée seulement (par exemple, "Tarte fine aux pommes caramélisées" s'enregistre en "Tarte fine aux pommes caram").

Portant lorsque j'effectue une recherche, elle se fait bien avec le mot accentué : j'ai mis une contrainte unique sur le champ et lorsqu'elle n'est pas respectée, cake me met un joli message comme quoi je ne respecte pas la contrainte.

Avant de faire l'enregistrement, je recherche si le titre existe, s'il n'existe pas j'enregistre or pour le genre de titre accentués, la recherche me renvoie vide et lorsque j'enregistre ce même titre accentué, cake me donne l'erreur sur ma contrainte, c'est pour quoi je peux affirmer que la recherche s'effectue avec tous les caractères (accentués en particulier) et l'enregistrement s'arrête pour je ne sais quelle raison au premier caractères accentué.

J'espère donc que quelqu'un puisse m'éclairer sur le pourquoi du comment de cette histoire

merci !

ps : je suis avec Cake 1.3, j'avais commencé mon projet bien avant que cake 2.0 ne sorte ;)

3 réponses


Laurent.
Réponse acceptée

Y'a un truc dans config/database.php dans le tableau pour la configuration de la BDD.

//'encoding' => 'utf8',

et bien décommente ça et ça devrait le faire, sinon, j'ai pas compris à quel niveau était ton problème (à l'exportation excel ? à l'importation dans la BDD via je ne sais quoi ? à l'importation via CakePHP ?) :)

Voili voulou ! :)

Flohw
Auteur
Réponse acceptée

laisse en fait... j'ai trouvé
ca vient de l'encodage des caracteres effectivement, mais du début à la fin...
j'avais utilisé utf8_encode mais pas au bon endroit, j'ai corrigé et ca fonctionne

merci quand meme de ton aide :)

Flohw
Auteur

elle est décommentée cette ligne, je travaille toujours en utf8
ca se situe à l'enregistrement dans la base de donnée via cake
l'exportation excel se fait avec une classe que j'ai trouvé : excel_reader, http://code.google.com/p/php-excel-reader/

pour mes excplications, je détaille mon fichier excel :
premiere colonne : nom du dvd
deuxieme colonne : date de l'emission
troisieme colonne : nom de la recette
quatrieme colonne : nom de l'emission
(se sont des emissions qui diffusent des recettes de cuisine, style a vous fourcettes (direct 8), côté cuisine (FR3)...)

voila mes étapes :

  1. Je lit mon fichier ligne par ligne (que je traite ligne par ligne également, les étapes suivantes se font pour une ligne du fichier excel)
  2. je regarde si l'émission existe, si elle n'existe pas je l'enregistre, je récupère son id (pour les liaisons des tables)
  3. je regarde si le numero du dvd existe pour l'emission, s'il n'existe pas je l'enregistre, je récupère l'id
  4. a) je regarde si le nom de la recette existe (sans tenir compte du dvd et de l'emission)
    b) si elle n'xiste pas je l'enregistre

(a) lorsque je fais l'etape 4a, qu'il y ait accents ou non, ca marche tres bien.
(b) lorsque je fais l'etape 4, j'ai un titre du style "Tarte fine aux pomme caramélisées" (qui s'affiche au débug, fait dans le modèle), seul "Tart fine aux pomme caram" s'enregiste
Si je recommence avec le même fichier, lors de létape 4a, il ne trouve pas le nom de la recette, je peux donc etre certain de mon (a) et du coup l'etape 4b plante et cake me dit que je ne respecte pas la contrainte unique du champ nom de ma table

est-ce plus clair ?

merci :)