Retour chariot et textarea (php)

Retour chariot et textarea (php) - HTML/CSS - Programmation

Marsh Posté le 08-12-2005 à 12:56:09    

salut
Voila j'ai un petit souci   :)  
J'ai un textarea ou je fais des retour chariot, pour l'instant aps de probleme
par contre lorsque je veux faire un apercu de ce textarea en passant par le javascript les retour chariot disparaissent :
 
dans mon textarea j'ai:

Code :
  1. Bonjour,
  2. Ceci est un test.
  3. Test1
  4. Test2


 
le lancement de l'apecu est fait comme ca:

Code :
  1. <input type="button" value="Prévisualiser" Onclick="javascript:apercu();">


 
la fonction javascript apercu ressemble a ça :

Code :
  1. function apercu()
  2. {
  3. valeur=this.nomdemonform.nomdemontextarea.value;
  4. window.open('preview.php?cont='+valeur,'Aperçu','width=400,height=400,scrollbars=yes');
  5. }


 
Et mon preview.php ressemble a ca :

Code :
  1. <?php
  2. if(isset($_GET['cont']) AND !empty($_GET['cont']) AND $_GET['cont']!="" )
  3. {
  4. $contenu=$_GET['cont'];
  5. }
  6. else
  7. die ("contenu inexistant" );
  8. $contenu=str_replace("\n","<br>",$contenu);
  9. echo $contenu;
  10. ?>


 
et la il n'y a aucun saut de ligne de fait , a l'affichage j'aurais :

Code :
  1. Bonjour,Ceci est un test.Test1Test2


 
Par contre si j'enregistre mon textarea dans une base mysql que je lis ce contenu a partir de la base, que je fais le "replace" et que j'affiche le contenu, les sauts de lignes se font bien.
 
Par consequent l'enregistrement dans la base de donnée garde bien les retour chariot du textarea , mais le passage du textarea en javascript, enleve les retour chariot. peut etre, c'est parceque je passe la variable dans l'URL , ya  t'il un autre moyen de passer una variable javascript a une variable PHP? (meme si je pense pas que le probleme vienne de la)
 
je sait pas si je suis assez clair, mais si vous pouviez m'aider ca serait sympas  :D
 
PS: je connais la fonction nl2br() et ca ne resoud pas mon probleme , je suis allez voir dans le forum si il ya vait une réponse a mon probleme et j'ai pas trouvé  :(  
 
petite explication supplementaire : En gros je suis en train de faire un site qui sera administrable en ligne et la mise a jour du contenu se fera comme lorsqu'on poste sur un forum , avec du BBcode etc..
Et je dois avouer que je galere un peu avec le traitement des chaines de caractères.

Message cité 1 fois
Message édité par saxgard le 08-12-2005 à 13:03:42
Reply

Marsh Posté le 08-12-2005 à 12:56:09   

Reply

Marsh Posté le 08-12-2005 à 13:04:07    

saxgard a écrit :

ya  t'il un autre moyen de passer una variable javascript a une variable PHP?


Vi, tu changes l'action de ton formulaire et tu l'envois sur une autre page en ouverture.
Comme le code d'HFR, le forum, si tu regardes, quand tu cliques sur répondre, cela produit un envoie de formulaire qui permet de récupérer ce que tu as déjà commencé à taper dans la case Réponse rapide.

Reply

Marsh Posté le 08-12-2005 à 13:07:26    

Forcément si tu vire les \n ça risque de pas fonctionner...

Reply

Marsh Posté le 08-12-2005 à 14:10:08    

The-Shadow a écrit :

Vi, tu changes l'action de ton formulaire et tu l'envois sur une autre page en ouverture.
Comme le code d'HFR, le forum, si tu regardes, quand tu cliques sur répondre, cela produit un envoie de formulaire qui permet de récupérer ce que tu as déjà commencé à taper dans la case Réponse rapide.


 
 
Si je comprend bien faut que je fasse un submit (comme quand je valide mon formulaire)?  mais au lieu que je le traite pour le valider (ajout dans la base de donnée etc..) je l'affiche uniquement c'est bien ça?
 
Si c'est ca il faut bien que je differencie le bouton apercu et le bouton valider du formulaire.
Chacun doivent avoir un submit different.
 
