Inscrit le: 27 Juin 2005 Messages: 48 Localisation: Vannes
Posté le: 24 Oct 2005 17:22
Sujet du message: Text area et MySQL [réglé]
Bonjour,
J'aurais une question à propos de MySQL.
J'ai créé un formulaire de type <form></form> pour mettre à jour une base de données, avec différents champs.
L'un de ces champs est un textarea dans lequel je tape la biographie d'un auteur.
Seulement, quand je tape du texte dans ce textarea, et que je valide la mise à jour de la table, la requête SQL plante à cause des apostrophes dans mon texte.
C'est logique puisque ma requête est ainsi faite
Code:
$sql = "INSERT INTO auteurs VALUES('','$nom_auteur','$prenom_auteur','$photo','$site_internet','$bio')";
Donc $bio étant remplacé par mon texte, et celui-ci comportant des apostrophes, celles-ci causent problème avec les apostrophes de ma requête.
De plus, les passages à la ligne dans le texte que je tape dans ce même textarea ne sont pas enregistrés comme passage à la ligne. Dans la base, le texte est enregistré en un seul paragraphe sans aucun passage à la ligne.
Pourriez-vous m'aider pour que :
- les passages à la ligne soient bien pris en compte;
- les texte avec apostrophes soient acceptés (donc que les apostrophes du texte soient bien interprêtées indépendamment de celles de la requête SQL);
Merci _________________
Auteur
Message
AideInfo Administrateur Expert phpBB
Inscrit le: 11 Juin 2002 Messages: 3919
Posté le: 25 Oct 2005 10:11
Sujet du message:
Pour l'apostrophe, il faut la traiter par la ligne suivante.
Code:
$var = ereg_replace("'", "'", $var);
Pour ce qui est des retours à la ligne, je pense que c'est au niveau de la récupération qu'ils ne se font pas. Il faut utiliser la fonction nl2br().
Inscrit le: 27 Juin 2005 Messages: 48 Localisation: Vannes
Posté le: 25 Oct 2005 18:27
Sujet du message:
OK, je vais tenter ça.
Je te remercie encore _________________
Auteur
Message
Morcar Jeune posteur
Inscrit le: 27 Juin 2005 Messages: 48 Localisation: Vannes
Posté le: 26 Oct 2005 15:07
Sujet du message:
Bon, j'ai essayé les deux manip' que tu m'as données.
- la manip pour que les apostrophes soient acceptées ne corrige pas le problème. Lors de l'INSERT en base, ma requête bloque.
- pour la manip acceptant les passages à la ligne, ça fonctionne. Seulement quand je veux faire une modif de mon enregistrement, je récupère donc les données dans les champs, mais il m'affiche des <br /> partout où il y avait des passages à la ligne.
N'y a-t-il pas une manip inverse à faire pour que ces caractères disparaissent ?
Parce que si je tape un texte avec un retour à la ligne, que je l'édite ensuite en récupérant les données, comme il refait la manip nl2br à chaque fois, il me met deux retour à la ligne lors de l'édition. _________________
Auteur
Message
AideInfo Administrateur Expert phpBB
Inscrit le: 11 Juin 2002 Messages: 3919
Posté le: 26 Oct 2005 18:52
Sujet du message:
- Je n'ai pas relu mon message et n'ai pas vu que le forum a modifié une partie du code. La 2è apostrophe doit-être remplacée par le code &dièse39;, le dièse devant être remplacé par le symbole 'dièse' (en HTML, ça donne l'apostrophe). Tu peux aussi le remplacer par \', mais ça nécessite parfois d'autres traitements.
Inscrit le: 27 Juin 2005 Messages: 48 Localisation: Vannes
Posté le: 26 Oct 2005 20:02
Sujet du message:
J'ai trouvé un autre moyen en fait.
J'ai trouvé sur un site qu'en SQL, ce n'est pas avec un \ qu'on "dit" de ne pas prendre en compte le caractère suivant, mais en doublant la quote (j'avais tenté avec le \ mais ça ne changeait rien).
J'ai donc tenté ta commande mais en remplaçant une quote par une double quote (pas des guillemets, mais bien deux quotes) et ça marche.
J'ai donc fait (en me basant sur ta proposition) :
Code:
$var = ereg_replace("'", "''", $var);
OK pour la récupération, je tente ça tout de suite ;) _________________
Auteur
Message
Morcar Jeune posteur
Inscrit le: 27 Juin 2005 Messages: 48 Localisation: Vannes
Posté le: 04 Nov 2005 15:09
Sujet du message:
Bon, tout ça fonctionnait chez moi, quand je faisais mes pages avec mon EasyPHP, mais une fois transféré chez Free, ça ne marchait plus
Mon EasyPHP n'est peut-être pas à jour, ou alors Free a ajouté quelque chose au sien, car les apostrophes sont acceptées sans soucis et sans manip sur le MySQL de Free.
Mais bon, maintenant tout fonctionne, alors encore merci _________________
Vous pouvez poster de nouveaux sujets dans ce forum Vous pouvez répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum