transfèrer du texte d'une variable php à du javascript

transfèrer du texte d'une variable php à du javascript - PHP - Programmation

Marsh Posté le 31-12-2005 à 11:19:15    

Hello
Voila je voudrais passer une variable php qui contient du texte(qui provient de la BD) vers une variable js pour pouvoir ensuite l'affiche dans un iframe. Mais lorsque je veux affiche cette dernière, on me dit que " constante chaine n'est pas terminé".
Comment faire pour résoudre cela ?

Code :
  1. ...
  2. <head>
  3. <script language='javascript'>
  4. function barre(contenu) {
  5. document.writeln('<iframe id="richTexte">');
  6. document.writeln('</iframe>');
  7. document.writeln('<textarea name="contenu" id="editeur_content">');
  8. document.writeln(''+contenu+'');
  9. document.writeln('</textarea>');
  10. }
  11. [...]
  12. </script>
  13. </head>
  14. <body>
  15. <form action="" method="post">
  16. <?php
  17. $var="Pourquoi un réseau? Toute personne ayant Pourquoi les formulaires ?
  18. Un site qui vit est en dynamique avec l'internaute.
  19. Pour qu'un site vive dans la durée, il faut que les visiteurs
  20. communiquent avec le webmaster. D'où....";
  21. //du texte un peu de ce style, quoi
  22. echo "<div>";
  23. echo "<span>";
  24. echo "<script language='javascript'> ";
  25. echo "barre('$var');";
  26. echo "ini();";
  27. echo "</script>";
  28. echo "</div>";
  29. echo "</span>";
  30. ?>
  31. </form> 
  32. </body>


merci  :jap:


Message édité par snoppy le 05-01-2006 à 10:06:56
Reply

Marsh Posté le 31-12-2005 à 11:19:15   

Reply

Marsh Posté le 31-12-2005 à 11:29:55    

en JS ton $var en encadré de simples quotes : '$var'
mais ton texte contient des simple quotes.
Donc ce qu'il faut faire c'est échapper toutes les quotes du texte par des \ : \'
donc ta variable, tu lui fais ca :  
$var = str_replace("'","\'",$var)
 
tu feras attention, ya bien un simple quote entre deux doubles quotes dans le premier paramètre.
 
normalement c'était plutôt une question php ça
 
résultat :  
$var="Pourquoi un réseau? Toute personne ayant Pourquoi les formulaires ?Un site qui vit est en dynamique avec l\'internaute. Pour qu\'un site vive dans la durée, il faut que les visiteurs communiquent avec le webmaster. D\'où....";


Message édité par gatsu35 le 31-12-2005 à 11:30:42
Reply

Marsh Posté le 31-12-2005 à 11:30:11    

ligne 35: echo "barre('".$var."');";

Reply

Marsh Posté le 31-12-2005 à 11:32:11    

remi-san a écrit :

ligne 35: echo "barre('".$var."');";


 
Nan faut ca revient exactement à faire ce qu'il a fait sans concaténation.

Reply

Marsh Posté le 03-01-2006 à 16:01:52    

salut ,
j'ai testé avec str_replace avec le  programme ci dessus mais il m'a affiché la même réponse dans la fenetre js "constante non terminée."  
J'ai vérifié avec une phrase plus simple sur une ligne et cette fois-ci cela a fonctionné. Apparement l'erreur est dû au fait que le texte était sur plusieurs lignes.
J'ai teste ensuite l'affectation d'une variable à une autre, j'ai eu le même problême et apparement l'erreur vient du passage en parametre de la variable à la fonction barre().
J'ai essayé de mettre des \'..\' ou \"..\"  même erreur.
Si tu aurais une autre solutions à mon problème :(, je te remercie d'avance ?  
 
<?php  
connexion à la base..
je recupère le texte...
$var=$contenu;
echo "<div>";
echo "<span>";
echo "<script language='javascript'> ";
echo "barre('$var');"; //apparement c'est ici que ca bloque
echo "ini();";
echo "</script>";
.....
?>
 
 

Reply

Marsh Posté le 03-01-2006 à 17:00:04    


echo "barre('".addslashes($var)."');";
 
http://php.net/addslashes
 
si tu ne connais pas la fonction addslashes ton site doit etre bourré de faille de sécu pour des insert/update
 
pourquoi t'utilises pas plutot une div en overflow au lieu d'une frame? c'est plus propre qu'un JS  

Reply

Marsh Posté le 04-01-2006 à 07:56:15    

J'ai aussi éssayé avec addslashes et ca fonctionne po.
 
Désolé mais je suis encore novice, div en oveflow euh... je ne connais pas.
Tu pourrais me donner quelques précisions à ce sujet.

Reply

Sujets relatifs:

Leave a Replay

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