peut-on sur le meme formulaire envisager 2 submit differents?
 
Un submit lorsque je clique sur apercu et un autre quand je clique sur valider
 
FlorentG je les supprime pas les \n je les remplaces par des <br>  
je fais plus ou moin ce que ferai nl2br()  ;)

Reply

Marsh Posté le 08-12-2005 à 14:18:24    

Mais faut pas. Dans une textarea, c'est pas des <br> qu'il faut, mais des \n (ou \r\n)

Reply

Marsh Posté le 08-12-2005 à 14:19:56    

saxgard a écrit :

Si je comprend bien faut que je fasse un submit (comme quand je valide mon formulaire)?  mais au lieu que je le traite pour le valider (ajout dans la base de donnée etc..) je l'affiche uniquement c'est bien ça?
 
Si c'est ca il faut bien que je differencie le bouton apercu et le bouton valider du formulaire.
Chacun doivent avoir un submit different.


En html, tu fais un bouton de type button, pas de type submit, et tu fais un onclick="procedureapercu()"
 
et ensuite, en javascript, tu fais  
function procedureapercu {
changementdelactionduformulaire avec target blank
et submit()
}

Reply

Marsh Posté le 08-12-2005 à 14:23:58    

FlorentG a écrit :

Mais faut pas. Dans une textarea, c'est pas des <br> qu'il faut, mais des \n (ou \r\n)


 
en fait j'ai du mal m'exprimer.
 
je récupere mon textarea qui lui doit contenir des \n ou (\r\n)  et pour afficher ces \n sur ma page html , je doit bien transformer ces \n par des <br>, \n c'est pas reconnu en HTML  :)  
Cela dit je me trompe peut etre (j'ai mon cerveau un peu fatigué la) :pt1cable:  dans mon raisonnement, mais si t'affiche directement le contenu de ton textarea sans traiter les retours chariots, je sais pas si tu aura des sauts de lignes dans ta page web
 
sinon je crois que j'ai trouvé pour les submit, j'ai vu qu'on pouvait modifier son action avec la propriété action
document.forms.action
je vais pouvoir dans ma fonction apercu()
faire un changement de l'action et faire un submit, je recupere ensuite mon textarea en POST et normalment ca devrait etre bon
si je fais fausse route signalez moi le  :D  
 
je vous tient au courant  :)
 
The Shadow nos idées se sont croisés , merci  ;)


Message édité par saxgard le 08-12-2005 à 14:24:53
Reply

Marsh Posté le 08-12-2005 à 14:24:46    

Ah j'ai dû mal pigé, j'ai cru que t'affichais le contenu dans un textarea

Reply

Marsh Posté le 08-12-2005 à 14:25:30    

FlorentG a écrit :

Ah j'ai dû mal pigé, j'ai cru que t'affichais le contenu dans un textarea


 
non non , pas grave , je m'exprime surement très mal aussi  ;)
 
c'est bon ca marche :

Code :
  1. function apercu()
  2. {
  3. this.monform.action="apercu.php";
  4. this.monform.submit();
  5. }


 
je recupere mon textarea avec $_POST['nomtextarea'] dans mon fichier apercu.php
et c'est bon
 
youpiiii  :jap:  
merci a tous les 2


Message édité par saxgard le 08-12-2005 à 14:30:12
Reply

Marsh Posté le 14-06-2006 à 17:31:24    

En PHP j'ai résolu le pb de cette manière :
 
$mavar = str_replace("\r\n", "\\r\\n", $mavar);
 
et après en js, txtarea.value = '$mavar';

Reply

Marsh Posté le 14-06-2006 à 17:31:24   

Reply

Marsh Posté le 14-06-2006 à 17:42:59    

agateway a écrit :

En PHP j'ai résolu le pb de cette manière :
 
$mavar = str_replace("\r\n", "\\r\\n", $mavar);
 
et après en js, txtarea.value = '$mavar';


en PHP, il existe une fonction spécialement pour ça $mavar=nl2br($mavar);
En général, les fonctions toutes faites sont plus rapides.  
 
Edit : Ha non merde, j'ai mal compris.  [:amandine75011]


Message édité par The-Shadow le 14-06-2006 à 17:43:40
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed