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

  • Votes
  • Date
  • Date décroissante
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. 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>
    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()
      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
        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
          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?
            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
              1. vous avez un conseil a me donner??
                car je ne vois pas trop comment appellé un bouton radio dans une boucle...
                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.
                  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?
                    1. Contributeur
                      Je vais reprendre ton code, le tester et je vais essayer de le corriger ^^
                  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>
                    1. Contributeur
                      Non c'est bon juste la fonction et le bouton ça me suffit ^^
                  3. lol spongebob c'est assez constructif comme réponse ca mdr

                    Mais bon c'est ton choix
                    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 :)
                      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
                        1. Merci de compatir avec mon choix, sinon sa avance ton pb d'une simplicité hors du commun ?
                          1. Contributeur
                            Remplace ça : widow.open(valeurCheckDansLien, "", "");
                            Par : alert(valeurCheckDansLien);

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

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

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