Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Reprise d'une variable

8 réponses
Avatar
Alain Chappuis
Hello

comment reprendre une variable javascript avec php?

var a = ....

puis la gérer avec; $a de php

C'est peut-être tout bête mais pas trouvé d'exemple.

Merci par avance

Alain
--
Alain Chappuis (Remove: nospam to answer me in my address!)
(Enlevez: nospam de mon adresse pour me répondre!)

8 réponses

Avatar
Bruno Desthuilliers
Alain Chappuis a écrit :
Hello

comment reprendre une variable javascript avec php?



???


var a = ....

puis la gérer avec; $a de php



Bon, soit j'ai pas bien compris ta question (auquel cas tu peux très
probablement zapper la suite), soit un petit rappel des bases du
protocole HTTP s'impose.

Le principe de HTTP est simple:

1/ un client (généralement un navigateur internet) émet une requête HTTP
(cf la RFC HTTP pour une description complète) à destination d'un serveur.

2/ le serveur analyse la requête et retourne une réponse HTTP (cf la RFC
etc). A ce stade, pour le serveur, c'est affaire classée, bonsoir
messieurs-dames.

3/ le client fait ce que bon lui semble de la réponse.

Ca a le mérite d'être très simple (et c'est pour ça que ça fonctionne
d'ailleurs).

Bref... Pour ce qui de PHP et Javascript:

- PHP est exécuté sur le serveur (phase 2/ ci-dessus) pour générer une
réponse HTTP - le plus souvent (par défaut en fait) une page HTML, mais
en pratique n'importe quel type de contenu acceptable comme réponse HTTP.

- Javascript est exécuté sur le client (phase 3/ ci-dessus), après
réception de la réponse HTTP.

Générer du javascript depuis un script PHP est trivial (problèmes
d'encodage etc mis à part), c'est exactement comme pour générer du HTML,
du texte brut etc.

Par contre, il est clair qu'au moment où le code javascript est exécuté
par le client, le script PHP a terminé son exécution depuis longtemps
("longtemps" à l'échelle informatique, j'entends), donc il n'y a pas
d'"interaction directe" possible dans le sens javascript / script
serveur - sauf à émettre une nouvelle requête depuis javascript,
laquelle requête provoquera l'exécution d'un script côté serveur et la
génération d'une nouvelle réponse (principe de base de ce qu'on appelle
improprement AJAX).

HTH
Avatar
Pascal
Alain Chappuis a écrit :
Hello



Bonjour,

comment reprendre une variable javascript avec php?



Il suffit de transmettre son nom et sa valeur par HTTP, soit avec la
méthode GET (URL), soit avec la méthode POST (FORM).

C'est peut-être tout bête mais pas trouvé d'exemple.



Exemple avec méthode GET :

<script>
var pid = 2;
...
location.search = "page=" + pid;
</script>

[HS] (devrait être posté sur "fr.comp.lang.php")

Côté PHP, on récupère la valeur transmise dans la globale $_GET[" page"].

[/HS]

Merci par avance

Alain



Cordialement,
Pascal
Avatar
Y a personne
Le 17/02/2010 14:17, Alain Chappuis a écrit :
Hello

comment reprendre une variable javascript avec php?

var a = ....

puis la gérer avec; $a de php

C'est peut-être tout bête mais pas trouvé d'exemple.

Merci par avance

Alain





La théorie veux que tu transmettes la valeur via un <form> (post ou get)
ou un lien (get).

Mais tu peux aussi la transmette coté serveur via une requête AJAX.
Avatar
Mickaël Wolff
Alain Chappuis a écrit :
Hello

comment reprendre une variable javascript avec php?



Quand on veut faire ça, il faut se poser la question de la pertinence
de la démarche. Il y a des cas où c'est intéressant (échange d'objet
sérialisés), mais souvent la question provient de personnes qui ne
perçoivent pas les paliers présents dans une application Web (j'appelle
ça le syndrome de la profondeur). En fait, il ne faut pas que tu
confondes les flux d'exécutions avec le flux du fichier source.

<script type='application/ecmascript'>

var string = 'injs'

<?php

$string = /* récupération du contenu dans le javascript impossible : le
javascript n'est pas interprété ou compris par PHP, il ne le voit que
comme le texte qu'il est */ ;

$string = 'something' ;

?>

string = <?php echo json_encode($string) ?> ; /* Un objet qui n'est pas
de type string... */
string = 'barbare' ;

<?php echo $string ; /* Affiche something */


C'est peut-être tout bête mais pas trouvé d'exemple.



C'est parce que ce n'est pas immédiat comme technique. D'autres ont
déjà parlé de différentes techniques. Je vais essayer de te donner une
vue plus générique.

Le principe est de sérialiser les objets, de les transmettre via une
requête HTTP, et des traiter. Mais attention, tu n'obtiendra pas le
comportement que j'ai tenté d'expliquer ci-dessus. En gros, tu as les
fonctions PHP json_encode et json_decode pour récupérer les données
transmises via HTTP au PHP par un script client Javascript. Et en
Javascript, tu transforme la forme sérialisée en l'évaluant (instruction
eval).
Mais il y a des limites : tu ne peux pas, par exemple, sérialiser les
fonctions : ça reviendrait à traduire le PHP en Javascript et
réciproquement.

Hmmm, je n'ai pas forcément été très clair...
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
Alain Chappuis
Alain Chappuis a écrit , Le 17. 02. 10 14:17:
Hello

comment reprendre une variable javascript avec php?

var a = ....

puis la gérer avec; $a de php

C'est peut-être tout bête mais pas trouvé d'exemple.

Merci par avance

Alain



Oui! et vous avez raison! je m'était mal expliqué avant.

En fait j'ai un flux php qui est affiché sur le client puis dans
ce flux j'aimerais faire une recherche dans une autre fenêtre
pop-up (enfant) ou dans cette pop-up il y a une autre flux php qui
gère une recherche avec mysql. Une fois la recherche effectuée par
l"enfant" et qu'il se ferme, j'aimerais récupérer la valeur dans la
fenêtre "père" par l'entremise d'une variable php $...
Je ne sais pas si c'est possible étant donné les explications avancées
ici en haut car Javascript étant actif uniquement sur le client alors que
php est en conjonction avec le serveur au moment de la sortie des données.

Bon il est clair que je peux faire du script dynamique selon les données
entrées et qui influence la composition du script selon l'avancée des données
entrées au fur à mesure de l'avancée du traitement. J'était à la recherche
d'une optimalisation des allées et venues entre le serveur et le client par
la propagation de pop-up locale un peut comme je l'avait fait en GUI à
l'époque. J'espère avoir été clair cette fois-ci et mes excuses pour l'avancée
nébuleuse précédente, au plaisir de vous relire.

Merci par avance.
Alain
--
Alain Chappuis (Remove: nospam to answer me in my address!)
(Enlevez: nospam de mon adresse pour me répondre!)
Avatar
Olivier Miakinen
Bonjour,

Le 19/02/2010 08:50, Alain Chappuis se répondait :

Oui! et vous avez raison! je m'était mal expliqué avant.



Ta façon de répondre à ta question en disant « vous avez raison » est
plutôt surprenante. Bon, je vais supposer que tu répondais globalement à
Bruno, Pascal, Y, et Mickaël, mais tu aurais pu résumer au lieu de citer
l'intégralité de ta question (salutations et signature comprises).

En fait j'ai un flux php qui est affiché sur le client puis dans
ce flux



C'est quoi un flux php ? C'est tout simplement une page html + code
javascript, ou bien il y a autre chose de plus à comprendre ?

j'aimerais faire une recherche dans une autre fenêtre
pop-up (enfant)



Donc, là, PHP a fini son boulot et n'existe plus, et c'est Javascript
qui bosse.

ou dans cette pop-up il y a une autre flux php qui
gère une recherche avec mysql.



Non. Si tu as du Javascript qui bosse sur une fenêtre existante, tu n'as
pas en même temps du PHP qui fait une recherche dans une base de
données. Ou alors c'est une autre fenêtre que tu ouvres, en lui passant
comme paramètres les termes de la recherche, afin qu'un *autre* process
PHP se lance et fasse le boulot que tu lui as préparé à l'avance.

Attention cependant : chez ceux qui ne veulent pas de popup, il est
possible que la nouvelle page remplace la précédente, et donc tu n'auras
plus de script parent.

Une fois la recherche effectuée par
l"enfant" et qu'il se ferme, j'aimerais récupérer la valeur dans la
fenêtre "père"



Ah, parce que tu envisages d'ouvrir une fenêtre juste pour lancer la
requête PHP ? Dans ce cas pas besoin d'ouvrir une fenêtre ! Tu utilises
Ajax (XmlHttpRequest) pour lancer une requête HTTP sans changer de
fenêtre, et tu évites tous les problèmes liés aux popups. Note que
c'était ce que proposait Y.

par l'entremise d'une variable php $...



Non. Il faut que tu te mettes bien en tête que PHP n'a plus *aucune*
existence dans la fenêtre père. C'est ce que tentait de t'expliquer
Bruno. Voir aussi la FAQ de PHP : <http://faqfclphp.free.fr/#rub2.3>.

Je ne sais pas si c'est possible étant donné les explications avancées
ici en haut car Javascript étant actif uniquement sur le client alors que
php est en conjonction avec le serveur au moment de la sortie des données.



