Passer une variable javascript à php via form
proseme
Messages postés
4
Statut
Membre
-
proseme Messages postés 4 Statut Membre -
proseme Messages postés 4 Statut Membre -
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>
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>
6 réponses
-
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 !! -
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>
= = = = = = = = = = = = = = = = = = -
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. -
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 !!! -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 -
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,