Aide textarea

Fermé
Morpeus50 Messages postés 3 Date d'inscription mardi 20 septembre 2022 Statut Membre Dernière intervention 21 septembre 2022 - Modifié le 20 sept. 2022 à 20:30
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 - 21 sept. 2022 à 19:03

Bonjour à tous, 
sur mon site, j'ai une page client simple avec un textarea pour que l'utilisateur puisse saisir un texte et l'enregistrer sur une table de ma bdd.

Je récupère le texte saisi sur ma page de lecture dans un textarea

<textarea name="message" cols="50" rows="20" id="message"><?php echo $_GET['message']?></textarea>

le problème est le suivant :

quand l'utilisateur écrit :

le chien a mangé le chat

le tigre a mangé le chien

dans ma bdd, c'est enregistré de la façon suivante:

le chien a mangé le chat

le tigre a mangé le chien

mais, quand je récupère ce texte dans mon textarea pour lecture, cela s'affiche comme ceci:

le chien a mangé le chatle tigre a mangé le chien

j'ai lu et essayé plein de choses nl2br etc.. mais sans succès, je dois surement mal codé ce truc.

Pourriez-vous me dépanner sur ce code car, cela fait une semaine que je suis dessus 

Merci d'avance

4 réponses

jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
20 sept. 2022 à 23:23

Bonjour

Pour l'affichage il faut utiliser la fonction

nl2br()


0
Morpeus50 Messages postés 3 Date d'inscription mardi 20 septembre 2022 Statut Membre Dernière intervention 21 septembre 2022
21 sept. 2022 à 14:06

nl2br() j'ai essayé mais sans succès

voici mes scripts de pages

page creation :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Enregistrement Intervention</title>
<style type="text/css">
body {
	background-color: rgb(0, 0, 0);
}
select {
width : 250px ;
}
.Style20 {	font-size: 24px;
	color: #FFFFFF;
}
.Style25 {color: #FFFFFF; font-weight: bold; }
</style>
</head>

<body>
<script>
document.addEventListener("contextmenu", function(e){
e.preventDefault();
alert('Page protégée, clic droit interdit'); 
}, false);
</script>
<p><br />
</p>
<form method="post" action="ajoutfr.php">
  <div align="center"></div>
  <div align="center"><br />
      <span class="zone_texte">
        <textarea name="message" cols="50" rows="20" id="message"></textarea>
        </span><br />
    <br />
  </div>
  <div align="center"></div>
  <div align="center">
    <input type="submit" value="Valider" />
  </div>
</form>

</body>
</html>

Page enregistrement :

<?php
// information pour la connection à le DB
$conn = mysqli_connect('*****', '*****', '*****', '*****');
//modification des caractères avec accents
mysqli_query($conn,"SET CHARACTER SET 'utf8'");
mysqli_query($conn,"SET SESSION collation_connection ='utf8_unicode_ci'");

  //récupération des valeurs des champs:
  $message = $_POST["message"] ;
  
  //création de la requête SQL:
  $sql = "INSERT  INTO faits_remarquables (message)
          
		  VALUES ('$message') " ;
 
//exécution de la requête SQL:
	$result = $conn->query($sql);
 
 
  //affichage des résultats, pour savoir si la modification a marchée:
  if($result)
  {
     header("location:" . "../index.php");
  }
  else
  {
     header("location:" . "../index.php");
  }
?>

enfin page de lecture :

<?php
// information pour la connection à le DB
include('../../config.php');
//modification des caractères avec accents
mysqli_query($conn,"SET CHARACTER SET 'utf8'");
mysqli_query($conn,"SET SESSION collation_connection ='utf8_unicode_ci'");  
  
	//requête SQL:
    $sql = "SELECT * FROM faits_remarquables" ;
	// initialisation des données
			$message = $_GET['message'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>modification de la consigne</title>
<style type="text/css">
body {
  background-color: rgb(0, 0, 0);
  background-color: rgba(0, 0, 0, 0.7);
}
select {
width : 250px ;
}
.Style14 {
	font-size: 24px;
	color: #FFFFFF;
}
.Style15 {color: #FFFFFF}
.Style16 {
	font-size: 9px;
	color: #999999;
}
</style>
</head>

<body>
 
<form name="insertion" action="Modif_consigne_validation.php" method="POST">
  <div style="position:absolute; float:left"><span class="Style20"><a href="listes_consignes.php"><img src="../../images/Retour.png" title="RETOUR"/></a></span></div>
  <input type="hidden" name="id" id="id" value="<?php echo '' . $_GET['id'] . '';?>" />
  <p>
</p>
<table width="1009" border="0" align="center" cellspacing="0">
  <tr>
    <td width="944"><div align="center" class="Style20 Style14">Lecture du fait marquant</div></td>
  </tr>
</table>
<br />
  <table width="327" border="1" align="center">
    <tr>
      <td width="317">
      <?php 
	  $message = mysqli_real_escape_string($_GET['message']);
	  $msg = isset($_POST['message']) ?trim($_GET['message']) : '';
	  $message = nl2br($msg) ;
	  echo $message;?>
      <textarea name="message" id="message" cols="50" rows="20"></textarea>
	</td>
    </tr>
  </table>
  <br />
  <br />
<div align="center"></div>
  <div align="center">
    <input type="submit" value="Valider" />
  </div>
</form>

</body>
</html>
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
21 sept. 2022 à 14:12
  $message = mysqli_real_escape_string($_GET['message']);
	  $msg = isset($_POST['message']) ?trim($_GET['message']) : '';
	  $message = nl2br($msg) ;

Heu..

Variable POST ou GET ??

Et puis .. à quel moment transmets tu cette variable dans l'url ( GET ) ou via formulaire ( POST ) ?

Les données devraient provenir de ta bdd ( de la table faits_remarquables  non ? )

Au passage, pour les insertions en BDD evite d'utilise la méthode query .

A la place, utilises de requête préparées https://www.php.net/manual/fr/mysqli.quickstart.prepared-statements.php

Ca évitera bon nombre de soucis et t'évitera bon nombre de lignes de code inutiles ( y compris celles données par arscy )

0
arscy Messages postés 173 Date d'inscription dimanche 26 janvier 2014 Statut Membre Dernière intervention 5 octobre 2023 9 > jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024
21 sept. 2022 à 18:59

Bonjour,

Je ne saisis pas trop en quoi une requête préparée est plus optimale qu'une requête "classique"?
 

0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649 > arscy Messages postés 173 Date d'inscription dimanche 26 janvier 2014 Statut Membre Dernière intervention 5 octobre 2023
21 sept. 2022 à 19:03

Elle protège contre les injections sql  et retire le besoin des addslasches, htmlspecialchars et autres joyeusetés de ce genre.

1
Morpeus50 Messages postés 3 Date d'inscription mardi 20 septembre 2022 Statut Membre Dernière intervention 21 septembre 2022
21 sept. 2022 à 14:13

et oui en effet les mots de type "C'est" me posent également problèmes ;)

c'est un vrai casse-tête, si je pouvais m'abstenir d'avoir une zone te texte comme ceci je le ferai mais la pas possible

Bon sang que c'est pas simple

0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
21 sept. 2022 à 14:28

Tu n'as pas répondu à ma question...

0
arscy Messages postés 173 Date d'inscription dimanche 26 janvier 2014 Statut Membre Dernière intervention 5 octobre 2023 9
Modifié le 20 sept. 2022 à 21:53

Bonsoir,

Sans voir ton code il est difficile de se prononcer.
Cependant je peux proposer de te pencher sur le fait que certains caractères ne sont pas pris en compte à un moment donné? (ici les sauts de ligne)
--> avoir recours à htmlspecialchars pourrait peut être t'apporter une solution?
Par ailleurs je présume que tu n'as pas encore testé des textes de type " C'est une "chose" " qui pourraient bien de poser souci en matière de stockage dans ta bdd,
mysqli_string_escape // addslashes peuvent te sauver la mise _ et accroître significativement la sécurité de ton formulaire qui plus est.


Tiens-nous au courant

-1