Passage de variable javascript vers php

cs_zakuli Messages postés 16 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 30 novembre 2010 - 16 déc. 2003 à 11:28
brice0306 Messages postés 68 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 16 février 2006 - 11 déc. 2004 à 23:30
Bonjour,

Débutant Javascript, j'aimerai savoir s'il éxiste un moyen simple de passer une variable (issue d'une fonction javascript) à un script php.

Exemple : Récup de la résolution d'écran du navigateur du visiteur (screen.width & screen.height) pour calculer avec php la taille d'une image à éditer (issue d'une banque d'images gérée par MySQL) :)

Merci

20 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
16 déc. 2003 à 15:43
Bonjour
...

<!si on veut>
<form name=frm method=post action=pgr.php>

</form>

...
<script language="javascript">
frm.p1.value=???;
frm.p2.value=???;
...
frm.go.click(); // appel programme php
...
</script>

et dans pgr.php
utiliser $p1 et $p2

suis-je clair ?

Cordialement. Bul.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
16 déc. 2003 à 15:45
mes excuses,
c'est :

sous réserve d'autres fautes de frappe
Bul.
0
cs_zakuli Messages postés 16 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 30 novembre 2010
16 déc. 2003 à 20:05
Merci de ta réponse Bul.

Pour l'instant, ne connaissant pas javascript, je ne comprend pas tout, mais je vais m'attacher à résoudre mon problème !

Que j'y arrive ou pas je te laisserai un message sur le forum.

Encore merci

Zak.
0
cs_zakuli Messages postés 16 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 30 novembre 2010
17 déc. 2003 à 12:42
Bonjour,

Après essai du script ci dessus, j'ai une erreur java m'indiquant que frm est indéfini !

Le script java s'éxécutant en tête, il n'a pas le temps de voir l'éxécution du du form je suppose.

Faudrait il créer le formulaire en java, si c'est possible ? :question)

Zak
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
17 déc. 2003 à 13:17
Bonjour

JavaScript pas Java !!!

<form name=frm ...>
sûr d'avoir mis ça ?
une erreur sur quelle ligne ?
à priori pas de raison que cela ne marche pas

attention aux erreurs de syntaxe > " ' oubliés

faudrait joindre uniquement "bout" de pgr qui
ne marche pas parce que sinon ça va être dur
de répondre.

Cordialement. Bul.
0
cs_zakuli Messages postés 16 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 30 novembre 2010
17 déc. 2003 à 13:53
Re,

Eh te fache pas ! (ave l'acent de marseille)

Mais tu as raison, à un débutant il faut inculquer les bonnes manières.

Bon mon script réel est le suivant

<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">
ecran.larg.value=screen.width;
ecran.haut.value=screen.height;
ecran.go.click(); // appel programme php
</script>
</head>

<form name="ecran" method="post" action="acceuil.php">

</form>

</html>

L’erreur se situe à la ligne 5 : ‘ecran’ est indéfini => i.e. <script language="javascript">

Merci pour ton aide

Zak 8-)
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
17 déc. 2003 à 15:04
Bonjour

j'avais pas l'air faché ! si ?
mes excuses alors, ce n'était pas mon intention

pour l'erreur normal :
javascript fait appel à quelquechose qui n'existe pas encore
met le script aprés </form>
...
javascript est un interpréteur et exécute au fur et à mesure

je ne suis guère expérimenté et je n'ai de leçons
à donner à personne.

Cordialement. Bul.
0
cs_zakuli Messages postés 16 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 30 novembre 2010
17 déc. 2003 à 15:37
Re Bul,

A la Cyrano

Heureux : Bravo ça marche, c'est parfait !

Etonné : Pourtant je pensais qu'une déclaration de javascript ne devait se faire qu'entre les balises <head> & </head> !

Sceptique : à tel point que j'ai failli ne pas essayer !

Triste : C'est malheureux de voir à quel point on peut être optu !

Encore sceptique : Mais est ce que tu es sûr que ça marchera avec tous les navigateurs ?

Jamais content : Maintenant que tu m'as donné les clés de mon problème, connaîtrais tu une astuce qui permettre cet echange de variable dans la même page ?

Poli mais sincère : Encore merci, amicalement

Zak.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
17 déc. 2003 à 15:49
Bonjour

en fait avant il ne faut mettre que des function
qui seront appelées lors d'actions de l'utilisteur ou par
le corps du programme
on peut les mettre n'importe où ailleurs.

toute variable déclarée hors d'une function est accessible partout
elle est globale
celles déclarées dans une fonction sont locales
et accessible uniquement dans sa fonction

astuce qui permettre cet echange de variable
dans la même page

en javascript/php répondu avec locales et globales
et les $variable en php par appel
<form method=get .. sont globales

je ne sais pas si je répond réellement ??

Cordialement. Bul.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
17 déc. 2003 à 15:52
je n'ai pas répondu à
"Mais est ce que tu es sûr que ça marchera avec tous les
navigateurs ?"
euh ? OUI.
Cordialement. Bul.
0
cs_zakuli Messages postés 16 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 30 novembre 2010
17 déc. 2003 à 16:23
"en javascript/php répondu avec locales et globales
et les $variable en php par appel
<form method=get .. sont globales"

Pas compris ! Mais j'ai essayé ce qui m'est passé par la tête en te lisant :
1-supprimer l'action du formulaire
2-editer les variable dans la page

Et oh étrange, un programme qui boucle !
au premier passage les variables sont vides, au second elles sont bonnes ! Mais le programme boucle toujours !

Amitiès

Zak

Si tu veux essayer, ci joint le script qui tue :
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<form name="ecran" method="post" action="">

</form>

<script language="javascript">
ecran.larg.value=screen.width;
ecran.haut.value=screen.height;
ecran.go.click(); // appel programme php
</script>
<?php
echo "larg:$larg; haut:$haut;
";
?>

</html>
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
17 déc. 2003 à 16:59
c'est normal que ça boucle
1ère fois :
on exécute javascript
qui lance "programme" de action= avec go.click
"programme" : on exécute javascript
qui lance "programme" de action= avec go.click ....

action="programme à charger pour traiter le submit"

mais je n'ai donc pas compris la question précédente
"connaîtrais tu une astuce qui permettre cet echange de variable dans la même page ?"
c'est à dire ?

dans php on dispose de $larg et $haut
en javascript de ecran.larg.value et ecran.haut.value

on en fait ce que l'on veut

pour que les choses soient bien claires :

javascript se déroule sur la machine client
et envoie ordre => serveur
PHP qui se déroule sur le serveur, reçoit l'ordre, génére du
htm/javascriot et le renvoie au client

précision donc sur la question ?

Cordialement. Bul.
0
cs_zakuli Messages postés 16 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 30 novembre 2010
17 déc. 2003 à 18:10
Soit Index.php le script utilisé et accueil.php celui appelé par le formulaire.

Dans Index.php, je n'ai pas l'accès php à $larg et $haut, car je n'aurais accès à ces variables que dans celui de "accueil.php". OK ?

Si ta réponse est OK, il me faut donc le passage à une autre page pour pouvoir utiliser mes 2 variables $larg et $haut. OK ?

Ma question était donc : Y a-t-il une autre solution pour avoir accès à aux variables php initialisées par javascript dans la même page ?

Suis je plus clair ?

Script Index.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<form name="ecran" method="post" action="accueil.php">

</form>

<script language="javascript">
ecran.larg.value=screen.width;
ecran.haut.value=screen.height;
ecran.go.click(); // appel programme php
</script>

</html>

