probleme de nl2br()

Mammouth du PHP | 843 Messages

30 mars 2008, 05:14

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 :)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

ViPHP
ViPHP | 4674 Messages

30 mars 2008, 11:29

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é.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 4039 Messages

30 mars 2008, 12:27

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 ?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Mammouth du PHP | 2937 Messages

30 mars 2008, 12:31

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

Eléphant du PHP | 445 Messages

30 mars 2008, 15:55

nl2br() ne remplace en aucun cas les \n
Elle ne fait qu'ajouter un <br /> après.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

30 mars 2008, 16:47

La fonction les insère avant, mais sinon c'est ça :)

Mammouth du PHP | 843 Messages

30 mars 2008, 19:15

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 ;)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

ViPHP
ViPHP | 4039 Messages

30 mars 2008, 20:51

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);
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Mammouth du PHP | 843 Messages

31 mars 2008, 02:42

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 ;)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

31 mars 2008, 11:53

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 ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 2937 Messages

31 mars 2008, 22:04

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.

Mammouth du PHP | 843 Messages

31 mars 2008, 22:24

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 ;)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non: