Forum AideInfo.com Index du Forum

Ajouter cette page sur un site de bookmarks
scoopeo  fuzz  tapemoi  nuouz  bookeet  pioche  Partagez sur del.icio.us  Partagez sur digg.com  Partagez sur furl.net  Partagez sur Yahoo! Mon Web 2.0  Partagez sur StumbleUpon  Partagez sur Google Bookmarks  Partagez sur Technorati  Partagez sur blinklist  Partagez sur Newsvine  Partagez sur ma.gnolia  spurl  simpy

Rechercher Liste des Membres Groupes d'utilisateurs Profil Connexion S'enregistrer Messagerie privéeMessagerie privée   Règles du forum Retour au siteRetour au site
  Poster un nouveau sujet Répondre au sujet Forum AideInfo.com Index du Forum » Webmastering - langages du web   
Text area et MySQL [réglé]
Auteur Message
Morcar
Jeune posteur


Inscrit le: 27 Juin 2005
Messages: 48
Localisation: Vannes

MessagePosté le: 24 Oct 2005 17:22
MessageSujet du message: Text area et MySQL [réglé]
Répondre en citant

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
_________________
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur  
 
Auteur Message
AideInfo
Administrateur
Expert phpBB


Inscrit le: 11 Juin 2002
Messages: 3919

MessagePosté le: 25 Oct 2005 10:11
MessageSujet du message:
Répondre en citant

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().

Code:
$var = nl2br($var);

_________________
Services gratuits

phpBB-Tutoriaux, tous les tutoriaux pour débuter et utiliser phpBB
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur  
 
Auteur Message
Morcar
Jeune posteur


Inscrit le: 27 Juin 2005
Messages: 48
Localisation: Vannes

MessagePosté le: 25 Oct 2005 18:27
MessageSujet du message:
Répondre en citant

OK, je vais tenter ça.
Je te remercie encore
_________________
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur  
 
Auteur Message
Morcar
Jeune posteur


Inscrit le: 27 Juin 2005
Messages: 48
Localisation: Vannes

MessagePosté le: 26 Oct 2005 15:07
MessageSujet du message:
Répondre en citant

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.
_________________
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur  
 
Auteur Message
AideInfo
Administrateur
Expert phpBB


Inscrit le: 11 Juin 2002
Messages: 3919

MessagePosté le: 26 Oct 2005 18:52
MessageSujet du message:
Répondre en citant

- 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.

- J'ai bien parlé de "récupération". Il faut donc l'utiliser non pas à l'insertion, mais avant l'affichage du contenu de la table. Je vais bientôt traiter ça sur le site.
_________________
Services gratuits

phpBB-Tutoriaux, tous les tutoriaux pour débuter et utiliser phpBB
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur  
 
Auteur Message
Morcar
Jeune posteur


Inscrit le: 27 Juin 2005
Messages: 48
Localisation: Vannes

MessagePosté le: 26 Oct 2005 20:02
MessageSujet du message:
Répondre en citant

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 ;)
_________________
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur  
 
Auteur Message
Morcar
Jeune posteur


Inscrit le: 27 Juin 2005
Messages: 48
Localisation: Vannes

MessagePosté le: 04 Nov 2005 15:09
MessageSujet du message:
Répondre en citant

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 Laughing
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 Wink
_________________
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur  
 
  Poster un nouveau sujet  Répondre au sujet Forum AideInfo.com Index du Forum » Webmastering - langages du web
Réponse rapide
Nom d'utilisateur:

Very Happy Smile Sad Surprised Shocked Confused Cool Laughing Mad Razz Embarassed Crying or Very sad Evil or Very Mad Twisted Evil Rolling Eyes Wink Exclamation Question Idea Arrow Neutral Mr. Green Raleur Plié de rire
Options
Citer le dernier message
Question anti-robots:
Cette question est malheureusement nécessaire pour empêcher les robots publicitaires de poster des messages sur ce forum. Merci de votre compréhension. (sensible à la casse( Majuscules/minuscules))
Saisissez la somme de 2 et 2, et retirez-y 1, en chiffres.
Votre réponse:
 

Informations
Page 1 sur 1
Permissions: 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
Montrer les messages depuis:   
Page 1 sur 1
 
Sauter vers:  


Powered by phpBB v2 © 2001, 2005 phpBB Group ¦ Theme : Creamy White, modifié par Eric FICHOT pour AideInfo.com