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

passer une valeur de form à javascript à php

12 réponses
Avatar
Philippe Rousselot
bonjour,

je cherche à passer une variable d'une page à une autre sans utiliser de
link dans l'url


dans le 1er fichier j'ai un formulaire avec un champ recupérant un nombre.
ce nombre est tranformé en lettre avec un script JS. ex : 123 = "cent vingt
trois"
je veux passer cette variable de valeur = "cent vingt trois" dans une autre
page où elle sera utilisé par du php


fichier1.php

<script language="JavaScript">

function enlettre(f)
{
valeur = Number(f.nom_input_total.value);
bla bla : transforme un nombre en texte
confirm("Valeur : " + lettre); // ok ça marche
return la valeur de la variable lettre ;
}

</script>

<form nom="nom_form" id="id_form" method="POST" action="fichier2.php"
onsubmit="return enlettre(nom_form)">
<INPUT name="nom_input" id="id_input" >
</form>


fichier2.php

<?php
echo la valeur de la variable lettre ;

?>


merci de votre aide

Philippe

10 réponses

1 2
Avatar
Philippe Rousselot
quelque corrections s'impossent

fichier 1

<html>
<head>
</head>
<body>
<script language="JavaScript">

function enlettre(f)
{
aa = Number(f.id_input.value);
confirm("Valeur : " + aa); // ok ça marche
return aa;
}

</script>

<form nom="nom_form" id="id_form" method="POST" action="testjs2.php"
onsubmit="return enlettre(id_form)">
<INPUT name="nom_input" id="id_input" >
<input type="submit" name="Submit" value="Envoyer">
<input name="reset" type="reset" id="reset" value="Annnuler">

</form>

</body>
</html> onclick="return enlettre(id_form)"


fichier 2
<?php
$aa=isset($_POST['aa'])?$_POST['aa']:"";
$nom_input=isset($_POST['nom_input'])?$_POST['nom_input']:"";
echo "nombre : ".$nom_input;// ok ça marche
echo "<br>nombre : ".$aa; //ça ne marche pas

?>

Merci
Avatar
ASM

quelque corrections s'impossent


Pas grâve ...
mais j'ai comme l'impression que tu te casses le tronc
Et pourtant je ne connais pas le php

fichier 1

<html>
<head>
</head>
<body>
<script language="JavaScript">

function enlettre(f)
{
aa = Number(f.id_input.value);


ici :

<? truc bidule pour déclarer aa en php
$aa = "aa"; ???
echo $aa ?> = Number(f.id_input.value);

confirm("Valeur : " + aa); // ok ça marche
return aa;


ou , sinon faire çà :

confirm("Valeur : " + aa);
document.mon_form.result_lettre.value = aa;
return true;

}

</script>

<form nom="nom_form" id="id_form" method="POST" action="testjs2.php"
onsubmit="return enlettre(id_form)">


<input type="hidden" value="" name="result_lettre">

<INPUT name="nom_input" id="id_input" >
<input type="submit" name="Submit" value="Envoyer">
<input name="reset" type="reset" id="reset" value="Annnuler">

</form>

</body>


qu'est ce que c'est que ce truc après </html> ?

</html> onclick="return enlettre(id_form)"

fichier 2
<?php
$aa=isset($_POST['aa'])?$_POST['aa']:"";


Là je vois pas comment tu peux trouver aa
de renvoyer aa par le onsubmit sans l'avoir déclaré par php avant
c'est limite ce me semble
isset($aa) en fichier 2 devrait te donner une erreur


$nom_input=isset($_POST['nom_input'])?$_POST['nom_input']:"";
echo "nombre : ".$nom_input;// ok ça marche


avec le champ caché proposé + haut:
if(isset($result_lettre)) echo "nombre : ".$result_lettre;
else echo "Marche pô non plus !";

echo "<br>nombre : ".$aa; //ça ne marche pas


Normal : d'où qu'il est le $aa sur la page du form ?


?>

Merci


--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************

Avatar
Philippe Rousselot
ASM wrote:

<script language="JavaScript">

function enlettre(f)
{
aa = Number(f.id_input.value);


ici :

(dans la vrais vie, ce n'est bien sur pas aa que je veux passer mais le

resultat d'un calcul un peu long )

<? truc bidule pour déclarer aa en php
$aa = "aa"; ???
echo $aa ?> = Number(f.id_input.value);

la je suis pas sur de suivre tu ecrit en gros la même chose que

en javascript la valeur de aa est Number(f.id_input.value) et en php la
valeur de $aa est aa.


confirm("Valeur : " + aa); // ok ça marche
return aa;


ou , sinon faire çà :

confirm("Valeur : " + aa);
document.mon_form.result_lettre.value = aa;
return true;



Ok, là c'est bon. donc grace à ça je passe la valeur de aa dans
result_lettre qui correpond à la valeur du champ caché du meme nom


}

</script>

<form nom="nom_form" id="id_form" method="POST" action="testjs2.php"
onsubmit="return enlettre(id_form)">


<input type="hidden" value="" name="result_lettre">



ok bien que je ne vois pas comment cette valeur pourra être créée une fois
que j'aurais fait "OK"



<INPUT name="nom_input" id="id_input" >
<input type="submit" name="Submit" value="Envoyer">
<input name="reset" type="reset" id="reset" value="Annnuler">

</form>

</body>


qu'est ce que c'est que ce truc après </html> ?

</html> onclick="return enlettre(id_form)"



une crotte restant d'un copier/coller


fichier 2
<?php
$aa=isset($_POST['aa'])?$_POST['aa']:"";


Là je vois pas comment tu peux trouver aa
de renvoyer aa par le onsubmit sans l'avoir déclaré par php avant
c'est limite ce me semble
isset($aa) en fichier 2 devrait te donner une erreur


$nom_input=isset($_POST['nom_input'])?$_POST['nom_input']:"";
echo "nombre : ".$nom_input;// ok ça marche


avec le champ caché proposé + haut:
if(isset($result_lettre)) echo "nombre : ".$result_lettre;
else echo "Marche pô non plus !";



bon ça marche pour le code, mais $result_lettre est vide, cela revient à ma
question à propos du input hidden.


Merci

Philippe


Avatar
Philippe Rousselot
j'ai expurgé la chose au maximum :

<script language="JavaScript">

function unefonction(V1)
{
calculer plein de chose et obtenir comme resultat une variable V2 de
valeur "abc"

return quoi?
}

</script>

<?php
$V1= une variable contenant un nombre)
?>

<script language="JavaScript">
unefonction(<?php echo $V1 ; ?>);
</script>

<?php
echo $V2;
?>


merci encore

Philippe
Avatar
Olivier Miakinen

j'ai expurgé la chose au maximum :


J'expurge encore un peu.

<script language="JavaScript">
[...]
</script>

<?php
$V1= une variable contenant un nombre)
?>

<script language="JavaScript">
unefonction(<?php echo $V1 ; ?>);
</script>

<?php
echo $V2;
?>


Tu veux dire que tu voudrais faire connaître à PHP le résultat d'un
calcul JavaScript *sans recharger la page* ? C'est techniquement,
conceptuellement, fondamentalement IMPOSSIBLE. En effet, au moment
où ton code JavaScript s'exécute, cela fait belle lurette que
l'interpréteur PHP a fini de bosser, et tu ne pourras le relancer que
lors d'une *autre* requête.

Bon, en relisant tes deux articles initiaux (surtout le deuxième), j'ai
l'impression que tu veux bien faire deux requêtes. J'y retourne : je
vais essayer de comprendre, puis de te répondre.

Avatar
Olivier Miakinen

Bon, en relisant tes deux articles initiaux (surtout le deuxième), j'ai
l'impression que tu veux bien faire deux requêtes. J'y retourne : je
vais essayer de comprendre, puis de te répondre.


J'ai relu aussi la réponse d'ASM : tout y est, si ce n'est que j'aurais
utilisé document.getElementById() pour accéder au champ hidden. Lis sa
réponse, ça devrait fonctionner.

Avatar
Philippe Rousselot
Olivier Miakinen wrote:


j'ai expurgé la chose au maximum :


J'expurge encore un peu.

<script language="JavaScript">
[...]
</script>

<?php
$V1= une variable contenant un nombre)
?>

<script language="JavaScript">
unefonction(<?php echo $V1 ; ?>);
</script>

<?php
echo $V2;
?>


Tu veux dire que tu voudrais faire connaître à PHP le résultat d'un
calcul JavaScript *sans recharger la page* ? C'est techniquement,
conceptuellement, fondamentalement IMPOSSIBLE. En effet, au moment
où ton code JavaScript s'exécute, cela fait belle lurette que
l'interpréteur PHP a fini de bosser, et tu ne pourras le relancer que
lors d'une *autre* requête.

Bon, en relisant tes deux articles initiaux (surtout le deuxième), j'ai
l'impression que tu veux bien faire deux requêtes. J'y retourne : je
vais essayer de comprendre, puis de te répondre.



si tu veux tout le code n'hésite pas

il s'agit d'un formulaire avec un montant en chiffre et je dois mettre dans
une DB ce montant en chiffre plus celui en lettre (cent pour 100). le seul
script que j'ai pour faire cette conversion est en javascript, d'où mon
problème.

merci d'avance

Philippe


Avatar
Philippe Rousselot
Olivier Miakinen wrote:


Bon, en relisant tes deux articles initiaux (surtout le deuxième), j'ai
l'impression que tu veux bien faire deux requêtes. J'y retourne : je
vais essayer de comprendre, puis de te répondre.


J'ai relu aussi la réponse d'ASM : tout y est, si ce n'est que j'aurais
utilisé document.getElementById() pour accéder au champ hidden. Lis sa
réponse, ça devrait fonctionner.
OK merci


Philippe


Avatar
ASM

ASM wrote:


<nip>

On recommence à zéro.

1) je ne connais pas le php, je crois seulement savoir
lui faire écrire une variable issue d'un formulaire
(la valeur envoyée par le formulaire d'un champ nommé)

2) on a une fonction d'un calcul bizarre
qui au final nous donne un nombre en lettres
function truc(lebidule) { blabla }

3) la fonction envoie ce résultat en valeur d'un champ caché
du formulaire (on l'appellera "result")

4) le formulaire a un bête bouton submit
qui sert à valider et envoyer le formulaire

5) le formulaire a en action : un_fichier_php
qui après avoir fait son travail
viendra s'afficher à la place du formulaire

6) l'action du formulaire est soumise à un "onsubmit"
onsubmit=" return truc(document_monForm.nombre.value);"
c a d :
l'action ne se fera que si truc() renvoie true
donc truc() , puisque le onsubmit le demande,
est lancé à la validation et :
- bidouille document_monForm.nombre.value
- met le resultat en lettre dans le champ "result"
- envoie vrai -> return true
L'action a reçu vrai -> hop! envoyé.

7) le fichier php va regarder si "result" a été rempli
et réagir en conséquence
if(isset($result) echo "Nombre en lettres = '.$result;
else echo "Cela n'a pas fonctionné";
ou direct :
<p>Le nombre en lettres = <? echo $result ?> </p>


<script language="JavaScript">

function enlettre(f)
{
<? truc bidule pour déclarer aa en php

$aa = "aa"; ???
echo $aa ?> = Number(f.id_input.value);

la je suis pas sur de suivre tu ecrit en gros la même chose que

en javascript la valeur de aa est Number(f.id_input.value) et en php la
valeur de $aa est aa.


Ben ... je ne connais pas le php et j'extrapole un chouias
Je fais ecrire par le php la variable javasript aa
ainsi j'imagine que tous 2 connaitrons la même variable

variable php $aa est la même que variable JS aa

Mais ce n'est peut-être pas exactement comme ça qu'on fait ?

Le mieux c'est encore le champ caché du formulaire
(qui est envoyé automatiquement avec le formulaire
et qu'il est facile au php d'intercepter-interpréter)


document.mon_form.result_lettre.value = aa;
return true;



Ok, là c'est bon. donc grace à ça je passe la valeur de aa dans
result_lettre qui correpond à la valeur du champ caché du meme nom


je rempli la valeur du champ caché result_lettre avec celle de aa


}

</script>

<form nom="nom_form" id="id_form" method="POST" action="testjs2.php"
onsubmit="return enlettre(id_form)">


<input type="hidden" value="" name="result_lettre">



ok bien que je ne vois pas comment cette valeur pourra être créée une fois
que j'aurais fait "OK"


quand tu fais OK ça déclanche le onsubmit
ce dernier a pour tâche de retourner (à l'action du form)
le résultat de ta fonction de calcul

Il attend que la fonction lui dise oui ou non
Pendant ce temps la fonction fait son travail (nbre lettres et hidden)
et enfin lui donne le feu vert ( return true; )

<INPUT name="nom_input" id="id_input" >
<input type="submit" name="Submit" value="Envoyer">
<input name="reset" type="reset" id="reset" value="Annnuler">

</form>

</body>
</html>


fichier 2
<?php
$aa=isset($_POST['aa'])?$_POST['aa']:"";
$nom_input=isset($_POST['nom_input'])?$_POST['nom_input']:"";
echo "nombre : ".$nom_input;// ok ça marche


avec le champ caché proposé + haut:
if(isset($result_lettre)) echo
else echo "Marche pô non plus !";



bon ça marche pour le code, mais $result_lettre est vide, cela revient à ma
question à propos du input hidden.


Mets ce champ hidden en text et essaie de voir si à l'envoi
il a bien reçu le nombre en lettres.
Car, à mon idée, ça doit fonctionner.

Et puis mes faibles notions de php datent un peu ..
semblerait qu'il faille utiliser :

if(isset($_POST['result_lettre'])) echo "nombre : ".$_POST['result_lettre'];



--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************



Avatar
ASM

j'ai expurgé la chose au maximum :

<script language="JavaScript">

function unefonction(V1)
{
calculer plein de chose et obtenir comme resultat une variable V2 de
valeur "abc"

return quoi?


dans notre cas le onsubmit attend un return true ou false
comme on veut que ça envoie : return true;

par contre ton V2 il aurait falu s'en servir avant et de débrouiller
pour le refiller au formulaire

soit en le rentrant dans un champ nommé (caché ou non)
documement.mon_form.champ_lettres .value = V2;
soit en l'ajoutant à l'action ( si method=get)
with(document.mon_form) action = action+'?aa='+V2;

}
</script>


le php de récup
cas 1 :
<p>Le nombre en lettres = '<? echo $_POST['champ_lettres'] ?> </p>
cas 2:
<p>Le nombre en lettres = '<? echo $_GET['aa'] ?> </p>


je supose que tu connais :
http://dev.nexen.net/docs/php/
et puis ...
http://www.nexen.net/docs/php/annotee/rapide.php?quoi=formulaire
et surtout :
http://www.nexen.net/docs/php/annotee/language.variables.external.form.php?lien=formulaire

--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************

1 2