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

AJAX Discussion :

[AJAX] Récupération de variables Javascript


Sujet :

AJAX

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Statistiques et Informatique
    Inscrit en
    Mai 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Statistiques et Informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2012
    Messages : 22
    Points : 28
    Points
    28
    Par défaut [AJAX] Récupération de variables Javascript
    Bonjour,

    Tout d'abord merci par avance pour vos réponses, j'espère que vous serez nombreux à m'aider.
    J'ai un fichier resultat.php qui affiche deux tableaux dans lesquels nous avons des variables float.
    J'ai 10 cellules (dans des div) qui proposent une liste déroulante. En fonction du choix sélectionné, nous obtenons un score dans une autre cellule, calculé grâce à une fonction jvscript.

    Voila le code de la cellule qui affiche la liste déroulante :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    echo "<td class='celda_pequenya_2'>";
    echo "<select class='select2' id='d48' onchange='baremos(this,notad48)'>";
        echo "<option selected='selected' value='-1'>Elija un baremo</option>";
        for ($i=0;$i<count($niveles_d48);$i++){
            echo "<option value=$i>".$niveles_d48[$i]."</option>";
        }
    echo "</select>";
    echo "</td>";

    Et voila la fonction JavaScript qu'elle appelle :

    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
     
    <script language="javascript">
     
    function baremos(desplegable,nota)
    {  
      var nombre_celda = "nota"+desplegable.id ;
      var nivel = desplegable.value;
      var celda = document.getElementById(nombre_celda);
     
      if (nivel!=-1){
      celda.innerHTML = nota[nivel];
      }else{
      celda.innerHTML ='';  
      }
    }
    </script>

    De ce fichier resultat.php, je génère un PDF grâce à la méthode PhpToPdf. Pas de souci, mon PDF apparaît correctement.
    Néanmoins, je n'ai pas trouvé le moyen de récupérer la valeur sélectionnée dans la liste déroulante et la valeur calculée, car vous le savez, le code php est exécuté avant le code jvscript.
    Je me suis donc dit que la meilleure méthode pour récupérer ces valeurs étaient d'utiliser AJAX. Je suis un peu novice mais j'ai lu pas mal de tuto... Mais... Je ne suis pas sûre de ce que je fais et j'aurai besoin des lumières de quelqu'un...

    J'ai essayé d'adapter un code pour ce faire, mais étant donné que ma fonction jvscript peut être appelée plusieurs fois, je ne sais pas comment gérer cela...

    J'ai donc rajouté entre les balises <script> :

    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
    22
    23
    24
    25
    26
    27
     
    function maFonctionAjax(unParametre,action)
    {
       var MonAjax;
       if (window.XMLHttpRequest){
          MonAjax = new XMLHttpRequest(); // Mozilla, Safari, Chrome, Firefox...
       } else if (window.ActiveXObject) {  
          MonAjax = new ActiveXObject('Microsoft.XMLHTTP'); // IE
       } else {
          alert("Change navigator..."); 
          MonAjax = false;
       }
       MonAjax.open('POST',"resultados_pdf.php",true); //méthode pos, fichier php cible
     
       MonAjax.onreadystatechange = function()
       {
          if (MonAjax.readyState == 4 && MonAjax.status == 200)
          {
             if(action=="baremos") { document.getElementById('cela.innerHTML').innerHTML = MonAjax.responseText;}
             if(action=="baremos1") { document.getElementById('nombre_cela').innerHTML = MonAjax.responseText;}
             if(action=="baremos2") { document.getElementById('celda').innerHTML = MonAjax.responseText;}
          }
       }
     
       MonAjax.setRequestHeader('Content-type','application/x-www-form-urlencoded');
       MonAjax.send('unParametre='+unParametre+'&action='+action);                  
    }

    Et j'ai aussi rajouté dans ma fonction jvscript "baremos" ce code :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      maFonctionAjax(celda.innerHTML,"baremos");
      mafonctionAjax(nombre_celda, "baremos1");
      mafonctionAjax(celda, "baremos2");

    Mais là je suis un peu perdue et j'ai l'impression de mal m'y prendre avec AJAX... Un petit conseil ?

  2. #2
    Nouveau membre du Club Avatar de Periah
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par LilyP Voir le message
    Mais là je suis un peu perdu...
    Pour le coup, moi aussi... Tu veux faire quoi? Ou? Et à quel moment?

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Statistiques et Informatique
    Inscrit en
    Mai 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Statistiques et Informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2012
    Messages : 22
    Points : 28
    Points
    28
    Par défaut

    Je veux générer un PDF, voilà le but initial.
    Du coup, j'ai mon fichier resultat.php qui affiche mes données sous forme de tableaux et y'a certaines cellules où il est possible de selectionner un barème dans une liste. Une fois sélectionné, il calcule un barème qu'il affiche dans une autre cellule. Ce calcul s'effectue via javascript.
    Je veux récupérer la valeur du barème sélectionné dans la liste et la valeur du calcul effectué pour pouvoir ainsi les afficher dans mon PDF...

  4. #4
    Nouveau membre du Club Avatar de Periah
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Points : 35
    Points
    35
    Par défaut
    Ok. Faut séparer tes traitements alors.

    Tu fais une page_tableau.php et une page_pdf.php.

    Dans ta page_tableau.php, tu crées ton tableau et tu fais tous les calculs. Dans ta page_pdf.php, tu mets tout le traitement de constitution de ton pdf.

    Et sur ta page_tableau, dans l'évènement qui lance la génération du pdf (le click sur un bouton, le onchange d'une liste déroulante, etc) tu mets un code de ce style :

    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
    function lancePDF
    {
    var param = "?param1=" + valeur_1 + '&param2=' + param2... ;
     
    xmlhttp = new XMLHttpRequest();
     
    xmlhttp.onreadystatechange = function()
    {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
    /* ici un éventuel traitement à faire après la génération du pdf */
    }
    xmlhttp.open("GET", "page_pdf.php" + param + "&random=" + Math.random(), true);
    xmlhttp.send();
    }

    Tu récupères les paramètres dans ta page_pdf.php avec un $_GET["param1"], $_GET["param2"]...

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Statistiques et Informatique
    Inscrit en
    Mai 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Statistiques et Informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2012
    Messages : 22
    Points : 28
    Points
    28
    Par défaut
    Merci de ta réponse mais je n'ai pas bien compris....

    En fait dans mon resultat.php j'ai le fameux bouton qui génère le PDF (donc qui renvoie vers res_pdf.php).
    C'est dans res_pdf.php que je crée mon ptit tableau, tout est niquel.

    Tu me suggères donc de rajouter une page_pdf dans laquelle je mets quoi ?

  6. #6
    Nouveau membre du Club Avatar de Periah
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Points : 35
    Points
    35
    Par défaut
    On reprend...

    Ton fichier resultat.php contient des tableaux. Ces tableaux contiennent des listes déroulantes dans certaines cellules. Le choix d'un item de liste déroulante modifie le contenu d'une autre cellule. Ce fichier contient aussi un bouton "generer pdf". Jusque là, on est d'accord ?

    Ensuite, on a un res_pdf.php qui sert à faire le pdf et qui contient aussi des tableaux. On est toujours bon? Ce sont les mêmes tableaux que dans resultat.php mais avec les valeurs choisies et calculées?

    Ce que tu veux, c'est obtenir dans res_pdf.php les valeurs choisies (et donc les calculées)?

    Si je suis toujours bien alors, il faut que tu reprennes mon précédent post et que tu considères que page_tableau.php c'est ton resultat.php et que page_pdf.php c'est res_pdf.php.

    Il faut que tu rajoutes un appel ajax sur ton bouton de génération de pdf (donc dans resultat.php). Et dans ton res_pdf.php tu fais des $_GET sur les valeurs passées en paramètres.

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Statistiques et Informatique
    Inscrit en
    Mai 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Statistiques et Informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2012
    Messages : 22
    Points : 28
    Points
    28
    Par défaut
    Ok je vois.
    Ça parait super simple quand tu le dis mais...

    Mon bouton PDF ressemble à ça :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        // Download PDF Button 		
        echo '<div style="left:57em;" id="boton_pdf">';
       	echo "<input class='boton_envio' type='button' value='PDF' onclick='location.href=\"resultados_pdf.php\";'/>";
        echo '</div>';

    Et tu veux que je rajoute le code d'AJAX ici ? Je pensais qu'il fallait le mettre dans une balise <script>. :/

    D'autre part, il y a un truc que je ne pige toujours pas...
    Dans mon resultat.php J'ai ce code :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    echo "<td class='celda_pequenya_2'>";
    echo "<select class='select2' id='d48' onchange='baremos(this,notad48)'>";
        echo "<option selected='selected' value='-1'>Elija un baremo</option>";
        for ($i=0;$i<count($niveles_d48);$i++){
            echo "<option value=$i>".$niveles_d48[$i]."</option>";
        }
    echo "</select>";
    echo "</td>";

    Qui appelle cette fonction :

    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
     
    <script language="javascript">
     
    function baremos(desplegable,nota)
    {  
      var nombre_celda = "nota"+desplegable.id ;
      var nivel = desplegable.value;
      var celda = document.getElementById(nombre_celda);
     
      if (nivel!=-1){
      celda.innerHTML = nota[nivel];
      }else{
      celda.innerHTML ='';  
      }
    }
    </script>

    Du coup je ne vois pas comment je peux préciser les variables à récupérer dans le code AJAX vu qu'il n'y a pas explicitement le nom de ces variables...
    Tu vois ce que je veux dire ?

  8. #8
    Nouveau membre du Club Avatar de Periah
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Points : 35
    Points
    35
    Par défaut
    On va y arriver

    1) Il faut changer ton code de bouton comme ça :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        // Download PDF Button 		
        echo '<div style="left:57em;" id="boton_pdf">';
       	echo "<input class='boton_envio' type='button' value='PDF' onclick='generePDF() ;'>";
        echo '</div>';

    Et ajouter le code de la fonction :

    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
     
    <script language="javascript">
     
    function generePDF()
    {  
    var param = "?param1=" + valeur_1 + '&param2=' + param2... ;
     
    xmlhttp = new XMLHttpRequest();
     
    xmlhttp.onreadystatechange = function()
    {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
    /* ici un éventuel traitement à faire après la génération du pdf */
    }
    xmlhttp.open("GET", "res_pdf.php" + param + "&random=" + Math.random(), true);
    xmlhttp.send();
    }
    </script>

    2)
    L'idée n'est pas de récupérer les valeurs calculées mais seulement les valeurs des <SELECT>. Ils sont censés avoir un id unique donc tu peux retrouver facilement leur value et peux recalculer à la génération du PDF les valeurs associées à partir des values de <SELECT> passées en paramètres (en réutilisant ta fonction de calcul).

    Dans l'ajax :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById.(id_unique_select).options[document.getElementById(id_unique_select).selectedIndex].value

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Statistiques et Informatique
    Inscrit en
    Mai 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Statistiques et Informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2012
    Messages : 22
    Points : 28
    Points
    28
    Par défaut
    Je te remercie de ton aide efficace =)

    Je vais suivre tes indications

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Statistiques et Informatique
    Inscrit en
    Mai 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Statistiques et Informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2012
    Messages : 22
    Points : 28
    Points
    28
    Par défaut
    Merci, j'ai réussi à faire ce que je voulais ! =)
    Au top Periah, t'assures chaussures

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

Discussions similaires

  1. [AJAX] générer une variable javascript dynamiquement
    Par luna007 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/12/2008, 10h56
  2. Récupération de variables javascript en C#
    Par Amokrane dans le forum C#
    Réponses: 4
    Dernier message: 30/06/2008, 08h22
  3. récupération de variable javascript
    Par esther60 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 20/03/2008, 21h35
  4. [AJAX] Récupération de variable php
    Par akara dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/07/2007, 15h52
  5. [AJAX] Ajax, innerHTML et variable javascript
    Par philippejuju dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/01/2007, 11h30

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