Page 1 sur 1

probleme de nl2br()

Posté : 30 mars 2008, 05:14
par BeRoots
salut à tous :)

j'ai un soucis de nl2br que je ne m'explique pas:
      // on recupere les informations pour le theme choisi via get
      $sql3 = "SELECT * FROM `".$table."` WHERE `nom` = '".addslashes($theme)."';";
      $result3 = $connecteur_db->query($sql3, 'client');
      while($tabl_sql3 = mysql_fetch_assoc($result3))
      {
         $instructions = nl2br(htmlentities($tabl_sql3['instructions'], ENT_QUOTES, 'ISO-8859-15'));
      }
pas moyen de convertir ce \n en <br /> :?
j'ai essayer le nl2br comme l'exemple et aussi à l'echo de $commentaire et j'ai bien ce \n en db comme dans ma var $instruction.

mon soucis est que ce \n s'affiche à l'écran alors que je veut un saut de ligne...

je le fait pourtant bien sur d'autre page mais ici il ne fonctionne pas :-k
si quelqu'un à une idée ?
merci d'avance :)

Posté : 30 mars 2008, 11:29
par Hywan
Salut,

et si tu remplaces la fonction nl2br par ta propre fonction qui va remplacer les "\n" (strictement) par un trait de soulignement (_) ? On sera fixé.

Posté : 30 mars 2008, 12:27
par Berzemus
eum, quand tu dis que tu vois "\n" dans ta db, tu le vois tel quel "\n", ou tu vois qu'il y a un retour à la ligne ?

Posté : 30 mars 2008, 12:31
par Victor BRITO
eum, quand tu dis que tu vois "\n" dans ta db, tu le vois tel quel "\n", ou tu vois qu'il y a un retour à la ligne ?
Encore faut-il ne pas lire les données depuis un fichier SQL d'export (qui convertit les retours à la ligne par des \n, justement).

Posté : 30 mars 2008, 15:55
par h0_noMan
nl2br() ne remplace en aucun cas les \n
Elle ne fait qu'ajouter un <br /> après.

Posté : 30 mars 2008, 16:47
par Hubert Roksor
La fonction les insère avant, mais sinon c'est ça :)

Posté : 30 mars 2008, 19:15
par BeRoots
oki j'ai essayer ceci mais rien de mieux :-k
/ on recupere les informations pour le theme choisi via get
      $sql3 = "SELECT * FROM `".$table."` WHERE `nom` = '".addslashes($theme)."';";
      $result3 = $connecteur_db->query($sql3, 'client');
      while($tabl_sql3 = mysql_fetch_assoc($result3))
      {
         $instructions = htmlentities($tabl_sql3['instructions'], ENT_QUOTES, 'ISO-8859-15');
         $instructions = str_replace("\n", "<br/>", $instructions);
      }
même str_replace ne marche pas :?
mes \n sont representer telle qu'elle en db...

si quelqu'un à une idée ;)

Posté : 30 mars 2008, 20:51
par Berzemus
tel quels ? donc dans les champs texte, il y a "\n" ?

Alors il faut remplacer ces "caractères" par une vraie nouvelle ligne.
quelque chôse comme ceci:
$avec = str_replace('\n',"\n",$sans);

Posté : 31 mars 2008, 02:42
par BeRoots
n'y a t'il donc pas moyen d'enregistrer des saut de ligne \n en db et de les retrouver tel quel en retour?

merci à vous pour de plus ample information à ce problème ;)

Posté : 31 mars 2008, 11:53
par Ryle
Non seulement il y a moyen, mais c'est surtout ce qu'il faut faire ! :)
Il n'y a - en théorie - aucune raison de voir apparaitre des "\n" dans ta base de données.

Tu as du coller un addslashes() ou autre à ta variable avant l'insertion en base, transformant le retour charriot \n en \\n, indiquant à ta base qu'il ne s'agissait pas d'un retour à la ligne mais du caractère antislash suivit d'un n.

A voir également s'il ne s'agit pas d'un cumul entre les magic_quotes, un real_escape ou autre... Montre nous le code qui te permet d'insérer cette valeur en base (et les fonctions éventuelles que tu utilises pour la protéger), car c'est de là que vient le soucis ;)

Posté : 31 mars 2008, 22:04
par Victor BRITO
Montre nous le code qui te permet d'insérer cette valeur en base (et les fonctions éventuelles que tu utilises pour la protéger), car c'est de là que vient le soucis ;)
Ainsi que le phpinfo() généré, notamment la ligne concernant magic_quotes.

Posté : 31 mars 2008, 22:24
par BeRoots
oki merci c'etait bien dut au fait que j'avais moi même inserer en db avec //n :oops:

encore merci pour vos conseils ;)