rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Probleme de retour à la ligne dans textarea

Posté par loicabel, le vendredi 24 août 2007 à 22:01:33
Bonjour

je suis en train de créer un systeme de post qui permetra de poster des cours. L'utilisatur saisi son texte dans un textarea, puis dans la page php correspondante j'enregistre ce texte sur un fichier .txt sur le serveur.
Mon poblème est que les retours à la ligne ne sont pas conservés. J'ai essayé d'utiliser nl2br, et replace, mais ni l'un ni l'autre ne se sont montrés efficaces.
De plus sous I.E et Firefox mes textarea sont interprété comme des zone text simples alors que sous opéra non.

quelqu'un pourrait il m'aider?

voici le script concerné :

<html>
...
<input type="textarea" name="texte" rows="50" cols="200">
Configuration: Windows XP
Opera 9.23
Répondre à loicabel  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Dalida, le vendredi 24 août 2007 à 22:15:54
salut,

en premier, essaie avec la bonne balise : <textarea>.

ça devrait déjà aranger la situation , après on verra ce qui reste !

[ Mathieu ]
Il y a surement des pandas pour ne dépendre de rien
Répondre à Dalida

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
loicabel, le vendredi 24 août 2007 à 22:24:31
Effectivement cela règle le problème entre les différends navigateurs.
Mais j'ai toujours mo problème de retour à la ligne.
Configuration: Windows XP
Opera 9.23
Répondre à loicabel

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Dalida, le vendredi 24 août 2007 à 22:29:56
alors, on se récapitule !!!
l'utilisateur effectue une saisie dans la zone.
et tu souhaite récupérer les retours à la ligne (CR/LF) pour que le texte soit formaté comme la saisie ?

si c'est ça, est-ce que tu t'es posé la question d'utiliser carrément un éditeur de texte ?
est-ce qu'un retour au format html te conviendrait ?
si oui regarde ce que fait FCKEditor.
(il y en a surement d'autres, moi j'ai essayer celui là je le trouve très bien !)

je te conseille ça parce que je crois que ton problème est une vraie prise de tête. je crois avoir lu quelque chose à ce sujet mais je ne sais plus. faute de neurones, je vais essayer de trouver des infos !

<edit>
et non !!!
c'est pas du tout ce que je pensais…
donc regarde l'éditeur, on sait jamais ça pourrait te plaire…
pour ton problème est-ce que tu as un exemple d'entrée et de sortie des données ?
si tu fais un :
echo (nl2br(htmlentities($_POST['textarea'])));

qu'est-ce que ça donne ?
</edit> [ Mathieu ]
Il y a surement des pandas pour ne dépendre de rien
Répondre à Dalida

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
loicabel, le vendredi 24 août 2007 à 22:39:00
merci beaucoup. je vais essayer et je te tiens au courant de mon succès ou non.
je te confirme que autrement c'est une prise de tête car cela fait 2 jours que je coince là dessus...
Configuration: Windows XP
Opera 9.23
Répondre à loicabel

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
loicabel, le vendredi 24 août 2007 à 22:49:40
effectivement cela fonctionne avec echo (nl2br(htmlentities($_POST['textarea'])));
mais je souhaiterai l'écrire en une seule ligne dans le fichier.
à tu une idée de comment faire ?

excuse moi si mes questions sont des questions de bases mais je suis débutants.
Configuration: Windows XP
Opera 9.23
Répondre à loicabel

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Dalida, le vendredi 24 août 2007 à 22:53:28
peux tu nous monter le code source produit par 'echo()' ?
si ça s'affiche correctement il doit y avoir les balises html ad hoc.

tu le veux en texte brut ou en html ?
[ Mathieu ]
Il y a surement des pandas pour ne dépendre de rien
Répondre à Dalida

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
loicabel, le vendredi 24 août 2007 à 22:59:15
il ne produit pas de code, mais il renvoit le texte telquel, avec les retours à la lignes.
j'ai réussi à faire ce que je voulais avec un replace, mais la methode ne me convient pas car il peut y avoir confusion avec la frappe de l'utilisateur.
Si tu as une idée je suis preneur.
Configuration: Windows XP
Opera 9.23
Répondre à loicabel

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Dalida, le vendredi 24 août 2007 à 23:03:58
et si tu le stockes dans le fichier tel quel et tu appliques 'nl2br()' à ce que tu as enregistré, ça fonctionne ?
[ Mathieu ]
Il y a surement des pandas pour ne dépendre de rien
Répondre à Dalida

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
loicabel, le vendredi 24 août 2007 à 23:11:44
oui ca fonctionne.
j'ai un dernier problème avecles caractère spéciaux du type apostrophe, qu'il retranscrit " \ ' ". je suppose qu'il faut que j'utilise un htmlentities(), mais je n'arrive pas à le placer correctement.
peux tu encore m'aider stp?
Configuration: Windows XP
Opera 9.23
Répondre à loicabel

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Dalida, le vendredi 24 août 2007 à 23:19:01
'htmlentities()' peut prendre le paramètre 'ENT_NOQUOTES' pour ignorer apostrophes et guillemets.

plus d'infos
[ Mathieu ]
Il y a surement des pandas pour ne dépendre de rien
Répondre à Dalida

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
loicabel, le vendredi 24 août 2007 à 23:27:00
en fait ce n'est pas ce que je voulais.
Il me renvoit par exemple le texte suivant :
coucou§§§§§§§§c \' est moi (dans mon fichier texte). les syboles § corespondent à la chaine qui remplace le retour à la ligne.
je voudrais ne pas voir l'anti slasch mais que l'utilisateur puisse l'utiliser dans son texte. je ne peux donc pas utiliser le replace. comment faire?
Configuration: Windows XP
Opera 9.23
Répondre à loicabel

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Dalida, le vendredi 24 août 2007 à 23:39:15
as-tu essayé 'htmlentities($var, ENT_NOQUOTES)' ?
[ Mathieu ]
Il y a surement des pandas pour ne dépendre de rien
Répondre à Dalida

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Dalida, le vendredi 24 août 2007 à 23:43:46
peux-tu refaire un point sur la méthode exacte que tu utilises ?
parce que avec 'nl2br()' ça devrait fonctionner tout seul.

y a un truc qui m'échappe !
[ Mathieu ]
Il y a surement des pandas pour ne dépendre de rien
Répondre à Dalida

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
loicabel, le vendredi 24 août 2007 à 23:44:30
oui, mais ca m'affiche les codes html alors que je ne les veux pas.
Configuration: Windows XP
Opera 9.23
Répondre à loicabel

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Dalida, le vendredi 24 août 2007 à 23:46:45
tu fais quoi exactement (replace(), htmlentities()…) et dans quel ordre ?
[ Mathieu ]
Il y a surement des pandas pour ne dépendre de rien
Répondre à Dalida

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
loicabel, le vendredi 24 août 2007 à 23:54:11
je receptionne ma variable et je la transforme pour la mettre dans mon fichier :

$texte=str_replace(chr(10),'§§§§§',$texte);
$texte=str_replace(chr(13),'§§§§',$texte);
$texte=str_replace(chr(13),'§§§§',$texte);

puis dans une autre page (celle pour consulter) :

<?php
$monfichier=fopen('toto.txt','r+');
$ligne=fgets($monfichier);
fclose($monfichier);
$ligne=str_replace('§§§§§',chr(10),$ligne);
$ligne=str_replace('§§§§',chr(13),$ligne);
echo (nl2br(htmlentities($ligne)));
?>
Configuration: Windows XP
Opera 9.23
Répondre à loicabel

17


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Dalida, le samedi 25 août 2007 à 00:14:47
y a moyen de faire beaucoup mieux, c'est sûr !
reste plus qu'à trouver...

au lieu d'ouvrir le fichier tu peux soit placer le contenu dans une balise <object>, soit l'interpréter comme du php.

<object>
<object data="file.txt" type="text/plain" width="772px" height="400">
	alt : <a href="file.txt">Fichier texte</a>
</object>

php
<?php
ob_start();
include('file.txt');
$text = ob_get_contents();
ob_end_clean();
?>


ce sont des pistes, à mon avis la première n'est pas pratique, la deuxième est à creuser car tu récupères le contenu du fichier texte en l'interprétant comme du php.

en <14> tu dis ne pas vouloir de balise mais comment affiches tu le texte ?
[ Mathieu ]
Il y a surement des pandas pour ne dépendre de rien
Répondre à Dalida

18


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
loicabel, le samedi 25 août 2007 à 09:00:16
en <14> j'utilise echo, et c'a m'affiche des <br> a la place des retours à la ligne. en fait il me faudrait une fonction qui fasse l'inverse de nb2lr pour l'affichage, ca serai nickel, enfin je crois...

sinon je vais creuser les pistes surtout celle en php pk je ne connait pas (encore!!!) les objects.
Configuration: Windows XP
Opera 9.23
Répondre à loicabel

19


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Dalida, le samedi 25 août 2007 à 12:04:33
salut,

je suis sûr que l'on passe à côté d'une évidence par manque de connaissance du sujet.
mais bon, on peut toujours tenter de bricoler…

pour la fonction inverse de 'nl2br()' j'ai trouvé çà dans le manuel php :
admin at ninthcircuit dot info
06-Jun-2005 11:00
As stated in the manual above, PHP's nl2br() feature only puts a "<br />" tag before each newline ("\n"). So -- if you intend to code a br2nl() function for yourselves, all you have to do is remove every occurence of "<br />" or "<br>".

Rather than get into nasty regular expressions to accomplish this, just use what PHP has built in already --  str_replace():

<?php
    /* br2nl for use with HTML forms, etc. */
    function br2nl($text)
    {
        /* Remove XHTML linebreak tags. */
        $text = str_replace("<br />","",$text);
        /* Remove HTML 4.01 linebreak tags. */
        $text = str_replace("<br>","",$text);
        /* Return the result. */
        return $text;
    }
?>

The final result from this function being called is whatever was entered before XHTML/HTML linebreaks were added.

All newlines are preserved by default, as per PHP ln2br() specification. Since the code above preserves newlines also, you can expect your data to reappear in the same way it was entered.

[ Mathieu ]
Il y a surement des pandas pour ne dépendre de rien
Répondre à Dalida
Logiciels pertinents trouvés dans les téléchargements
Télécharger NcFTP 3.2.1NcFTP - NcFTP est un formidable client FTP en ligne de commande disponible pour la quasi-totalité des systèmes d'exploitation....Catégorie: Téléchargement
Licence: Freeware/gratuit
Télécharger BitDefender 10BitDefender - BitDefender est la version gratuite de l'antivirus de l'éditeur Softwin. Il possède des fonctionnalités équivalentes à...Catégorie: Antivirus
Licence: Freeware/gratuit
Télécharger Coloriage 1.1.4Coloriage - Coloriage est un logiciel de coloriage pour jeunes enfants, à la manière de Tux Paint . Il répertorie quelque 220 dessins à...Catégorie: Dessin
Licence: Freeware/gratuit
Télécharger PKZIP 2.50PKZIP - Le compresseur/décompresseur de fichiers ZIP original ... peut être très utile parfois...Catégorie: Compression/Décompression
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « Probleme de retour à la ligne dans textarea »