sauts de ligne supprimé, cause ?

Eléphanteau du PHP | 25 Messages

21 mars 2011, 19:23

Bonjour,

Mes sauts de lignes sont supprimés une fois l'enregistrement dans ma table.

Est-ce que ça vient du type de champ dans la table (text) ou de la fonction htmlentities() puis html_entity_decode() ?

Comment est-il possible de contrer le problème ?

Merci par avance !

ViPHP
xTG
ViPHP | 7331 Messages

21 mars 2011, 19:31

Ces sauts de lignes sont-ils des \r\n ?
Si c'est le cas c'est tout à fait normal, le navigateur ne les compte pas comme des retours à la ligne (sauf dans le code source).
Utilise la fonction nl2br() qui les convertie en balise <br />

Eléphanteau du PHP | 25 Messages

21 mars 2011, 19:37

Merci pour ta réponse.

Ils sont tout simplement supprimés, j'obtiens un texte sans aucun saut de ligne !

Cette fonction est à mettre avant l'insertion ou après ? (à la "lecture") ?

ViPHP
xTG
ViPHP | 7331 Messages

21 mars 2011, 20:33

A la lecture, d'ailleurs htmlentities le devrait aussi... ;)

Eléphanteau du PHP | 25 Messages

22 mars 2011, 17:41

Merci beaucoup, pour la lecture j'utilise html_entity_decode()

ViPHP
xTG
ViPHP | 7331 Messages

22 mars 2011, 17:47

Ce n'est pas ce que je voulais dire.
Tu n'as normalement aucune raison de faire un htmlentities() avant l'ajout en bdd.
C'est une fonction qui n'est nécessaire que pour protéger l'affichage.

Si tu l'utilises en tant que protection contre les injections SQL je te conseillerai de te tourner vers des requêtes préparées, ou bien mysql_real_escape_string pour le driver MySQL.

Eléphanteau du PHP | 25 Messages

22 mars 2011, 18:42

J'ai fait mysql_real_escape_string à l'ajout et htmlentities à la lecture.. ça me donne ça
test accent éčŕů caractčres &
au lieu de
test accent éèàù caractères &

Eléphanteau du PHP | 25 Messages

22 mars 2011, 19:22

j'ai couplé en faisant mysql_real_escape_string(htmlentities()) et html_entity_decode() à la lecture, mais à chaque apostrophe ' ; ça rajoute un anti slach... ça donne
l\'un

ViPHP
xTG
ViPHP | 7331 Messages

22 mars 2011, 20:31

Quel encodage utilises-tu ?
Ton problème viens surtout de là, et c'est pour cela que tu as besoin de passer par htmlentities() afin de ne pas perdre les caractères accentués...
Il faut utiliser le même encodage pour PHP, la bdd, les fichiers et le header html envoyé.

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

22 mars 2011, 21:02

salut,

montre nous le code ce sera plus simple :)

pour le problème de charset faq-tutoriels/encodage-utf-t245062.html


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 25 Messages

22 mars 2011, 21:47

Bonsoir,

merci pour vos réponses, j'ai rajouté stripslashes() en plus de html_entity_decode() lors de l'affichage et ça résout le problème.

Pour ce qui est du reste, mon site est en ISO 8859-2 (je ne peux pas changer car je fais avec un logiciel et si je met UTF8, session_start() ne marche plus car le logiciel fout des trucs avant...) et MySQL est en UTF8 Unicode CI (je ne trouve rien en ISO quelque chose...)
Modifié en dernier par AurelienC le 22 mars 2011, 21:55, modifié 1 fois.

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

22 mars 2011, 21:53

heu désolé mais change d'éditeur dans ce cas :)

il en existe plein (gratis ou non) sachant gérer cela sans problème (par exemple notepad++, netbeans, kedit etc :) ).

si tu a ton fichier en iso et les données provenant de la db en utf-8 y a des chances que ça foute le brin :)

si tu doit faire un stripslashe c'est que le magic_quote_runtime doit être à un ( a moins que tu n'ai ces slashes dans la table ?). tu peut essayer de désactiver les magic_quote avec ini_set


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 25 Messages

22 mars 2011, 21:57

E vrai dire toute la partie "vitrine" de mon site est faite avec Serif WebPlus X4, je n'ai pas les compétences pour faire un site entier de cette "qualité" moi-même en codant tout...

j'ajoute juste en php (je découvre depuis 6 mois à peine !) un agenda, des actualités et un espace membre qui reprend des info de Dolibarr