Passer une variable javascript à php via form

Fermé
proseme Messages postés 4 Date d'inscription jeudi 12 avril 2012 Statut Membre Dernière intervention 17 avril 2012 - 12 avril 2012 à 15:59
proseme Messages postés 4 Date d'inscription jeudi 12 avril 2012 Statut Membre Dernière intervention 17 avril 2012 - 17 avril 2012 à 17:32
Bonjour,


Je sèche depuis trois jours (à temps plein!) et je ne trouve pas pourquoi le script ci-dessous ne fonctionne pas.

J'ai essayé toutes les solutions proposées dans d'autres sujets et aucune ne marche. Je dois louper quelque chose et j'ai besoin d'aide.

Voici mon problème :
La page demande.php comporte une (longue) liste de mots. Le mot cliqué détermine la valeur de $a. Je veux passer cette valeur à la page resultat.php qui va faire un calcul sur $a (j'ai retiré le calcul et je l'ai remplacé par une simple instruction echo).
En fait resultat.php est bien activé mais ne semble pas avoir reçu la variable. Il imprime :
« Hello world ! Le mot demandé est » suivi d'un blanc

Quelqu'un peut-il m'indiquer pourquoi la variable « n'est pas passée » ?
J'espère que je ne dois pas recourir forcément à des solutions plus complexes genre Ajax.

demande.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
<html>
<head> </head>
<body>
<a href=" " onClick="var $a='grenouille'; traitement($a);return true;"> grenouille </a> <br />
<a href=" " onClick="var $a='perroquet'; traitement($a);return true;"> perroquet </a> <br />
<a href=" " onClick="var $a='serpent'; traitement($a);return true;"> serpent </a> <br />
<a href=" " onClick="var $a='tigre'; traitement($a);return true;"> tigre </a> <br />
<script type="text/javascript">
function traitement($a)
{
document.getElementById("entree").value = $a;
alert(document.getElementById('entree').value);
return true;
}
</script>
<form action="resultat.php" method="post">
<input id="entree" name="entree" type="hidden" value="">
<input type="submit">
</form>
</body>
</html>


resultat.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd >
<html>
<head></head>
<body >
<?php
echo "Hello world !";
echo " Le mot demandé est ", $_POST['entree'];
?>
</body>
</html>
A voir également:

6 réponses

proseme Messages postés 4 Date d'inscription jeudi 12 avril 2012 Statut Membre Dernière intervention 17 avril 2012 2
Modifié par proseme le 17/04/2012 à 08:57
Rostov, j'ai cherché form.submit sur le web et je comprends mieux ton message.

Ce matin j'ai testé en local un script avec ta solution, cad un document.myform.submit(). Et là: petit MIRACLE: ça marche, et ça marche sur tous mes navigateurs (IE, Safari, Chrome, Firefox et Opera) !!

Ne nous emballons pas: il faut d'abord vérifier que ça continue à marcher une fois intégré dans le programme réel et envoyé sur le Net.

Mais d'ores et déjà UN GRAND MERCI Rostov !!
1
proseme Messages postés 4 Date d'inscription jeudi 12 avril 2012 Statut Membre Dernière intervention 17 avril 2012 2
Modifié par proseme le 17/04/2012 à 17:41
Confirmation: ça marche aussi une fois sur le Net! Et ça marche avec tous les navigateurs mentionnés plus haut ainsi que sur tablettes Galaxy (androïd) et iPad. Votre aide a été précieuse! Merci.

Voici le code pour ceux qui rencontreraient le même problème:
= = = = = = = = = = = = = = = = = =
<a href="javascript:document.getElementById('entree').value='grenouille'; submitform();"> grenouille </a> <br />
<a href="javascript:document.getElementById('entree').value='perroquet'; submitform();"> perroquet </a> <br />
<a href="javascript:document.getElementById('entree')'value='serpent'; submitform();"> serpent </a> <br />
<a href="javascript:document.getElementById('entree').value='tigre'; submitform();"> tigre </a> <br />

<!-- Le code pour envoyer le resultat correspondant au lien cliqué -->
<form name="myform" action="resultat10get.php" method="get">
<input id="entree" name="entree" type="hidden">
</form>

<script type="text/javascript">
function submitform()
{ document.myform.submit(); }
</script>
= = = = = = = = = = = = = = = = = =
1
Bonsoir,
Si tu veux passer une variable d'une page à un script PHP situé dans une autre page, il faut utiliser la méthode GET et faire passer cette variable dans le lien :
<a href="resultat.php?element=grenouille"> grenouille </a><br />
<a href="resultat.php?element=perroquet"> perroquet </a><br />
<a href="resultat.php?element=serpent"> serpent </a><br />
<a href="resultat.php?element=tigre"> tigre </a><br />

fichier resultat.php :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>
 <html>
<head></head>
<body><?php 
echo "Hello world !"; 
echo " Le mot demandé est ", $_GET['element']; 
?></body> 
</html>

Tu ne pourras pas passer une variable javascript à un script PHP sur un onclick.
0
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
Modifié par vordano le 12/04/2012 à 17:01
ou alors au lieu de .value = $a tu utilise .href = $a (ça devrais marcher mais je n'en suis pas sur a 100%, j'ai la flemme d'essayer. cependant ça modifie le html directement)

et pour passer des valeurs en get c'est window.location.href("resultats.php?variable="+$a);

dites non aux lois liberticide (hadopi, sopa,pipa,arjel,acta,ipred) et à la censure numérique !!!
0

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

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 avril 2012 à 20:58
avec ta methode modifiée ci dessous tu dois cliquer 2 fois (une sur le lien et 1 sur le bouton submit du formiulaire:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
<html>
<head> </head>
<body>
<a href="javascript:traitement('grenouille');"> grenouille </a> <br />
<a href="javascript:traitement('perroquet');"> perroquet </a> <br />
<a href="javascript:traitement('serpent');"> serpent </a> <br />
<a href="javascript:traitement('tigre');"> tigre </a> <br />
<script type="text/javascript">
function traitement($a)
{
document.getElementById("entree").value = $a;
alert(document.getElementById('entree').value);
return true;
}
</script>
<form action="resultat.php" method="post">
<input id="entree" name="entree" type="hidden" value="">
<input type="submit">
</form>
</body>
</html>


resultat.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd >
<html>
<head></head>
<body >
<?php
echo "Hello world !";
echo " Le mot demandé est ", $_POST['entree'];
?>
</body>
</html>


alors qu'avec la methode proposée par RedLog tu passes en GET par le lien en 1 seul click
0
Alain_42, RedLog et vordano, merci pour vos réponses.

Merci pour vos réponses qui, l'une avec GET, l'autre avec POST, placent du javascript directement dans href et non pas dans un attribut-évènement comme onclick ou autre? Ca marche avec certains navigateurs (comme Chrome).

J'ai lu que placer du javascript directement dans href était une "méthode obsolete", qu'en pensez-vous? Est-ce que ça pourrait être la raison pourquoi le programme ne s'exécute pas avec d'autres navigateurs (comme Firefox)

Encore merci pour votre aide,
0
Je cropit qu'il faut utiliser un winput type='button' et l'événement onSubmit.

Déjà eu ce soucis, le submit s'exécute avant le js pose conflit et utiliser un bouton et un Submit.form javascript permet de résoudre le problème.
0
Rostov, j'ai essayé dans tous les sens, je n'arrive pas à faire marcher ta solution. Peux-tu expliquer un peu plus longuement stp ?
C'est quoi exactement " un bouton et un Submit.form javascript " ?
0