Script accueil.php
<?php
session_start();
session_register("ecran_larg");
session_register("ecran_haut");
echo "ecran_larg:$ecran_larg; ecran_haut:$ecran_haut;
";
?>
...
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
18 déc. 2003 à 10:28
Bonjour
mon forfait tiscali s'arrete à 17h
je ne repond donc que maintenant
j'ai été confus dans les explications
récapépétons :
on lance un programme php ( index.php )
sur le serveur, ce PHP se déroule, génère le script, les variables $larg et $haut qui ne sont pas encore significatives, passe la main au client.
chez le client le htm/javascript généré par index.php s'exécute, on a accès à ecran.larg.value et ecran.haut.value, on en fait ce que l'on veut. avec ecran.go.click on lance sur le serveur, le programme PHP cité dans action=accueil.php par ex.
sur le serveur accueil.php est exécuté, il accéde à $larg et $haut.
pour communiquer entre javascritp et php la seule solution que je connaisse est par <form...<input.. Ca ne prouve pas qu'il n'y a pas d'autres possibilités. Faut voir sur le form PHP.
tu vois ?
le javascript pourrait appeller 2 php, je pense, mais je ne vois pas l'intérêt à priori. un php peut appeller un autre php.
dans php on peut tester les variables transmises par javascript.
pour répondre à ta question que veux-tu faire ?
je ne vois pas ce qui te gène. tu sais je suis un peu bébète et il faut m'expliquer simplement.

Cordialement. Bul.
0
cs_zakuli Messages postés 16 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 30 novembre 2010
18 déc. 2003 à 15:59
Merci pour tes explications, elles me semblent très claires et dans mon cas présent, la solution que tu m'as donnée est parfaite.

Mais imagine que dans cette page index.php, je veuille redimensionner une image (en fonction la résolution d'écran) et que cette image ne soit accessible qu'au travers de la base de donnée gérée par php mysql, je ne pourrai le faire avec $larg et $haut qui ne sont pas chargées ni avec ecran.larg.value et ecran.haut.value qui ne seront pas reconnues dans le script php.

Quand à "tu sais je suis un peu bébète" ça a l'air d'être tout le contraire car tu as réponse à toutes mes questions aussi agaçantes les unes que les autres et je te remercie sincèrement de ta patience.

Je suis obligé maintenant de partir et ne reviendrai sur le forum que demain matin. Aussi bonne soirée

Zak
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
19 déc. 2003 à 08:17
Bonjour

réponse peut-être ? on veut en fait un seul "php"

index.php =
<? si variable non défini (isset de mémoire ? )
{ générer html et javascript
avec action="index.php" }
else
{ traiter form envoyé }
?>

par exemple

Cordialement. Bul.
0
cs_zakuli Messages postés 16 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 30 novembre 2010
20 déc. 2003 à 08:36
Re bonjour maître Bul,

Le disciple a mis en pratique :

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<?
if (!isset($l))
{ ?>


<form name="ecran" method="post" action="ess.php">



</form>


<script language="javascript">
ecran.l.value=screen.width;
ecran.h.value=screen.height;
ecran.go.click(); // appel programme php
</script>
<?
}
else
{
//Partie où l'on peut utiliser les variables php
echo "l:$l; h:$h;
";
}
?>

</html>

Et ça marche !

Bravo Bul

Zak
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
20 déc. 2003 à 08:49
il vous en prie
heureux d'avoir pu rendre service.
Cordialement. Bul.
0
fjx Messages postés 22 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 26 mars 2009
20 nov. 2004 à 07:15
un autre moyen de convertir une variable javascript en variable php sans formulaire :

<?php
ob_start();
?>
<script language="JavaScript1.2">document.write(navigator.appName);</script>
<?php
$variable = ob_get_contents();
ob_end_clean();

echo $variable;
?>
0
brice0306 Messages postés 68 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 16 février 2006
11 déc. 2004 à 23:30
Salut fjx !

Ta méthode a l'air trèèès intéressante, seul petit hic, elle ne marche pas !

J'ai essayé de bidouller, j'ai regardé la doc des fonctions ob_xxxxx(), mais j'y arrive pas, la variable $variable ne contient pas une chaine du type "mozilla machin chose"
mais "<script language="JavaScript1.2">document.write(navigator.appName);</script>"

Une idée ?

_______________
www.arsenal.fr.st
0
Rejoignez-nous