Passer une variable javascript à php via form

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>

6 réponses

  1. proseme Messages postés 4 Statut Membre 2
     
    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
  2. proseme Messages postés 4 Statut Membre 2
     
    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
  3. ReDLoG
     
    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
  4. vordano Messages postés 1981 Statut Membre 316
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
  7. proseme
     
    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
    1. Rostov
       
      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
    2. proseme
       
      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