variable PHP prevenant du monde exterieur

Petit nouveau ! | 9 Messages

10 août 2006, 17:43

Salut

J'ai une variable "le_terme" créée par javascript et stockée dans une propriété de l'objet document.

Je voudrais recuperer cette propriété et l'utiliser dans du code PHP. On m'a conseillé ceci :
$toto='<script language="JavaScript">document.write(le_terme())</script>';?>
le_terme() etant simplement une fonction qui renvoie ladite valeur.

En apparence, ca marche : echo $toto me renvoie à l'écran la bonne chaine de caractère...Mais en réalité, ca ne marche pas : utilisée dans une requete MySQL, ca foire.

Quelqu'un sait pourquoi ? Apparement, on ne peut pas utiliser document.write comme si c'etait une fonction renvoyant une chaine de caractère...

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

10 août 2006, 18:16

On va dire que c'est un vieux classique...

Le PHP est interprêté côté serveur, le Javascript est exécuté côté client.
Donc le code PHP est exécuté AVANT le code Javascript.
Tout simplement.

Petit nouveau ! | 9 Messages

10 août 2006, 18:44

Oui.

Quand j'ai écrit ce truc, je me suis dit que ca ne pouvait pas marcher. Le problème, c'est qu'il y a quelque chose dans la variable $toto.

Comment diable est-ce possible ?
<?php 
$toto='<script language="JavaScript">document.write(le_terme())</script>';
echo $toto;
?>
La première ligne affecte à la variable $toto ...quelque chose qui n'est pas encore connu.
Pourtant, arrivé au client, la deuxième ligne fonctionne ! Il y a quelque chose que je ne saisis pas.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

10 août 2006, 19:04

il y a quelque chose dans la variable $toto
la variable est initialisée avec :

"<script language="JavaScript">document.write(le_terme())</script>"

le echo affiche donc cette ligne dans le document HTML généré ensuite coté client le script est exéuté normalement.

Ces deux cas sont identiques :
//cas 1
<?php 
$toto='<script language="JavaScript">document.write(le_terme())</script>';
echo $toto;
?>
//cas 2
<script language="JavaScript">document.write(le_terme())</script>
Dans le cas 1 tu passes par un traitement PHP pour l'affichage c'est tout.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 9 Messages

10 août 2006, 19:17

ah ben oui....

Je crois que j'ai besoin de repos.

Merci.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

10 août 2006, 19:22

Si ces quelques explications te conviennent n'oublis pas le [Résolu] :)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute