Incure php dans javascript

Incure php dans javascript - PHP - Programmation

Marsh Posté le 12-02-2006 à 21:53:28    

Salut à tous,
suite à un post ici:
http://forum.hardware.fr/hardwaref [...] 4748-1.htm
 
j'ai un autre problème.
 
Je n'arrive pas à faire lire du texte ouvert en php lorque la varible est renvoyée en javascript. Je m'explique, un exemple, ce code ne marche pas:

Citation :

<SCRIPT type="text/javascript">
<!--
 
temp = "<?php
  $tab = file ('texte.txt');
  echo $tab[1];
  ?>";
document.write(temp);
 
// -->
</SCRIPT>


 
J'ai essayé avec toutes les fonctions php faisant appel à du texte genre readfile() et pareil, ça ne renvoie rien.  :??:  
 
Si quelqu'un a une idée....
 
 :sol:

Reply

Marsh Posté le 12-02-2006 à 21:53:28   

Reply

Marsh Posté le 12-02-2006 à 22:23:26    

est ce que ce code est dans un fichier PHP ?
si non, ça marchera pas
et il faut absolument echapper les ' et les " si tu veux que ça marche ...

Reply

Marsh Posté le 12-02-2006 à 22:34:59    

phenxdesign a écrit :

est ce que ce code est dans un fichier PHP ?
si non, ça marchera pas
et il faut absolument echapper les ' et les " si tu veux que ça marche ...


 
Oui bien sur, c'est dans un fichier .php. Et le code seul:

Citation :

<?php
  $tab = file ('texte.txt');
  echo $tab[1];
  ?>


fonctionne très bien.
 
Qu'est-ce que tu veux dire par --  echapper les ' et les "  -- ?

Reply

Marsh Posté le 12-02-2006 à 22:59:13    

il faut que dans la chaine faite par le echo, qui sera dans le fichier html, et entre les quotes du javascript, tu aie \' au lieu de ' et \" au lieu de "
exemple :
pour le texte :  
salut, c'est moi , ça va "bien" ?
 
tu auras :

Code :
  1. <SCRIPT type="text/javascript">
  2. <!--
  3. temp = "salut, c\'est moi , ça va \"bien\" ?";
  4. document.write(temp);
  5. // -->
  6. </SCRIPT>

Reply

Marsh Posté le 12-02-2006 à 23:01:42    

