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 JavaScript en PHP/HTML


Sujet :

JavaScript

Vue hybride

blobfish75 Passer une variable... 07/11/2019, 14h37
javatwister Quand tu envoies un... 07/11/2019, 17h49
javatwister J'oubliais: il est toujours... 07/11/2019, 18h39
blobfish75 Merci beaucoup javatwister !... 07/11/2019, 21h01
amateurprg Salut ;) Je sais pas si ma... 07/11/2019, 21h35
amateurprg je comprend pas, tu voulais... 07/11/2019, 23h10
javatwister salut, La solution où on... 08/11/2019, 12h02
blobfish75 Bonjour Javatwister, En... 09/11/2019, 16h24
javatwister Un élément input a un... 10/11/2019, 17h02
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2019
    Messages : 61
    Par défaut Passer une variable JavaScript en PHP/HTML
    Bonjour,

    Cela fait maintenant quelque jours que je cherche une réponse à mon problème sans succès donc je le pose ici en espérant avoir des réponses.

    Alors voilà, je code un site avec Symfony sur PhpStorm. Dans mon site j'ai fait un bouton dynamique qui fait apparaitre une liste déroulante à chaque fois que l'utilisateur touche le bouton. Je veux maintenant récuperer chaque valeur choisie pour les listes crées et les enregistrer avec DOCTRINE. Cependant je n'ai pas trouvé de méthode adéquate...

    Voici ce que j'ai essayé:

    J'ai fait le bouton dans mon fichier html. À l'aide de Js j'ai fait apparaitre des listes à chaque clique de bouton. Dans ma fonction Js j'ai mis un compteur afin de savoir combien de listes on été créée.
    Voici le 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
      <script>
                var compteur=0;
                function viewListe(){
                    document.getElementById('maListe').innerHTML += '            <label for="userR">\n' +
                        '            <select name="'+compteur+'" id="'+compteur+'" >\n' +
                        '                <option value="vide">Pour validation</option>\n' +
                        '                {% for user in listeUsers %}\n' +
                        '                    {% if userCo.id!=user.id %}\n' +
                        '                        <option value="{{ user.id }}">{{ user.lastname|upper }} {{ user.firstname }}</option>\n' +
                        '                    {% endif %}\n' +
                        '                {% endfor %}\n' +
                        '               <option value="compteur">'+compteur+'</option>\n' +
                        '            </select>\n' +
                        '            </label> <br/>';
                        compteur++;
                }
     
            </script>
    Voici le code du bouton en question:

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            <input type="button"  onclick="viewListe()" value="+"><br/>
            <p id="maListe"></p><br/>


    Ce que je voulais faire ensuite était de récupérer les valeurs de chaque liste dans mon controller à l'aide d'une boucle for. For(i=0;i<compteur;i++): récupérer les valeurs des listes i et les enregistrer. J'ai essayé par exemple d'ajouter 3 listes de mettre un i<3 dans mon for pour voir si tout s'enregistrer bien comme il faut et c'est le cas. Cependant impossible pour moi de trouver comment récupérer la valeur du compteur pour l'utiliser dans mon for.

    Voici ma boucle for:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                    for($i=0;$i<3;$i++){
                        $idR=$request->request->get($i);
                        $identifiantR=new Identifiants();
                        $utilisateurR=$this->getDoctrine()->getRepository(User::class)->find($idR);
                        $identifiantR->setUserFiche($utilisateurR);
                        $identifiantR->setFicheNCUser($ficheNC);
                        $identifiantR->setStatut('Reçue');
                        $manager->persist($identifiantR);
     
                    }
    Qui lorsque je pose le nombre de liste marche très bien.

    Je n'ai réussi nul part à trouver comment récupérer ma variable compteur de Js dans ma boucle for Php et je commence à croire que ce n'est pas possible.... Si quelqu'un peut m'aider à trouver comme récupérer ma variable compteur, ou à trouver un autre moyen de récupérer les valeurs des listes pour pouvoir les enregistrer je leur en serai très reconnaissante.

    Merci beaucoup Smiley smile

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Quand tu envoies un formulaire au serveur, seuls les éléments du formulaire sont envoyés; ce qui est logique;
    Php va juste lire les données ayant l'attribut "name";

    autrement dit, tu dois donner à un champ caché de ton formulaire la valeur de ta variable compteur;

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="compt" />

    et au début de ta fonction viewListe, tu insères:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("monformulaire").value=compt;

  3. #3
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    J'oubliais: il est toujours conseillé de nommer les variables en commençant par une lettre plutôt que de leur donner un id ou un name uniquement numérique ("liste"+compteur);

  4. #4
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2019
    Messages : 61
    Par défaut
    Merci beaucoup javatwister ! cependant, je ne comprends pas comment compt est relié à la variable compteur et prend sa valeur... De plus, lorsque j'ajoute document.getElementById("monformulaire").value=compt; au tout début de mon viewListe mon bouton "+" ne marche plus et ne fais plus apparaitre des nouvelles listes... Donc je l'ai mis après (mais avant l'incrémentation de compteur) et le bouton marche à nouveau. Cependant après avoir fait $request->request->get('compt') dans mon controller php, la variable compt est vide, ce qui me semble normal car je n'ai pas l'impression l'avoir reliée à la variable compteur de la fonction PHP, mais je ne vois pas comment la lier à cette variable...

    Encore Merci !

  5. #5
    Membre très actif

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Par défaut
    Salut
    Je sais pas si ma methode marche dans tous les cas, mais je faisais un cookie en PHP et je le lisais apres avec js

  6. #6
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2019
    Messages : 61
    Par défaut
    Bonsoir amateurprg,
    Merci pour ta réponse, mais dans ce que tu dis c'est pas plutôt une variable Php qui est récupérée en js ?

  7. #7
    Membre très actif

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Par défaut
    je comprend pas, tu voulais me faire un message ?

    Lol, je sais pas comment t'a fait mais je repond à ton mp et je me retrouve sur le forum, lol

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    salut,

    La solution où on en était resté hier était fiable; il faut simplement que tu sois un peu plus rigoureuse:

    Par exemple, tu appelles le champ caché avec document.getElementById('compt');
    mais tu oublies que ton champ n'a pas d'id...; bref, corrige dans le formulaire:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="compt" id="compt" />

    2e chose, je t'avais conseillé de donner la valeur de "compteur" au début de ta fonction, c'est-à-dire avant l'incrémentation (++);

    Bref, si avant de venir nous voir tu récupérais bien des données sur ta page de destination, c'est que ton formulaire fonctionnait. Il n'y a pas de raison pour qu'il soit tombé en panne

  9. #9
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2019
    Messages : 61
    Par défaut
    Bonjour Javatwister,

    En effet, je n'avais pas vu que mon div caché n'avait pas d'id.

    Cependant même après modification du code, la variable compt n'est pas récupérée en php...

    Voici mon code modifié pour la partie Js/HTML:

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="compt" id="compt" />

    Code JAVASCRIPT : 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
    <script>
                var compteur=0;
                function viewListe(){
     
                    document.getElementById('maListe').innerHTML += '            <label for="userR">\n' +
                        '            <select name="'+compteur+'" id="'+compteur+'" >\n' +
                        '                <option value="vide">Pour validation</option>\n' +
                        '                {% for user in listeUsers %}\n' +
                        '                    {% if userCo.id!=user.id %}\n' +
                        '                        <option value="{{ user.id }}">{{ user.lastname|upper }} {{ user.firstname }}</option>\n' +
                        '                    {% endif %}\n' +
                        '                {% endfor %}\n' +
                        '               <option value="compteur">'+compteur+'</option>\n' +
                        '            </select>\n' +
                        '            </label> <br/>';
                    document.getElementById('compt').innerHtml=compteur;
                    compteur++;
     
                }
     
            </script>

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            <input type="button"  onclick="viewListe()" value="+"><br/>
            <p id="maListe"></p><br/>

    et voici ma fonction for en php:

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $compteur=$request->request->get('compt');
                   for($i=0;$i<$compteur;$i++){
                        $idR=$request->request->get($i);
                        $identifiantR=new Identifiants();
                        $utilisateurR=$this->getDoctrine()->getRepository(User::class)->find($idR);
                        $identifiantR->setUserFiche($utilisateurR);
                        $identifiantR->setFicheNCUser($ficheNC);
                        $identifiantR->setStatut('Reçue');
                        $manager->persist($identifiantR);
     
                    }

    Mais cela ne récupère toujours pas compt... Lorsque je mets par exemple 3 à la place de la variable compteur dans le for, ça marche parfaitement et enregistre tout ce qu'il faut, mais quand je mets la variable compteur c'est comme s'il n'y avait pas de boucle for et ça n'enregistre rien...

    Merci !

  10. #10
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Un élément input a un innerHTML nul! C'est value qu'il faut affecter...

Discussions similaires

  1. Passer une variable javascript en php
    Par MN_jacques dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/03/2019, 08h46
  2. [AJAX] Passer une variable javascript à du php
    Par wallouxx dans le forum jQuery
    Réponses: 3
    Dernier message: 01/10/2014, 09h18
  3. Passer une variable javascript en php
    Par dam28800 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/12/2009, 15h27
  4. Passer une variable javascript en php
    Par remrem13 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 21/04/2009, 10h32
  5. [PHP-JS] Passer une variable javascript en php
    Par bibom dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/08/2006, 20h39

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