Ton besoin réel (que tu n'as toujours pas exposé) a probablement une
solution, mais pas de la façon que tu crois.

Bon il est clair que je peux faire du script dynamique selon les données
entrées et qui influence la composition du script selon l'avancée des données
entrées au fur à mesure de l'avancée du traitement. J'était à la recherche
d'une optimalisation des allées et venues entre le serveur et le client par
la propagation de pop-up locale un peut comme je l'avait fait en GUI à
l'époque. J'espère avoir été clair cette fois-ci et mes excuses pour l'avancée
nébuleuse précédente, au plaisir de vous relire.



Ce n'est toujours pas clair, ÀMHA. Que sont exactement tes données
entrées ? entrées par qui ? comment ? quel traitement fais-tu ? et
toute cette sorte de choses...

Cordialement,
--
Olivier Miakinen
Avatar
Alain Chappuis
Merci Olivier pour ta réponse.

Olivier Miakinen a écrit , Le 19. 02. 10 13:06:
Bonjour,

Le 19/02/2010 08:50, Alain Chappuis se répondait :

Oui! et vous avez raison! je m'était mal expliqué avant.



Ta façon de répondre à ta question en disant « vous avez raison » est
plutôt surprenante. Bon, je vais supposer que tu répondais globalement à
Bruno, Pascal, Y, et Mickaël, mais tu aurais pu résumer au lieu de citer
l'intégralité de ta question (salutations et signature comprises).



Oui et désolé je n'ai pas repris les morceaux de réponses...


En fait j'ai un flux php qui est affiché sur le client puis dans
ce flux



C'est quoi un flux php ? C'est tout simplement une page html + code
javascript, ou bien il y a autre chose de plus à comprendre ?



Non c'est du code php qui recompose de l'html puis si nécessaire du
Javascript.


j'aimerais faire une recherche dans une autre fenêtre
pop-up (enfant)



Donc, là, PHP a fini son boulot et n'existe plus, et c'est Javascript
qui bosse.



Oui mais il y aura une interaction entre la fenêtre client (fils) et le
serveur pour faire la recherche d'une donnée dans MySql, une fois le
résultat obtenu j'aimerais que ce résultat soir communiqué à la
fenêtre père pour continuer le traitement de la fenêtre père.

En fait la fenêtre fils est déclenchée *que* si la donnée attendue est
manquante.

ou dans cette pop-up il y a une autre flux php qui
gère une recherche avec mysql.



Non. Si tu as du Javascript qui bosse sur une fenêtre existante, tu n'as
pas en même temps du PHP qui fait une recherche dans une base de
données. Ou alors c'est une autre fenêtre que tu ouvres, en lui passant
comme paramètres les termes de la recherche, afin qu'un *autre* process
PHP se lance et fasse le boulot que tu lui as préparé à l'avance.




Attention cependant : chez ceux qui ne veulent pas de popup, il est
possible que la nouvelle page remplace la précédente, et donc tu n'auras
plus de script parent.



Oui mais dans ce cas c'est de l'exploitation personnelle.


Une fois la recherche effectuée par
l"enfant" et qu'il se ferme, j'aimerais récupérer la valeur dans la
fenêtre "père"



Ah, parce que tu envisages d'ouvrir une fenêtre juste pour lancer la
requête PHP ? Dans ce cas pas besoin d'ouvrir une fenêtre ! Tu utilises
Ajax (XmlHttpRequest) pour lancer une requête HTTP sans changer de
fenêtre, et tu évites tous les problèmes liés aux popups. Note que
c'était ce que proposait Y.



Je ne connais pas Ajax! mais php et mysql puis infacto html je suis de la
vielle école en développant dans Windobe du GUI (fenêtres interactives)

par l'entremise d'une variable php $...



Non. Il faut que tu te mettes bien en tête que PHP n'a plus *aucune*
existence dans la fenêtre père. C'est ce que tentait de t'expliquer
Bruno. Voir aussi la FAQ de PHP :<http://faqfclphp.free.fr/#rub2.3>.



Ah effectivement! cela me complique le procédé, donc ma seule issue est
de faire une solution en tiroir avec le passage des paramètres obtenus
des treads anciens puis de composer le formulaire selon les valeurs obtenues
des précédents résultats.


Je ne sais pas si c'est possible étant donné les explications avancées
ici en haut car Javascript étant actif uniquement sur le client alors que
php est en conjonction avec le serveur au moment de la sortie des données.



Ton besoin réel (que tu n'as toujours pas exposé) a probablement une
solution, mais pas de la façon que tu crois.



C'est très simple mais ne voulant pas charger le fil j'ai omis de faire
connaitre mes désirs de réalisation.

Je suis entrain de me développer une application ornithologique dont deux
données sont capitales. La première est le lieu de l'observation (une table)
l'autre l'espèce (une table) observée dans ce lieu, c'est la solution en
tiroir d'on je parlais plus haut. Hors pour le même lieu nous pouvons avoir
plusieurs espèces (ce qui ne justifie plus de de mander le lieu pour les
introductions suivantes) puis une fois ces deux données l'introduction des
autres données comme; le sex, détail de d'obs, heure, date, commentaires et
j'en passe...


Ce n'est toujours pas clair, ÀMHA. Que sont exactement tes données
entrées ? entrées par qui ? comment ? quel traitement fais-tu ? et
toute cette sorte de choses...



Voilà

Merci d'avoir pris le temps de me lire et pour les conseils donnés

Alain
--
Alain Chappuis (Remove: nospam to answer me in my address!)
(Enlevez: nospam de mon adresse pour me répondre!)
Avatar
Alain Chappuis
Okay pas de réponse bonne réponse
Je vais essayer avec Ajax qui devrait être ma meilleur lessive!

Alain
____________________________
Alain Chappuis a écrit , Le 19. 02. 10 13:48:
Merci Olivier pour ta réponse.

Olivier Miakinen a écrit , Le 19. 02. 10 13:06:
Bonjour,

Le 19/02/2010 08:50, Alain Chappuis se répondait :

Oui! et vous avez raison! je m'était mal expliqué avant.



Ta façon de répondre à ta question en disant « vous avez raison » est
plutôt surprenante. Bon, je vais supposer que tu répondais globalement à
Bruno, Pascal, Y, et Mickaël, mais tu aurais pu résumer au lieu de citer
l'intégralité de ta question (salutations et signature comprises).



Oui et désolé je n'ai pas repris les morceaux de réponses...


En fait j'ai un flux php qui est affiché sur le client puis dans
ce flux



C'est quoi un flux php ? C'est tout simplement une page html + code
javascript, ou bien il y a autre chose de plus à comprendre ?



Non c'est du code php qui recompose de l'html puis si nécessaire du
Javascript.


j'aimerais faire une recherche dans une autre fenêtre
pop-up (enfant)



Donc, là, PHP a fini son boulot et n'existe plus, et c'est Javascript
qui bosse.



Oui mais il y aura une interaction entre la fenêtre client (fils) et le
serveur pour faire la recherche d'une donnée dans MySql, une fois le
résultat obtenu j'aimerais que ce résultat soir communiqué à la
fenêtre père pour continuer le traitement de la fenêtre père.

En fait la fenêtre fils est déclenchée *que* si la donnée attendue est
manquante.

ou dans cette pop-up il y a une autre flux php qui
gère une recherche avec mysql.



Non. Si tu as du Javascript qui bosse sur une fenêtre existante, tu n'as
pas en même temps du PHP qui fait une recherche dans une base de
données. Ou alors c'est une autre fenêtre que tu ouvres, en lui passant
comme paramètres les termes de la recherche, afin qu'un *autre* process
PHP se lance et fasse le boulot que tu lui as préparé à l'avance.




Attention cependant : chez ceux qui ne veulent pas de popup, il est
possible que la nouvelle page remplace la précédente, et donc tu n'auras
plus de script parent.



Oui mais dans ce cas c'est de l'exploitation personnelle.


Une fois la recherche effectuée par
l"enfant" et qu'il se ferme, j'aimerais récupérer la valeur dans la
fenêtre "père"



Ah, parce que tu envisages d'ouvrir une fenêtre juste pour lancer la
requête PHP ? Dans ce cas pas besoin d'ouvrir une fenêtre ! Tu utilises
Ajax (XmlHttpRequest) pour lancer une requête HTTP sans changer de
fenêtre, et tu évites tous les problèmes liés aux popups. Note que
c'était ce que proposait Y.



Je ne connais pas Ajax! mais php et mysql puis infacto html je suis de la
vielle école en développant dans Windobe du GUI (fenêtres interactives)

par l'entremise d'une variable php $...



Non. Il faut que tu te mettes bien en tête que PHP n'a plus *aucune*
existence dans la fenêtre père. C'est ce que tentait de t'expliquer
Bruno. Voir aussi la FAQ de PHP :<http://faqfclphp.free.fr/#rub2.3>.



Ah effectivement! cela me complique le procédé, donc ma seule issue est
de faire une solution en tiroir avec le passage des paramètres obtenus
des treads anciens puis de composer le formulaire selon les valeurs
obtenues
des précédents résultats.


Je ne sais pas si c'est possible étant donné les explications avancées
ici en haut car Javascript étant actif uniquement sur le client alors
que
php est en conjonction avec le serveur au moment de la sortie des
données.



Ton besoin réel (que tu n'as toujours pas exposé) a probablement une
solution, mais pas de la façon que tu crois.



C'est très simple mais ne voulant pas charger le fil j'ai omis de faire
connaitre mes désirs de réalisation.

Je suis entrain de me développer une application ornithologique dont deux
données sont capitales. La première est le lieu de l'observation (une
table)
l'autre l'espèce (une table) observée dans ce lieu, c'est la solution en
tiroir d'on je parlais plus haut. Hors pour le même lieu nous pouvons avoir
plusieurs espèces (ce qui ne justifie plus de de mander le lieu pour les
introductions suivantes) puis une fois ces deux données l'introduction des
autres données comme; le sex, détail de d'obs, heure, date, commentaires et
j'en passe...


Ce n'est toujours pas clair, ÀMHA. Que sont exactement tes données
entrées ? entrées par qui ? comment ? quel traitement fais-tu ? et
toute cette sorte de choses...



Voilà

Merci d'avoir pris le temps de me lire et pour les conseils donnés

Alain




--
Alain Chappuis (Remove: nospam to answer me in my address!)
(Enlevez: nospam de mon adresse pour me répondre!)