Page 1 sur 1
sauts de ligne supprimé, cause ?
Posté : 21 mars 2011, 19:23
par AurelienC
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 !
Re: sauts de ligne supprimé, cause ?
Posté : 21 mars 2011, 19:31
par xTG
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 />
Re: sauts de ligne supprimé, cause ?
Posté : 21 mars 2011, 19:37
par AurelienC
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") ?
Re: sauts de ligne supprimé, cause ?
Posté : 21 mars 2011, 20:33
par xTG
A la lecture, d'ailleurs htmlentities le devrait aussi...

Re: sauts de ligne supprimé, cause ?
Posté : 22 mars 2011, 17:41
par AurelienC
Merci beaucoup, pour la lecture j'utilise html_entity_decode()
Re: sauts de ligne supprimé, cause ?
Posté : 22 mars 2011, 17:47
par xTG
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.
Re: sauts de ligne supprimé, cause ?
Posté : 22 mars 2011, 18:42
par AurelienC
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 &
Re: sauts de ligne supprimé, cause ?
Posté : 22 mars 2011, 19:22
par AurelienC
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
Re: sauts de ligne supprimé, cause ?
Posté : 22 mars 2011, 20:31
par xTG
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é.
Re: sauts de ligne supprimé, cause ?
Posté : 22 mars 2011, 21:02
par moogli
salut,
montre nous le code ce sera plus simple
pour le problème de charset
faq-tutoriels/encodage-utf-t245062.html
@+
Re: sauts de ligne supprimé, cause ?
Posté : 22 mars 2011, 21:47
par AurelienC
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...)
Re: sauts de ligne supprimé, cause ?
Posté : 22 mars 2011, 21:53
par moogli
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
@+
Re: sauts de ligne supprimé, cause ?
Posté : 22 mars 2011, 21:57
par AurelienC
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