Bonsoir !
Cela fait maintenant plusieurs jours que je recherche une réponse à ma question mais en vain. Donc je viens demander conseil.
Lorsque j'ajoute un contenu (texte et image) dans une textarea (modifié par tinyMCE), le tout s’enregistre correctement au niveau de la base de données et le rendu est correctement affiché une fois passé dans la fonction stripslashes().
Le problème vient lors de l'édition, le texte est bien repris de la base de données, mais la fin de celui-ci est également ajouté au début de celui-ci. Voici un exemple visuel qui sera plus parlant :
Texte de base :
Texte lors de l'édition :
On peut voir que le texte de fin se trouve également au début et qu'il y a une sorte de balise mal fermée...
J'ai essayé toutes sortes de méthodes d'échappements, mais je n'y arrive pas. Je me demande si cela peut venir de tinyMCE ou d'un plugin que je lui ai ajouté "responsiveFileManager" (un gestionnaire de fichier).
Dans la base de données, le contenu est très bien stocké :
<p>avant</p>
<p> </p>
<p><img src=\"/source/board.png\" alt=\"board\" width=\"289\" height=\"217\" /></p>
<p> </p>
<p><strong>après</strong></p>
On voit bien que les guillemets sont échappés, ce qui est normal. Comme je l'ai dit, le contenu s'affiche normalement, mais je ne comprend vraiment pas le problème. Donc si quelqu'un à eu un problème similaire ou sait de quoi cela peut retourner, je vous remercie d'avance !
Pour informations :
J'utilise un MVC fait maison mixant des idées du tutoriel de Grafikart, CakePHP et puis des miennes. Le contrôleur qui transmet les données à la vue pour cette page récupère simplement les données via le model approprié avec une simple requête de sélection en fonction de l'id.
Rien n'est traité sauf le contenu pour l'affichage, comme ceci :
$d"page"]->content_cnt = stripslashes($d"page"]->content_cnt);
Mon tableau contient les valeurs de retournées de la requêtes SQL avec comme clé le nom du champ dans la base de données et en valeur, la valeur du champ. Ensuite je transmet à la vue qui l'affiche sans tierce traitement.
Après avoir cherché un moment j'ai trouvé une solution qui fonctionne.
Cela venait des guillemets qui étaient échappés (alors que je ne le demande pas). Du coup, j'ai bidouiller le truc, ça m'énerve, c'est moche, mais ça fonctionne.
Lors de l'insertion dans la base de données je remplace les guillemets par ". Cela évite qu'il soit échappé...