pour les simple quotes ( ' ) je suis pas sûr...
et je crois quen JS, les chaines de caracteres sont delimitées par ' et non "

Reply

Marsh Posté le 12-02-2006 à 23:04:46    

OK, je comprends ce que tu veux dire.
Mais le problème n'est pas là puisque dans la chaine renvoyé par le echo il n'y a ni quote ni double quote.

Reply

Marsh Posté le 12-02-2006 à 23:10:25    

je teste chez moi...

Reply

Marsh Posté le 12-02-2006 à 23:15:42    

:lol:  :lol:  
essaie avec un 0 dans $tab[]
tu prends la 2eme ligne, la :D

Reply

Marsh Posté le 12-02-2006 à 23:19:20    

phenxdesign a écrit :

:lol:  :lol:  
essaie avec un 0 dans $tab[]
tu prends la 2eme ligne, la :D


 
Oui je sais.... Et le fichier texte.txt en question a bien plusieurs ligne.
Et comme je disais, le simple code suivant:

Citation :

<?php
  $tab = file ('texte.txt');
  echo $tab[1];
  ?>


renvoie bien ce qui est prévu....
 
C'est lorsque l'echo est passé dans le javascript que ça coince.

Reply

Marsh Posté le 12-02-2006 à 23:30:04    

chez moi ça coince pas du tout ...

Reply

Marsh Posté le 12-02-2006 à 23:30:04   

Reply

Marsh Posté le 12-02-2006 à 23:30:28    

pti test avec ça :
 
<html>
<body><SCRIPT type="text/javascript">
<!--
 
var temp = "<?php
  $tab = file ('texte.txt');
  echo $tab[0];
  ?>";
document.write(temp);
 
// -->
</SCRIPT>
</body>
</html>

Reply

Marsh Posté le 12-02-2006 à 23:34:32    

resultat :
 
<html>
<body><SCRIPT type="text/javascript">
<!--
 
var temp = "rtherjthvzetzertzet  e thgc rthe r r thc rye h h";
document.write(temp);
 
// -->
</SCRIPT>
</body>
</html>

Reply

Marsh Posté le 12-02-2006 à 23:40:27    

essaie avec cette fonction :
file_get_contents
 
elle a les memes parametres (le premier suffit) ça met tout le texte du fichier dans une chaine, pas un tableau

Reply

Marsh Posté le 12-02-2006 à 23:59:58    

Vraiment merci pour l'effort PhenXDesign!  :hello:  
 
Mais là j'hallucine! J'ai recopié ton code (au cas où je sois vraiment miraud...) et ça marche toujours pas.  :heink:  
 
Je regarde la fonction que tu m'as donné, même si c'est pas ce que je veux, car j'ai vraiment besoin d'un tableau pour récuppérer chaque ligne de mon texte séparément....
 
Ca m'iniiiiiiiiirve!!!!  :fou:  
 
 :sol:

Reply

Marsh Posté le 13-02-2006 à 00:06:20    

Bon alors.....
 
Je viens d'essayer file_get_contents et y a du changemnt (si on peut dire.....).
 
Si je laisse dans l'echo la variable $tab, ça fait pareil, c'est-à-dire rien.
Par contre, si je mets par exemple $tab[4], ça marche en affichant la 4ème lettre du texte.
 
 :pt1cable:  Ca te parle à toi?

Reply

Marsh Posté le 13-02-2006 à 09:08:27    

hum ... c'est normal que ça affiche la 4eme lettre du texte, mais c'est bizarre que ça n'affiche pas le texte entier avec $tab ...
pour le file(), voila un code, si tu veux mattre toutes les lignes :  
 

<html>
<body><SCRIPT type="text/javascript">
<!--
 
var temp = '<?php
  $tab = file ('texte.txt');
foreach ($tab as $numero_ligne => $ligne) {
  $ligne = str_replace("\r\n", "\\r\\n", $ligne); // pour echapper les retours a la ligne
  echo $ligne;
} ?>';
document.write(temp);
 
// -->
</SCRIPT>
</body>
</html>

Message cité 1 fois
Message édité par phenxdesign le 13-02-2006 à 09:08:52
Reply

Marsh Posté le 13-02-2006 à 09:55:50    

Mais euh, c'est ton javascript qui tente de lire du php. Si c'est le cas tu peux essayer longtemps. Javascript coté utilisateur, php sur le serveur.


---------------
MZP est de retour
Reply

Marsh Posté le 13-02-2006 à 11:46:58    

Salut tous,  :hello:  
 

phenxdesign a écrit :

hum ... c'est normal que ça affiche la 4eme lettre du texte, mais c'est bizarre que ça n'affiche pas le texte entier avec $tab ...
pour le file(), voila un code, si tu veux mattre toutes les lignes :  
 

<html>
<body><SCRIPT type="text/javascript">
<!--
 
var temp = '<?php
  $tab = file ('texte.txt');
foreach ($tab as $numero_ligne => $ligne) {
  $ligne = str_replace("\r\n", "\\r\\n", $ligne); // pour echapper les retours a la ligne
  echo $ligne;
} ?>';
document.write(temp);
 
// -->
</SCRIPT>
</body>
</html>



 
Bon, beh voilà, ça, ça marche!  :??:  :??: . La vache, c'est quoi ce bins??
Bon beh mille merci pour ce code.
Je vais peut-être abuser, mais comment je fais à partir de ce code pour récuppérer juste la ligne x? Parce que c'est pour ça que je voulais un tableau, donc un file(), parce que j'ai besoin de récuppérer chaque ligne séparément...
 
cinocks, je vois pas ce que tu veux dire....  :??:  
 
 :sol:  

Reply

Marsh Posté le 13-02-2006 à 14:19:41    

Ben en fait, ce qui change vraiment, c'est  

Code :
  1. $ligne = str_replace("\r\n", "\\r\\n", $ligne); // pour echapper les retours a la ligne


 
qui pourrait etre meme mieux :  

Code :
  1. $ligne = str_replace("\r", "\\r", $ligne);
  2. $ligne = str_replace("\n", "\\n", $ligne);
  3. // pour echapper les retours a la ligne


 
Mais dans le code source, tu avais bien la ligne d'ecrite ?
Javascript n'accepte pas les chaines de carac avec un retour a la ligne dedans, donc on doit les echapper ...
pour ce qu'a dit cinocks, il n'a pas comprit le truc, en fait, le code PHP est interpreté par le serveur avant d'etre envoyé vers le navigateur, donc le javascript se retrouve toujours avec le code généré par le serveur a partir du PHP ...

Reply

Marsh Posté le 13-02-2006 à 14:21:24    

Donc je reprends :  

<html>
<body><SCRIPT type="text/javascript">
<!--
 
var temp = '<?php
  $tab = file ('texte.txt');
  $ligne = $tab[0];
  $ligne = str_replace("\r", "\\r", $ligne);
  $ligne = str_replace("\n", "\\n", $ligne);
  echo $ligne;
} ?>';
document.write(temp);
 
// -->
</SCRIPT>
</body>
</html>


Message édité par phenxdesign le 13-02-2006 à 14:21:37
Reply

Marsh Posté le 14-02-2006 à 14:13:40    

OK PhenXDesign, c'est parfait, et ça marche!  :jap:  
 
La suite..... dans un autre post... :p  
 
 :sol:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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