Aide fonction javascript popup+recup donnée

Résolu
Bonjour,

Voila j'ai un soucis depuis plusieurs jours je n'arrive pas a véhiculer une donnée dans mon popup
Si vous voulez je peut vous donner une partie de mon code de la page concernée car hélas j'ai l'impression qu'il y aura que comme ca que quelqu'un pourra m'aider.

Aider moi svp

merci d'avance
Configuration: Windows 2003
Internet Explorer 7.0

39 réponses

Résumé de la discussion

Problème central : il s'agit d'envoyer la valeur sélectionnée d'un bouton radio dans une popup via JavaScript et window.open, mais l'ouverture de la fenêtre ne transmet pas correctement la donnée. Des réponses proposées se concentrent sur le diagnostic : tester et corriger le code, afficher temporairement la valeur avec alert, puis construire l'URL à partir du radio actif avant d'ouvrir. Des échanges explorent également une solution complète avec une fonction qui parcourt les éléments nommés 'check', retient la valeur du radio coché et ouvre ensuite la popup avec les paramètres adéquats. D'autres échanges signalent une limite lorsque la sélection porte sur plusieurs radios et suggèrent d'envisager une gestion distincte des cases à cocher pour étendre le même mécanisme.

Bobot (l’IA à votre service)
  1. Contributeur
    Oui je pense qu'un peu de code peut nous aider :)
    0
    1. alors ...

      Je sais que ce n'est pas très propre je veut qu'il soit fonctionnel et après je le coderais proprment.

      En gros on voit bien qu'il y a un tableau et une colone radio je souhaite juste récupéré la valeur du radio coché par l'utilisateur quand il clic sur le bouton modifier ou supprimer.

      S'il vous faut plus d'exlpication dites le moi.

      <html>
      <!################################################################################################################################>

      <head>

      <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

      <title>Utilisateur</title>

      <link rel="stylesheet" media="screen" type="text/css" title="identification" href="Application.css">

      <script language="Javascript">

      function ouvreFenetreModifier()
      {
      valeurCheck=document.form.check.value;
      valeurCheckDansLien="Modif_form.php?check="+valeurCheck;
      window.open(valeurCheckDansLien,"",config='width=600, height=600, resizable=no, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no');
      }

      function ouvreFenetreSupprimer()
      {
      valeurCheck=document.form.check.value;
      valeurCheckDansLien="Del_arret.php?check="+valeurCheck;
      window.open(valeurCheckDansLien,"",config='width=600, height=250, resizable=no, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no');
      }
      </script>

      </head>

      <!################################################################################################################################>
      <body onload="runClock()">
      <form method="post" name="form">

      <!--------------- Bannière --------------->

      <div id="ban2" > </div>

      <!--------------- Boutton --------------->

      <div style="text-align: center;">

      <input name="lien4" value="Imprimer" onclick="edition();return false;"type="button">

      <input name="lien1" value="Arrêt chaîne" onclick="window.open('Form_utilisateur.php', 'utilisateur', config='width=600, height=600, resizable=no, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no');" type="button">

      <input type="button" name="lien2" value="Modifier" onClick="ouvreFenetreModifier();">

      <input type="button" name="lien3" value="Supprimer" onClick="ouvreFenetreSupprimer();">

      </div>

      <br>

      <!--------------- Heure défilant --------------->

      <div id="time"></div>
      <!--------------- Tableau de gestion des arrêts chaîne --------------->
      <?php

      require('Connexion.php');
      require('Requete.php');

      //--------------- Requete du tableau des arrêts chaîne ---------------//

      $sql0="SELECT * FROM ARRET_CHAINE WHERE DEBUT =#$date#";

      $rs = odbc_exec($conn,$sql0) or die('Erreur SQL : <br />'.$sql0);

      //--------------- Tableau des arrêts chaîne ---------------//

      echo "<div style='overflow-y: scroll; height: 305'> ";

      echo "<table border='0' cellpadding='0' cellspacing='0' width='500'>";
      echo "<tbody>";
      echo "<tr>";

      echo "<table style='width: 968px; height: 60px;' border='5' cellpadding='2' cellspacing='1'>"; // Taille du tableau //
      echo "<tbody>";

      echo "<tr>";
      echo "<td class='table-titre' colspan='9'> Ouverture: $ouverture Cadence: $cadence Taktime: $total </td>";
      echo "</tr>";

      echo "<tr>";
      echo "<td class='table-entete-centre' width='20'>Choix</td>";
      echo "<td class='table-entete-centre' width='20'>Type</td>";
      echo "<td class='table-entete-centre' width='20'>Début</td>";
      echo "<td class='table-entete-centre' width='20'>Fin</td>";
      echo "<td class='table-entete-centre' width='20'>Constat</td>";
      echo "<td class='table-entete-centre' width='20'>Demande </td>";
      echo "<td class='table-entete-centre' width='20'>Cause</td>";
      echo "<td class='table-entete-centre' width='20'>Information</td>";
      echo "<td class='table-entete-centre' width='20'>Imputation</td>";
      echo "</tr>";

      while (odbc_fetch_row($rs))
      {
      $CHOIX = odbc_result($rs,"NUMERO_ARRET_CHAINE");
      $TYPE=odbc_result($rs,"TYPE");
      $DEBUT=odbc_result($rs,"HEURE_DEBUT");
      $FIN=odbc_result($rs,"HEURE_FIN");
      $CONSTAT=odbc_result($rs,"CONSTAT");
      $DEMANDE=odbc_result($rs,"DEMANDE");
      $CAUSE=odbc_result($rs,"CAUSE");
      $INFO=odbc_result($rs,"COMPLEMENT_INFORMATION");
      $IMPUTATION=odbc_result($rs,"IMPUTATION");

      echo "<tr>";
      echo "<td class='table-ligne1-centre' width='100'> <input type=\"radio\" name=\"check\" value='".$CHOIX."'> </td>";
      echo "<td class='table-ligne1-centre' width='100'>$TYPE</td>";
      echo "<td class='table-ligne1-centre' width='100'>$DEBUT</td>";
      echo "<td class='table-ligne1-centre' width='100'>$FIN</td>";
      echo "<td class='table-ligne1-centre' width='100'>$CONSTAT</td>";
      echo "<td class='table-ligne1-centre' width='100'>$DEMANDE</td>";
      echo "<td class='table-ligne1-centre' width='100'>$CAUSE</td>";
      echo "<td class='table-ligne1-centre' width='100'>$INFO</td>";
      echo "<td class='table-ligne1-centre' width='100'>$IMPUTATION</td>";
      echo "</tr>";
      }

      echo "</tbody>";
      echo "</table>";

      echo "</tr>";
      echo "</tbody>";
      echo "</table>";

      echo "</div>";

      //--------------- Tableau des informations générales de la journée ---------------//

      echo "<br>";

      echo "<table border='0' cellpadding='0' cellspacing='0' width='500'>";
      echo "<tbody>";

      echo "<table style='width: 500px; height: 90px;' border='5' cellpadding='2' cellspacing='1'>";

      echo "<tr>";
      echo "<td class='table-titre' colspan='13'> Infos en temps réel </td>";
      echo "</tr>";

      //--------------- En tete de colonne ---------------//

      echo "<tr>";
      echo "<td class='table-entete' width='1'>Nombre d'arrêt </td>";
      echo "<td class='table-entete' width='1'>Durée perdu </td>";
      echo "<td class='table-entete-centre' width='20'>Pertes TA </td>";
      echo "<td class='table-entete-centre' width='20'></td>";
      echo "<td class='table-entete-centre' width='20'>Info </td>";
      echo "<td class='table-entete-centre' width='20'>Trou </td>";
      echo "<td class='table-entete-centre' width='20'></td>";
      echo "<td class='table-entete-centre' width='50'>Durée total perdu </td>";
      echo "<td class='table-entete-centre' width='50'>TA total perdu </td>";
      echo "</tr>";

      //--------------- RESULTATS ---------------//

      echo "<tr>";
      echo "<td class='table-ligne1-centre' width='100'> $my_array[0] </td>";
      echo "<td class='table-ligne1-centre' width='100'> $dureeperdu </td>";
      echo "<td class='table-ligne1-centre' width='100'> $perteTA </td>";
      echo "<td class='table-ligne1-centre' width='2'></td>";
      echo "<td class='table-ligne1-centre' width='100'> $dureeinfo </td>";
      echo "<td class='table-ligne1-centre' width='100'> $resultat </td>";
      echo "<td class='table-ligne1-centre' width='2'></td>";
      echo "<td class='table-ligne1-centre' width='100'> $totalduree </td>";
      echo "<td class='table-ligne1-centre' width='100'> $pertetotaleTA </td>";
      echo "</tr>";

      echo "</tbody>";

      echo "</table>";

      //--------------- Fermeture de la bdd ---------------//

      odbc_close($conn);

      ?>

      <!--------------- Fin page utilisateur --------------->
      </form>
      </body>

      </html>
      0
      1. Contributeur
        Essaie de rajouter
        alert(valeuCheck); 

        entre
        valeurCheck=document.form.check.value;

        et
        valeurCheckDansLien="Modif_form.php?check="+valeurCheck; 

        Pour voir déjà si tu récupère bien la bonne valeur.

        Après dis moi, tu as quoi dans la barre d'adresse de la fenêtre qui apparait?
        Parce que à première vu ça devrait fonctionner même si je ne connais pas toutes les subtilités de la fonction window.open()
        0
        1. donc depuis que j'ai rajouter la ligne j'ai une erreur qui me dit undefinned

          et quand la fenetre s'ouvre

          la barre d'adresse est

          http://127.0.0.1/Logiciel/Modif_form.php?check=undefined
          0
          1. Contributeur
            Pour récupérer un objet en Javascript, il est plutot conseillé d'utiliser la fonction getElementById
            Donc remplace ton :
            <input type=\"radio\" name=\"check\" value='".$CHOIX."'>

            par :
            <input type=\"radio\" id=\"check\" name=\"check\" value='".$CHOIX."' />

            Et pour récupérer la valeur tu remplaces :
            valeurCheck=document.form.check.value; 

            par :
            valeurCheck=document.getElementById('check').value;

            Et enfin tu essaies d'afficher avec le
            alert(valeurCheck);

            que je t'ai mis tout à l'heure

            Je ne sais pas si ça va changer grand chose ... Mais ça ne coute rien d'essayer ^^

            Perso j'ai fait ce petit test :
            <input type="radio" id="test" value="teeest" />
            <input type="button" value="test" onclick="alert(document.getElementById('test').value);" />

            Et j'ai bien une petite popup avec teeest
            0
            1. donc j'ai tout modifier et ....

              J'y est cru un instant mais non

              Ca me renvoie toujours le meme est ce normal?

              Meme si ca ne fonctionne pas au moins il y a de l'amélioration puisque déja je récupère une valeur ca fait plaisir.

              Par conttre je ne vois pas pourquoi il récupère que la première
              bizarre non?
              0
              1. Contributeur
                Oui c'est normal, ta fonction ne sait pas quel bouton radio choisir alors elle choisit le premier..

                Il faut que tu les différencie et que tu lui précise laquelle choisir
                0
                1. vous avez un conseil a me donner??
                  car je ne vois pas trop comment appellé un bouton radio dans une boucle...
                  0
                  1. Contributeur
                    Alors le mieux je pense est de lui donner un :
                    id=\"check_" . $i . "\"
                    et d'incrémenter ce $i à chaque ligne du tableau (donc à chaque tour dans la boucle des résultats)
                    Ensuite en Javascript, récupérer la valeur avec document.getElementById('check_' + i).value où i sera incrémenté comme le $i dans une boucle.

                    Après pour chaque valeur, il faut vérifier si le bouton radio est bien sélectionné (ça je ne sais pas faire par contre :s )

                    Et s'il est sélectioné, tu le met dans la variable valeurCheck.
                    0
                    1. Voila j'ai un petit peu avancer et je vien de voir ton post qui correspond a ma réflexion

                      alors dans le tableau je fais

                      echo "<td class='table-ligne1-centre' width='100'> <input type=\"radio\" id=\"check_" . $i++ . "\" name=\"check\" value='".$CHOIX."' /> </td>";

                      et j'ai modifié ma fonction

                      function ouvreFenetreModifier()
                      {
                      valeurCheckDansLien=""
                      TabChecks=document.getElementsByName('check');
                      TCL=TabChecks.length();
                      for(i=0;i<TCL;i++){ // ici on parcourre les elements pour savoir lequel est coché
                      if(TabChecks[i].checked){
                      valeurCheckDansLien="Modif_form.php?check="+TabChecks[i].value;
                      }
                      if(valeurCheckDansLien.length>0){// si un radio est coché
                      window.open(valeurCheckDansLien,"","");
                      }
                      else {alert("pas de checks selectionné !")} //si pas de radio coché

                      }

                      Alors vu que j'y connais rien en JS c'est du bidouillage bref j'espèrais qu'elle fonctionne mais hélas la fenetre quand je clic sur le bouton modifier ne s'ouvre

                      sauriez vous pourquoi?
                      0
                      1. Contributeur
                        Je vais reprendre ton code, le tester et je vais essayer de le corriger ^^
                        0
                    2. je te le remet en entier alors?

                      <html>
                      <!################################################################################################################################>

                      <head>

                      <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

                      <title>Utilisateur</title>

                      <link rel="stylesheet" media="screen" type="text/css" title="identification" href="Application.css">

                      <script language="Javascript">

                      function ouvreFenetreModifier()
                      {
                      valeurCheckDansLien=""
                      TabChecks=document.getElementsByName('check');
                      TCL=TabChecks.length();
                      for(i=0;i<TCL;i++){ // ici on parcourre les elements pour savoir lequel est coché
                      if(TabChecks[i].checked){
                      valeurCheckDansLien="Modif_form.php?check="+TabChecks[i].value;
                      }
                      if(valeurCheckDansLien.length>0){// si un radio est coché
                      window.open(valeurCheckDansLien,"","");
                      }
                      else {alert("pas de checks selectionné !")} //si pas de radio coché

                      }

                      function ouvreFenetreSupprimer()
                      {
                      valeurCheck=document.getElementById('check').value;
                      valeurCheckDansLien="Del_arret.php?check="+valeurCheck;
                      window.open(valeurCheckDansLien,"",config='width=600, height=250, resizable=no, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no');
                      }
                      </script>

                      </head>

                      <!################################################################################################################################>
                      <body onload="runClock()">
                      <form method="post" name="form">

                      <!--------------- Bannière --------------->

                      <div id="ban2" > </div>

                      <!--------------- Boutton --------------->

                      <div style="text-align: center;">

                      <input name="lien1" value="Arrêt chaîne" onclick="window.open('Form_utilisateur.php', 'utilisateur', config='width=600, height=600, resizable=no, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no');" type="button">
                        
                      <input type="button" name="lien2" value="Modifier" onClick="ouvreFenetreModifier();">
                        
                      <input type="button" name="lien3" value="Supprimer" onClick="ouvreFenetreSupprimer();">
                        
                      <input name="lien4" value="Imprimer" onclick="edition();return false;"type="button">

                      </div>

                      <br>

                      <!--------------- Heure défilant --------------->

                      <div id="time"></div>
                      <!--------------- Tableau de gestion des arrêts chaîne --------------->
                      <?php

                      require('Connexion.php');
                      require('Requete.php');

                      //--------------- Requete du tableau des arrêts chaîne ---------------//

                      $sql0="SELECT * FROM ARRET_CHAINE WHERE DEBUT =#$date#";

                      $rs = odbc_exec($conn,$sql0) or die('Erreur SQL : <br />'.$sql0);

                      //--------------- Tableau des arrêts chaîne ---------------//

                      echo "<div style='overflow-y: scroll; height: 305'> ";

                      echo "<table border='0' cellpadding='0' cellspacing='0' width='500'>";
                      echo "<tbody>";
                      echo "<tr>";

                      echo "<table style='width: 968px; height: 60px;' border='5' cellpadding='2' cellspacing='1'>"; // Taille du tableau //
                      echo "<tbody>";

                      echo "<tr>";
                      echo "<td class='table-titre' colspan='9'> Ouverture: $ouverture &nbsp&nbsp&nbsp&nbsp Cadence: $cadence &nbsp&nbsp&nbsp&nbsp Taktime: $total </td>";
                      echo "</tr>";

                      echo "<tr>";
                      echo "<td class='table-entete-centre' width='20'>Choix</td>";
                      echo "<td class='table-entete-centre' width='20'>Type</td>";
                      echo "<td class='table-entete-centre' width='20'>Début</td>";
                      echo "<td class='table-entete-centre' width='20'>Fin</td>";
                      echo "<td class='table-entete-centre' width='20'>Constat</td>";
                      echo "<td class='table-entete-centre' width='20'>Demande </td>";
                      echo "<td class='table-entete-centre' width='20'>Cause</td>";
                      echo "<td class='table-entete-centre' width='20'>Information</td>";
                      echo "<td class='table-entete-centre' width='20'>Imputation</td>";
                      echo "</tr>";

                      while (odbc_fetch_row($rs))
                      {
                      $CHOIX = odbc_result($rs,"NUMERO_ARRET_CHAINE");
                      $TYPE=odbc_result($rs,"TYPE");
                      $DEBUT=odbc_result($rs,"HEURE_DEBUT");
                      $FIN=odbc_result($rs,"HEURE_FIN");
                      $CONSTAT=odbc_result($rs,"CONSTAT");
                      $DEMANDE=odbc_result($rs,"DEMANDE");
                      $CAUSE=odbc_result($rs,"CAUSE");
                      $INFO=odbc_result($rs,"COMPLEMENT_INFORMATION");
                      $IMPUTATION=odbc_result($rs,"IMPUTATION");

                      echo "<tr>";
                      echo "<td class='table-ligne1-centre' width='100'> <input type=\"radio\" id=\"check_" .$i++. "\" name=\"check\" value='".$CHOIX."' /> </td>";
                      echo "<td class='table-ligne1-centre' width='100'>$TYPE</td>";
                      echo "<td class='table-ligne1-centre' width='100'>$DEBUT</td>";
                      echo "<td class='table-ligne1-centre' width='100'>$FIN</td>";
                      echo "<td class='table-ligne1-centre' width='100'>$CONSTAT</td>";
                      echo "<td class='table-ligne1-centre' width='100'>$DEMANDE</td>";
                      echo "<td class='table-ligne1-centre' width='100'>$CAUSE</td>";
                      echo "<td class='table-ligne1-centre' width='100'>$INFO</td>";
                      echo "<td class='table-ligne1-centre' width='100'>$IMPUTATION</td>";
                      echo "</tr>";
                      }

                      echo "</tbody>";
                      echo "</table>";

                      echo "</tr>";
                      echo "</tbody>";
                      echo "</table>";

                      echo "</div>";

                      //--------------- Tableau des informations générales de la journée ---------------//

                      echo "<br>";

                      echo "<table border='0' cellpadding='0' cellspacing='0' width='500'>";
                      echo "<tbody>";

                      echo "<table style='width: 500px; height: 90px;' border='5' cellpadding='2' cellspacing='1'>";

                      echo "<tr>";
                      echo "<td class='table-titre' colspan='13'> Infos en temps réel </td>";
                      echo "</tr>";

                      //--------------- En tete de colonne ---------------//

                      echo "<tr>";
                      echo "<td class='table-entete' width='1'>Nombre d'arrêt </td>";
                      echo "<td class='table-entete' width='1'>Durée perdu </td>";
                      echo "<td class='table-entete-centre' width='20'>Pertes TA </td>";
                      echo "<td class='table-entete-centre' width='20'></td>";
                      echo "<td class='table-entete-centre' width='20'>Info </td>";
                      echo "<td class='table-entete-centre' width='20'>Trou </td>";
                      echo "<td class='table-entete-centre' width='20'></td>";
                      echo "<td class='table-entete-centre' width='50'>Durée total perdu </td>";
                      echo "<td class='table-entete-centre' width='50'>TA total perdu </td>";
                      echo "</tr>";

                      //--------------- RESULTATS ---------------//

                      echo "<tr>";
                      echo "<td class='table-ligne1-centre' width='100'> $my_array[0] </td>";
                      echo "<td class='table-ligne1-centre' width='100'> $dureeperdu </td>";
                      echo "<td class='table-ligne1-centre' width='100'> $perteTA </td>";
                      echo "<td class='table-ligne1-centre' width='2'></td>";
                      echo "<td class='table-ligne1-centre' width='100'> $dureeinfo </td>";
                      echo "<td class='table-ligne1-centre' width='100'> $resultat </td>";
                      echo "<td class='table-ligne1-centre' width='2'></td>";
                      echo "<td class='table-ligne1-centre' width='100'> $totalduree </td>";
                      echo "<td class='table-ligne1-centre' width='100'> $pertetotaleTA </td>";
                      echo "</tr>";

                      echo "</tbody>";

                      echo "</table>";

                      //--------------- Fermeture de la bdd ---------------//

                      odbc_close($conn);

                      ?>

                      <!--------------- Fin page utilisateur --------------->
                      </form>
                      </body>

                      </html>
                      0
                      1. Contributeur
                        Non c'est bon juste la fonction et le bouton ça me suffit ^^
                        0
                    3. C'est simple mais la flemme d'aiD
                      0
                      1. lol spongebob c'est assez constructif comme réponse ca mdr

                        Mais bon c'est ton choix
                        0
                        1. Contributeur
                          Ouas j'avoue spongebob ... :p

                          Bon en attendant moi j'ai pas eu la flemme ^^

                          Voilà la fonction qui fonctionne (chez moi en tout cas ^^ )

                          function ouvreFenetreModifier()
                          {
                          valeurCheckDansLien="";
                          TabChecks=document.getElementsByName('check');
                          TCL=TabChecks.length;
                          for( var i=0;i<TCL;i++) { // ici on parcourre les elements pour savoir lequel est coché
                          if(TabChecks[i].checked) {
                          valeurCheckDansLien="Modif_form.php?check="+TabChecks[i].value;
                          }
                          }
                          if( valeurCheckDansLien.length > 0){// si un radio est coché
                          widow.open(valeurCheckDansLien, "", "");
                          } else {
                          alert("pas de checks selectionné !") //si pas de radio coché
                          }

                          }

                          J'ai remplacé TCL=TabChecks.length() ;
                          par : TCL=TabChecks.length;

                          Et je crois qu'il y avait une erreur dans l'ouverture/fermeture de boucle.
                          La boucle for() { } englobait les si, ce qui posait problème ^^

                          Dis moi si ça fonctionne

                          Sinon ton bidouillage était pas mal :)
                          0
                          1. Bah hélas je peut pas te dire si ca fonctionne car la fenetre quand je clique sur modifier la fenetre ne s'ouvre toujours pas
                            0
                            1. Merci de compatir avec mon choix, sinon sa avance ton pb d'une simplicité hors du commun ?
                              0
                              1. Contributeur
                                Remplace ça : widow.open(valeurCheckDansLien, "", "");
                                Par : alert(valeurCheckDansLien);

                                Et dis moi déjà ce qui s'affiche dans la popup.
                                0
                                1. hélas ca avance mais on ne voit pas le résultat lol

                                  C'est si simple que ca???
                                  0
                                  1. désolé j'avais pas vu ta réponse lol

                                    Rien ne se passe toujours pas de popup qui s'ouvre
                                    0
                                    • 1
                                    • 2