Passer variable javascript en php

Mickael86480 Messages postés 698 Statut Membre -  
Mickael86480 Messages postés 698 Statut Membre -
Bonjour,

Voici ce que j'ai produit :

<SCRIPT language="Javascript">var relance = prompt("De combien voulez-vous relancer ?");</SCRIPT>
.
.
.
autre code php
.
.
.
?><SCRIPT language="Javascript">var relance =</SCRIPT><?php$relance;?>
<?php
$capital2=$capital-$relance;

Or il s'avère que $capital2 a la même valeur que $capital
Je pense que comme $relance n'est pas dans le même bloc php, il est égale a 0.
Comment puis-je faire? Sachant que si je ne fais pas <?php$relance;?>, il y a une erreur

merci

A voir également:

4 réponses

supernico Messages postés 584 Statut Membre 193
 
d'où vient ta variable $relance en php ?

tes 2 morceaux de code Javascript sont-ils exécutés dans la même page ?
0
Mickael86480 Messages postés 698 Statut Membre 35
 
$relance est créée dans la page au niveau de ?><SCRIPT language="Javascript">var relance =</SCRIPT><?php$relance;?>

et oui le code que j'ai montré est sur la même page
0
supernico Messages postés 584 Statut Membre 193
 
je vois bien la création de la variable "relance" en Javascript (2 fois même, ce qui peut poser problème) mais je ne vois pas la création de la variable "$variable" qui, elle, est une variable php
0
Mickael86480 Messages postés 698 Statut Membre 35
 
Ok j'ai supprimé la deuxième création de relance merci.

j'ai renommé $relance en $relancer, est-ce ça le problème?
<SCRIPT language="Javascript">relance =</SCRIPT><?php$relancer;?>

sinon je ne vois pas où il est car $relancer est créée dans le passage de valeur entre var relance et $relancer
0
__construct
 
Si tu veux passer une valeur de variable PHP à javascript, il faudrait normalement faire ceci :
<?php
$relance = 10;
?>
<script type="text/javascript">var relance=<?php echo $relance; ?>;</script>

Sachant que pour javascript 10 n'est pas une valeur mais une string et que si tu veux réaliser une opération mathématique avec ce nombre il te faudra utiliser parseInt() http://www.toutjavascript.com/reference/reference.php?ref=parseInt&parent=210
0
avion-f16 Messages postés 20367 Date d'inscription   Statut Contributeur Dernière intervention   4 509
 
Salut,

@__construct : ce que tu dis à propos des types n'est pas tout à fait exact.
De ton exemple, voici le code qui sera envoyé au navigateur, donc une fois le PHP exécuté :
<script type="text/javascript">var relance=10;</script>
La variable JS « relance » sera donc un entier (integer), parseInt() n'est pas utile, on peut effectuer des opérations mathématiques.

Pour ce qui est de l'échange de variable entre JS et PHP, ce n'est possible que dans le sens « PHP -> JS » (comme __construct l'a montré) mais pas dans l'autre. Et l'explication est très simple : le PHP est exécuté par le serveur avant d'envoyer la page au client (navigateur). Lorsque le Javascript est exécuté (par le navigateur), le PHP n'est plus présent dans le code source plus.

Je t'invite à regarder du côté d'AJAX (XmlHttpRequest), peut-être que c'est la solution à ton problème.
0
__construct
 
Effectivement tu as raison, je me rappelle avoir eu ce problème d'une valeur entrée dans un formulaire et qui devait être manipulée dans une opération mathématique et j'avais eu ce problème!
Dans le cas présent, effectivement c'est bien un integer pour javascript!
Mille excuses pour ma fausse information... et un grand merci à avion-f16 pour avoir relevé mon erreur!
@+
0
Mickael86480 Messages postés 698 Statut Membre 35
 
D'accord mais l'opération ne se fait pas en javascript mais en php, parseInt() ne m'es pas utile si je ne me trompe pas.

Je n'es peut-être pas été assez clair dans mes explications, en faite, je fais un site de poker, lorsque l'utilisateur clique sur le bouton relancer, une fenêtre en javascript apparaît et lui demande de combien il souhaite relancer. D'où le prompt(). Je récupère la valeur retourné par cette fonction et je soustrais la valeur du capital de départ par la valeur de la relance et j'affiche cette nouvelle valeur.

J'espère être suffisamment clair, si ce n'est pas le cas dites-le moi merci
0
avion-f16 Messages postés 20367 Date d'inscription   Statut Contributeur Dernière intervention   4 509
 
AJAX est sûrement la solution. Mais soit prudent, n'oublie pas que le Javascript peut être modifié. On peut même en exécuté via la console du navigateur, donc modifier les variables.

prompt() te retournera bien une chaine, même si tu indiques « 10 ».
Mais la convertir en entier avec parseInt ne servira à rien si tu utilises AJAX : le nombre sera passé en argument GET ou POST et redeviendra une chaine en PHP.

http://www.siteduzero.com/tutoriel-3-4745-ajax-et-l-echange-de-donnees-en-javascript.html
0
Mickael86480 Messages postés 698 Statut Membre 35
 
Si je fais ça en créant une fonction en JavaScript est-ce que cela est faisable?

en gros, lorsque l'utilisateur clique sur le bouton relancer, on appelle une fonction JS, qui prend la valeur de la relance via le prompt, la soustrait au capital de départ, et retourne la valeur du nouveau capital.
0
avion-f16 Messages postés 20367 Date d'inscription   Statut Contributeur Dernière intervention   4 509
 
Oui, mais on peut facilement modifier le JS, donc modifier le capital.

Sous chrome, si tu ouvres l'outil de développement (F12), tu peux insérer du JS via l'onglet « Console ».
Pareil sous Firefox avec Maj+Ctrl+K
0
Mickael86480 Messages postés 698 Statut Membre 35
 
Ok mais je me fais un site juste pour moi et mes proches, et non pour le grand public donc sa ira je pense
0