Apostrophes et guillemets SQL [Résolu/Fermé]

Signaler
-
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
-
Bonjour,

Tout d'abord j'ai déjà exposé mon problème hier mais je m'étais trompé dans le type de problème ce qui a donné un titre un peu HS donc je recommence:

Je dois faire une page d'accueil dans laquelle je peux modifier le contenu et le titre. Dans ma bdd le "accueil_contenu_fr" est de type TEXT et le "accueil_titre_fr" est de type VARCHAR.

Le problème c'est que lorsque dans le titre ou le contenu j'ai le malheur de placer une apostrophe j'ai une erreur de ce type (dans ce cas j'ai écris l'eau dans mon titre):

Erreur de syntaxe pr?s de 'eau', accueil_fr_contenu='


En bidouillant tout à l'heure j'ai réussi à afficher les apostrophes... Mais les guillemets ne marchaient plus.
Voici une partie du code, si quelqu'un a besoin du reste je le mettrait mais je ne pense pas que le problème vienne d'ailleurs:

$titre=($_POST['accueil_fr_titre']);
$contenu= ($_POST['accueil_fr_contenu']);

$requete="UPDATE accueil_fr SET accueil_fr_titre='$titre', accueil_fr_contenu='$contenu'";


Comme vous vous en doutez j'aimerais pouvoir afficher des apostrophes ET des guillemets dans mes titres/textes.

6 réponses

Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
354
Me revoilà... Désolé ;-)

Je crois que pour éviter d'avoir tout problème d'insertion un mysql_real_escape_string() permet de transmettre ta chaîne quelque soit le caractère qui pourrait clore ta chaine de caractère.

Tu aurais quelque chose du genre :

$titre=mysql_real_escape_string($_POST['accueil_fr_titre']);


et après (normalement) tu peux insérer $titre sans problème...
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Tiens bonjour Breub :)
Merci beaucoup je galérais depuis hier mais ça marche enfin grâce à toi!!!

J'ai une dernière question, mysql_real_escape_string() ne pose pas de problème de sécurité? Car même si dans l'absolu l'admin sera le seul à avoir accès à ces modifications j'aimerais utiliser cette fonction ailleurs.
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
354
Non c'est d'ailleurs presque une obligation de sécurité de le mettre, ça permet notamment d'éviter les injections sql. J'aurais dû y penser hier mais il y a des jours...


https://www.commentcamarche.net/contents/56-attaques-par-injection-de-commandes-sql

Donc à chaque variable postée (c'est à dire qui vient de l'utilisateur), tu dois faire un mysql_real_escape_string() avant d'interroger ta base...

Bonne continuation.
Ah bah tu résous tout mes problèmes en même temps... Merci encore ! :)
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
354
De rien ;-)

Bonne continuation...
Re!
J'ai un nouveau soucis :(

En faite depuis que j'utilise les "mysql_real_escape_string()" j'ai des soucis au niveau du TEXTAREA que j'utilise: je ne peux plus mettre de limite de taille sur une ligne, avant j'avais mit un "max-lenght" pour les images dans le css, et pour ce qui est de la taille du texte, le script tinyMCE que j'utilise allait tout seul à la ligne... Maintenant je peux écrire un nombre infini de caractère sur 1 ligne dans mon textarea (qu'on peut faire défilé avec un scroll du coup) et quand j'enregistre ça dans ma bdd pour le ressortir ensuite, ça ressort tout sur une ligne en sortant du "cadre" du site... D'un coté je me dis que ça n'a rien à voir avec la fonction, de l'autre je n'ai fais aucune modifications à part celle là.
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
354
Perso je fais ça :
<textarea rows='6' cols='30'name='Descriptif' onfocus='if(this.value==\"Entrez le descriptif ici...\")this.value=\"\"'>Entrez le descriptif ici...</textarea>

et je n'ai ni scroll et je revient à la ligne...et ce en utilisant mysql_real_escape_string (qui n'a rien à voir avec le petit soucis...)
Ok donc ça n'a rien à voir avec mysql_real_escape_string... Merci pour l'aide en tout cas :p
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
354
Rien du tout puisque mysql_real_escape_string() agit après l'envoie du formulaire et que ton problème survient avant. Si mon textarea ne fonctionne pas c'est qu'il y a un problème dans ton css(sûrement...)

Bonne continuation
C'est peut-être lié au script tinymce... Mon css marchait très bien avant
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
354
pitête... :-D