IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Passer une variable de JS a PHP via un submit ?


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 57
    Points : 35
    Points
    35
    Par défaut Passer une variable de JS a PHP via un submit ?
    Bonjour tout le monde,
    Pour faire simple et afin que ca soit plus compréhensible je vais un peu changer la situation de mon problème mais la solution est semblable.
    Dans un formulaire j'ai plusieurs listes déroulantes en HTML et une fonction javascript va regrouper et renvoyer en une valeur les choix des listes. Sur cette page, j'ai un bouton qui, lorsque je clique dessus, il m'affiche la valeur renvoyée par la fonction javascript via une alert.

    Ce que je souhaiterais faire, c'est supprimer ce bouton (facile) mais via un submit (qui me redirige vers une page verifobjet.php) c'est récupérer la valeur envoyé par le code javascript et pouvoir la traitée et la mettre dans une variable php.

    Quand je dis que la fonction renvoie la valeur c'est via un onclick:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     onclick="goListGroup(document.listmenu0.firstlevel, document.listmenu0.secondlevel, document.listmenu0.thirdlevel)"
    Code JS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    var onclickaction="alert"
     
    function goListGroup(){
    for (i=arguments.length-1;i>=0; i--){
    if (arguments[i].selectedIndex!=-1){
    var selectedOptionvalue=arguments[i].options[arguments[i].selectedIndex].value
    if (selectedOptionvalue!=""){
    if (onclickaction=="alert")
    alert(selectedOptionvalue)
    else if (newwindow==1)
    window.open(selectedOptionvalue)
    else
    window.location=selectedOptionvalue
    break
    }
    }
    }
    }
    Suis-je obligé de passer par de l'ajax ?
    Si non, pourriez vous m'aider a trouver une solution sans passer par les name des listes déroulantes ? Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    AJAX serait la solution la plus facile ici, mais non tu n'es pas obligé. Il reste possible en JS de modifier l'attribut action de la balise formulaire au onsubmit, pour venir insérer tes variables JS puis les récupérer en paramètres d'URL en PHP.
    One Web to rule them all

  3. #3
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Pour rester dans l'esprit original de HTTP/HTML
    il suffit d'ajouter un champs hidden au formulaire
    et sur le son submit copier la valeur de la variable dans le champ

    le serveur reçois la valeur comme pour tous les autres champs de formulaire.

    A+JYT

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    N'étant pas du tout calé en javascript je regarde sur internet comment faire mais je je suis perdu du aux autres méthodes possibles que je ne comprends pas non plus ... Vous pourriez me mettre un petit exemple afin que je puisse par la suite adapter avec mon code ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    J'ai quand même essayé en ajax mais je ne comprends pas pourquoi ca ne fonctionne pas.
    Mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    function goListGroup(){
    for (i=arguments.length-1;i>=0; i--){
    if (arguments[i].selectedIndex!=-1){
    var selectedOptionvalue=arguments[i].options[arguments[i].selectedIndex].value
    if (selectedOptionvalue!=""){
    if (onclickaction=="alert")
    alert(selectedOptionvalue)
    else if (newwindow==1)
    window.open(selectedOptionvalue)
    else
    window.location=selectedOptionvalue
    break
    }
    }
    }
    $.ajax({
           	url : '../objet/test.php',
           	type : 'POST', 
           	data : 'mavariable1=' + selectedOptionvalue,
        });
    }
    et dans test.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    include '../connection.php';
    $mavariable2=$_POST['mavariable1'];
    echo $mavariable2;
     ?>

    J'ai un message d'erreur car il ne repère pas la variable mavariable1, vous auriez une idée ?

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    j'ai également essayé avec ceci mais $_POST['mavariable1'] n'est toujours pas détectée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "../objet/test.php", true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send("mavariable1=" + escape(selectedOptionvalue));
    Vous pouvez m'aider ?

  7. #7
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Sans AJAX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var maVariable=45;
     
    myFunction = function() {
     documet.getElementById('pourTransmettreMaVariable').value=maVariable;
     return true;
    }
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form action="page.php" onsubmit="return myFunction()">
     <input type="hidden" id="pourTransmettreMaVariable" name="mavariable" />
     <input type="submit" value="Submit" />
    </form>

    C'est tout

    A+JYT

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    Effectivement c'était tout simple .. Un grand merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. passer une variable de javascript vers php
    Par marcel marie dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 28/07/2009, 11h01
  2. passer une variable javascript à un script php
    Par kawther dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 30/03/2007, 17h21
  3. PHP Passer une variable via une liste deroulante
    Par lepierre dans le forum Langage
    Réponses: 3
    Dernier message: 20/10/2006, 12h09
  4. [PHP-JS] Passer une variable PHP->JS dans une boucle
    Par PedroBD dans le forum Langage
    Réponses: 2
    Dernier message: 12/05/2006, 11h43
  5. faire passer une variable d'une fct js à une page php
    Par harlock59 dans le forum Langage
    Réponses: 1
    Dernier message: 25/11/2005, 14h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo