[PHP/MySQL] .:: mysql_real_escape_string ::.

Résolu/Fermé
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 - 3 nov. 2006 à 13:20
 craftmandu30 - 13 mars 2015 à 19:11
Bonjour,

J'ai un formulaire dans lequel les utilisateurs peuvent entrer un commentaire ...

Sur un submit j'enregistre ce com dans ma BDD (MySQL) en protégeant la string à l'aide de la fonction mysql_real_escape_string() ...

Ensuite, je réaffiche ces com et on peut en rajouter ==> concaténation de string.

Quand un nouveau com est inséré, je récupère l'ancien et je fais :
// on concat l'ancien et le nouveau commentaire
$nouveauCommentaireSQL=mysql_real_escape_string($ancienCommentaire)."\n".mysql_real_escape_string($_POST['COMMENTAIRES']);
echo$nouveauCommentaireSQL;
	
// enregistrement dans la BD
$requeteSetCommentaire='UPDATE AUTRE_DMDE SET COMMENTAIRES = "'.$nouveauCommentaireSQL.'" WHERE AUTRE_DMDE_ID ='.$id;
$resultatSetCommentaire=mysql_query($requeteSetCommentaire) or die ("Exécution de la requête impossible".$requeteSetCommentaire."<br />".mysql_error()); 

Quand je récupère les commentaires dans ma base de données de la façon suivante :
$requeteCommentaire="SELECT COMMENTAIRES FROM AUTRE_DMDE WHERE AUTRE_DMDE_ID=".$id;
$resultatCommentaire=mysql_query($requeteCommentaire) or die ("Exécution de la requête impossible".$requeteCommentaire."<br />".mysql_error());
$arrayCommentaire=mysql_fetch_array($resultatCommentaire);
$ancienCommentaire=$arrayCommentaire[0];

je perds tous les sauts de ligne et la concaténation des strings donnent un truc pas mal moche !!

Dans ma BDD, les données sont pourtant bonnes et je vois dans PHP MyAdmin les sauts de lignes ...

Je ne sais pas comment les récupérer (peut-être existe-t-il une fonction) pour ne pas perdre tout ça !!

Merci d'avance pour vos réponses !! J'espère avoir été claire ...

;-)

2 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
6 nov. 2006 à 16:30
Bonjour,

Es-tu sûre de vraiment perdre les sauts de lignes ? Ne serait-ce pas plutôt qu'en html, un saut de ligne n'a aucune valeur ? Par exemple, lorsque tu affiches tes données, essaie de regarder le code source de ta page. Si les sauts de lignes apparaissent (par des sauts de ligne, bien sûr, pas des \n), alors c'est qu'ils ne sont pas perdus.
Dans ce cas, tu peux les "récupérer" en utilisant la fonction php suivante :
$ancienCommentaire = str_replace("\n", "<br />", $ancienCommentaire)
qui va donc remplacer les retours à la ligne "standards" par la balise html qui va bien.

En espérant que ça aide,

Xavier
0
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 14
7 nov. 2006 à 08:58
Belle !!

CA MARCHE !!

Merci beaucoup pour ton aide ... claire, nette, précise et surtout efficace ;-)

De très problématique ce problème passe direct dans la catégorie RESOLU ! Ca fait plaisir !

Encore merci ...
0
craftmandu30
13 mars 2015 à 19:11
vous pouvez m'aidez svp car je ses pas comment remplacer la commande mysql_real_escape_string pour que je ne puisse pas faire d'espace dans mon <input type"text" ... voila mon php.

<h1>Inscription</h1>

<?php

if(isset($_POST['submit']))

{
$sexe = mysql_real_escape_string(htmlentities($_POST['sexe']));
$pseudo = mysql_real_escape_string(htmlentities($_POST['pseudo']));
$password = mysql_real_escape_string(htmlentities($_POST['password']));
$repeatpassword = mysql_real_escape_string(htmlentities($_POST['repeatpassword']));
$email = mysql_real_escape_string(htmlentities($_POST['email']));
$apropos = mysql_real_escape_string(htmlentities($_POST['apropos']));
$situation = mysql_real_escape_string(htmlentities($_POST['situation']));

if(empty($pseudo))
{
$errors[] = "Veuillez saisir un pseudo";
}

if(empty($password))
{
$errors[] = "Veuillez saisir un password";
}
if($password != $repeatpassword)
{
$errors[] = "Vos deux password doivent étre identiques";
}
if(!filter_var($email,FILTER_VALIDATE_EMAIL))
{
$errors[] = "Votre adresse email n'est pas correcte";
}
if(empty($apropos))
{
$errors[] = "Veuillez vous décrire en quelques lignes";
}

if(!empty($errors))
{
foreach($errors as $error)
{
echo "<div class='error'>".$error."</div>";
}
}
}
?>
0