Bonjour,
Actuellement entrain de coder un forum pour un projet personnel, je rencontre un problème avec mon code (ou plutôt avec une requête SQL). Si ce n'est pas le bon endroit, je m'en excuse d'avance.
Voilà alors j'ai installé TinyMCE pour que tous mes textareas prennent l'éditeur WYSIWYG TinyMCE. Comme c'est un forum, un utilisateur peut poster un topics et un commentaire sur un topic (normal).
Voici le code d'insertion dans la BDD :
if(isset($_POST['topics_titre'],$_POST['topics_contenu'])){
if(!empty($_POST['topics_titre']) AND !empty($_POST['topics_contenu'])){
$titre = htmlspecialchars($_POST['topics_titre']);
$contenu = htmlentities($_POST['topics_contenu'], ENT_HTML5, 'UTF-8');
$topics = $bdd->query("INSERT INTO topics (subcateg_id,topics_titre,topics_contenu,topics_auteurid,topics_date) VALUES ($id,'$titre','$contenu',$id_m,now())");
$message = "Sujet bien posté !";
} else {
$message = "Veuillez remplir tous les champs du formulaire";
}
}
L'insertion marche bien si le contenu ne possède pas de guillements " ou ', enfin c'est ce que j'en conclue car j'ai testé la requête SQL en dur dans phpMyAdmin, voici ce que MySQL me retourne comme erreur :
J'aimerais qu'un script PHP me traite automatiquement les messages du genre " J'aime " en : " J\'aime ", car je pense que l'erreur vient de là.
Je pense aussi que l'erreur vient du fait du premier accent (ê
) qui stop la requête SQL car MySQL voit un point virgule, non ?
Merci d'avance pour votre aide,
Cordialement,
DayTech.
Bonjour DayTech,
je te propose d'utiliser la fonction addslashes() pour ajouter des backslashes sur tes quote et double quote.
À l'inverse, utilises stripslashes() afin de les retirer (lors de l'affichage par exemple).
En revanche je ne vois pas l'intérêt d'utiliser les fonctions html (entities, specialchars...) pour stocker le texte en base de données.
Je te propose également de bien vérifier l'encodage de ta base de données (UTF8).
bon courage pour ton projet perso !
;)
Bonjour Pierre Terrier,
Je te remercie, la fonction addslashes a résolu mon problème.
J'avais ajouté la fonction htmlentities car au début je croyait que ça allait résoudre mon problème, mais non... :)
Je te remercie ! Bonne journée :)