Partage
  • Partager sur Facebook
  • Partager sur Twitter

Gestion des cases à cocher

sans formulaire, dans une boucle While.

Sujet résolu
    5 juin 2009 à 17:03:18

    Bonjour :)

    Je souhaiterai récupérer la valeur de mes checkbox cochée qui sont générées depuis un While.

    À la base je fais une requête en php dans une base de donnée puis je liste les réponses comme ceci :

    While ($rowcli = mysql_fetch_array($sql)){……… //les données
    


    Je ne connais pas à l'avance le nombre de case à cocher que la page web me retournera, c'est en fonction du nombre de résultat de la requête sql.

    Mes checkbox sont générées comme ceci :

    <?php
    ………
    ……
    $nbre_resultat=mysql_num_rows($sql);
    
    While ($rowcli = mysql_fetch_array($sql)){
    echo "<tr>
       <td><label><input type='checkbox' name='checkbox_print' value='$rowcli["id"]' id='checkbox' /></label></td>
    <tr>";
    }
    echo "<tr>";
    echo "<td id='print'><a href='#' onclick=\"sendMailI('$nbre_resultat');\">Enregistrer la selection</a></td>";
    <echo "</tr>":
    ………
    ……
    ?>
    


    Mon but est de récupérer les valeurs des cases à cocher coché pour ensuite les afficher dans une autre page.
    Pour cela j'utilise le javascript (enfin j'essaye :) ).

    Ma fonction sendMail (dans la logique) parcourt les cases à cocher ou checked=vrai.
    Le script récupère ainsi les valeurs de ces cases à cocher.
    Je modifie le contenu d'une variable avec un nouveau code pour indiquer à l'utilisateur que sa sélection a bien été pris en compte et il est possible de les imprimer.

    En javascript voici ce que ça donne :
    function sendMail(nbr){
    for (var i=0; i<=nbr;i++){
    var id;
    if (document. checkbox_print[i].checked==true){
    id=document. checkbox_print[i].value;
    }
    return id;
    
    alert("Vos informations ont bien été enregistré et sont prêtes à être imprimées");
    document.getElementById('print').innerHTML="<a href='#' onclick=\"alert('OK')\">Imprimer</a>";
      
    }
    



    Je ne sais pas si c'est la meilleur solution. Mon but est d'enregistrer la valeur de la case à cocher.
    1 - lorsque l'on coche la case doit-on à ce moment-là fait appel à du js en enregistrant la valeur qui me sera retourné?
    problème => au moment de répéter cette action sur une autre case à cocher il écrasera la valeur qui a été enregistré avec la précédent checkbox coché.

    2- Depuis un lien récupérer les valeurs des checkbox avec une boucle for.
    Le problème sera de retranscrire d'une ces informations dans une variable bien identifiable et non sous forme de tableau, car inexploitable car je ne sais pas combien de j'aurai à gérer d'informations étant donnée que les informations sont afficher dynamiquement.

    C'est encore un peu brouillon je le remarque aussi. Je n'arrive pas à schématiser correctement l'algorithme que je veux mettre en place.

    Comment puis-je gérer mes checkbox?

    Pour donner un exemple de script susceptible d'utiliser la même approche est la gestion des citations multiple.
    On selectionne les citations dont on a besoin, on garde en mémoire ces citations.
    • Partager sur Facebook
    • Partager sur Twitter
      5 juin 2009 à 18:11:22

      J'espère que ton deuxième code PHP est un montage où tu as fait plein d'erreurs...

      Parce que sinon, y'a vraiment des problèmes... Ou sont les <?php ?>, qu'est-ce que c'est que ce "<echo" ? etc.
      • Partager sur Facebook
      • Partager sur Twitter
        5 juin 2009 à 19:25:19

        Oui c'est un montage, désolé j'ai fait pleins de petites erreurrs ^^
        • Partager sur Facebook
        • Partager sur Twitter
          7 juin 2009 à 21:46:49

          Pour en revenir à ton problème... je ne comprends pas bien pourquoi tu ne fais pas un envoi des données à l'aide de PHP... ?

          (C'est le cas avec la sélection de citations que tu donnes en exemple, non ?)

          Pourrais-tu réexpliquer ce que tu cherches à faire ? Et dans le même temps, donne le code HTML généré plutôt que le PHP, afin qu'on voie explicitement la structure de la page.
          • Partager sur Facebook
          • Partager sur Twitter
            8 juin 2009 à 10:13:50

            Bonjour,

            La raison pour laquelle je n'ai pas résonné en premier en php car j'ai plusieurs information à enregistrer dans une variable.

            Maintenant, j'ai potassé tout ça ce week-end puis pensé à gérer les enregistrements d'id à l'aide de cookies.

            Mon bute est d'imprimer des informations sur le client.
            Ma page PHP que me retourne le serveur liste les informations liées à ce client, il peut y en avoir 0 comme x.
            Une information correspond à une ligne dans mon tableau.

            Dans une ligne type , on peut y trouver la date de l'info, le nom du client, le résumé de l'info et une case à cocher dans l'éventualité ou l'utilisateur veut imprimer cette information.

            Voici le code HTML :)
            <table>
            <tr bgcolor="#FFCC00">
                                    <th align="center" width="12%" class="octxtgras"><span>Date des l'info</span></th>
                                    <th align="center" width="20%" class="octxtgras"><span">Motif</span></th>
                                    <th align="center" width="5%" class="octxtgras"><span>Type d'intervention</span></th>
                                    <th align="center" width="8%" class="octxtgras"><span>Statut du probl&egrave;me</span></th>
                                    <th align="center" width="23%" class="octxtgras"><span>D&eacute;tails de l'info</span></th>
                                    <th align="center" width="6%" class="octxtgras"><span></span></th>
                                    <th align="center" width="8%" class="octxtgras"><span>Print</span></th>
                                  </tr>
                                  
                                  
              
                                  <tr onmouseover="this.style.backgroundColor='#FFFF99';" onmouseout="this.style.backgroundColor='white';">
                                    <td class="octxtgras" height="20">01-06-2009</td>
                                    <td class="octxtgras" height="20">motif du problème[...]</td>
                                    <td class="octxtgras" height="20">Support Téléphonique</td>
                                    <td class="octxtgras" height="20">Résolu</td>
                                    <td class="octxtgras" height="20">Résumé du problème[...]</td>
                                    
                                    <td class='octxtgras' height='20'><a href='page.html'><span class='texte_bouton'>Modifier</span></a>/Terminer</td>
                                    <td class="octxtgras" height="20">
                                          <label>
                                                <input type="checkbox" name="checkbox_print" value="25" id="checkbox" onClick="recordincident('25');" />
                                           </label>
                                    </td>
                                  </tr>
            
                                  <tr onmouseover="this.style.backgroundColor='#FFFF99';" onmouseout="this.style.backgroundColor='white';">
                                    <td class="octxtgras" height="20">01-06-2009</td>
                                    <td class="octxtgras" height="20">motif du problème[...]</td>
                                    <td class="octxtgras" height="20">Support Téléphonique</td>
                                    <td class="octxtgras" height="20">Résolu</td>
                                    <td class="octxtgras" height="20">Résumé du problème[...]</td>
                                    
                                    <td class='octxtgras' height='20'><a href='page.html'><span class='texte_bouton'>Modifier</span></a>/Terminer</td>
                                    <td class="octxtgras" height="20">
                                          <label>
                                                <input type="checkbox" name="checkbox_print" value="25" id="checkbox" onClick="recordinfo('26');" />
                                           </label>
                                    </td>
                                  </tr>
              
                                  
                  <td colspan='2' align='center' class='octxt_red'> <span id='text_att'>&nbsp;</span></td>
                </tr>
                <tr align="center">
                        <td class="octxtgras" colspan="6">Page
                  <a href="index.php?numero_page=1"> 1 </a></td>
                <td id='print'>
                    <a href='#' onclick="sendMailInfo();">Enregistrer la selection</a>
                 </td>
                </tr>
            </table>
            


            On peut identifier les cases à cocher entouré par les balises <label></label> et le lien <a> qui enregistre les cases cochées avec leur valeur respectives depuis la fonction sendMailInfo().

            La fonction recordinfo('id') est juste la pour m'informer de ce que j'enregistre dans l'espoir de voir l'id de la première et seconde case (hypothèse ou elles sont été cochées.

            Le procédé est exactement le même qu'avec les citations multiples oui :)

            Pour le moment ma fonction ne fonctionne pas cas je n'arrive pas à garder plus d'une valeur sans que la précédente soit écrasé

            J'avais pensé à ceci (mais qui ne me donne pas satisfaction).
            function recordinfo(id){
              id="+"+id;
              
              alert (id);
            }
            


            J'espère m'être exprimé correctement, le lundi matin c'est toujours dur ^^
            Merci
            • Partager sur Facebook
            • Partager sur Twitter
              8 juin 2009 à 12:46:45

              Ah d'accord, je crois que je comprends un peu mieux. (Mais en effet, lundi matin (bon d'accord, midi), c'est pas évident).

              Par contre, je ne comprends pas bien pourquoi tu trouves l'Array inexploitable... ?
              En JS, ils n'ont pas de taille définie.
              • Partager sur Facebook
              • Partager sur Twitter
                8 juin 2009 à 13:59:10

                je peux par exemple définir un array comme ceci :


                function recordinfo(id){
                  tableau[]=id;
                  
                  alert (id);
                }
                


                Le tableau enregistrera chaque nouvelle entrée sans effacer la/les précédente(s)?


                • Partager sur Facebook
                • Partager sur Twitter
                  8 juin 2009 à 14:43:00

                  Non plutôt...
                  var tableau = [];
                  function recordinfo(id){
                    tableau.push(id); // On ajoute l'id au tableau
                    alert(tableau); // affichage de tous les ids enregistrés
                  }
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 juin 2009 à 16:00:39

                    Effectivement cela fonctionne parfaitement :). Merci.

                    Maintenant je ne pense pas que mon script soit complètement adapter à ce type de demande.

                    Une fois que je décoche ma case alors que celle-ci a été sélectionné s'ajoute encore. :o
                    Je peux bien entendu corriger le tire en lui indiquant que la case a été décoché puis en supprimant l'id.
                    Bref ce n'est pas la meilleur façon de gérer cela. :euh:

                    Le mieux serait depuis mon lien "enregistrer la sélection" de vérifier quelle case est cochée, pour récupérer à chacune leur id. non? ^^
                    • Partager sur Facebook
                    • Partager sur Twitter
                      9 juin 2009 à 11:48:27

                      ok :)

                      Ce que je sais :

                      Le nombre de case à cocher (avec $nbre_resultat)
                      - Elle porte toute le même nom "name= 'checkbox_print'"
                      - l'id aura pour nom checkbox_id (l'id est celui de l'information)

                      En utilisant l'objet DOM, il est possible de naviguer entre les checkbox (se sont les seuls dans la page).

                      document.getElementsByTagName('checkbox')[i];
                      


                      En gros voici comment j'organiserai ma page web :

                      <?php
                      $connection = mysql_connect("localhost", "user", "pass") or die ("Couldn't connect to server.");
                      $db = mysql_select_db("nom_base", $connection) or die ("Couldn't select database.");
                      
                      $sql=mysql_query("SELECT id, info …… FROM table WHERE id_info="$id_info" ")or die("La requette ne peut pas etre execut&eacute; dans la table <br> table '.mysql_error());
                      $nbre_resultat=mysql_num_rows($sql);
                      ?>
                      



                      Code HTML que me retourne le serveur une fois le php exécuté
                      <table>
                      <tr bgcolor="#FFCC00">
                                              <th align="center" width="12%" class="octxtgras"><span>Date des l'info</span></th>
                                              <th align="center" width="20%" class="octxtgras"><span">Motif</span></th>
                                              <th align="center" width="5%" class="octxtgras"><span>Type d'intervention</span></th>
                                              <th align="center" width="8%" class="octxtgras"><span>Statut du probl&egrave;me</span></th>
                                              <th align="center" width="23%" class="octxtgras"><span>D&eacute;tails de l'info</span></th>
                                              <th align="center" width="6%" class="octxtgras"><span></span></th>
                                              <th align="center" width="8%" class="octxtgras"><span>Print</span></th>
                                            </tr>
                                            
                                            
                        
                                            <tr onmouseover="this.style.backgroundColor='#FFFF99';" onmouseout="this.style.backgroundColor='white';">
                                              <td class="octxtgras" height="20">01-06-2009</td>
                                              <td class="octxtgras" height="20">motif du problème[...]</td>
                                              <td class="octxtgras" height="20">Support Téléphonique</td>
                                              <td class="octxtgras" height="20">Résolu</td>
                                              <td class="octxtgras" height="20">Résumé du problème[...]</td>
                                              
                                              <td class='octxtgras' height='20'><a href='page.html'><span class='texte_bouton'>Modifier</span></a>/Terminer</td>
                                              <td class="octxtgras" height="20">
                                                    <label>
                                                          <input type="checkbox" name="checkbox_print" value="25" id="checkbox" onClick="recordincident('25');" />
                                                     </label>
                                              </td>
                                            </tr>
                      
                                            <tr onmouseover="this.style.backgroundColor='#FFFF99';" onmouseout="this.style.backgroundColor='white';">
                                              <td class="octxtgras" height="20">01-06-2009</td>
                                              <td class="octxtgras" height="20">motif du problème[...]</td>
                                              <td class="octxtgras" height="20">Support Téléphonique</td>
                                              <td class="octxtgras" height="20">Résolu</td>
                                              <td class="octxtgras" height="20">Résumé du problème[...]</td>
                                              
                                              <td class='octxtgras' height='20'><a href='page.html'><span class='texte_bouton'>Modifier</span></a>/Terminer</td>
                                              <td class="octxtgras" height="20">
                                                    <label>
                                                          <input type="checkbox" name="checkbox_print" value="25" id="checkbox" onClick="recordinfo('26');" />
                                                     </label>
                                              </td>
                                            </tr>
                        
                                            
                            <td colspan='2' align='center' class='octxt_red'> <span id='text_att'>&nbsp;</span></td>
                          </tr>
                          <tr align="center">
                                  <td class="octxtgras" colspan="6">Page
                            <a href="index.php?numero_page=1"> 1 </a></td>
                          <td id='print'>
                              <a href='#' onclick="sendMailInfo('2');" >Enregistrer la selection</a>
                           </td>
                          </tr>
                      </table>
                      

                      information :
                      j'intègre dans la fontion sendMailInfo en paramètre le nombre que me retourne => $nbre_resultat=mysql_num_rows($sql);

                      Code javascript au clique du lien enregistrer la sélection
                      function sendMailInfo(count){
                      
                      var compteur= count;
                      var tableau =[];
                      
                      var checkbox =document.getElementsByTagName('checkbox')
                      for (var i=0; i<compteur; i++){
                          if (checkbox[i].checked=true){
                              checkbox[i]=checkbox[i].value;
                              tableau.push(checkbox[i]);
                              }
                          }
                      }
                      //Première solution
                      document.getElementById('print').innerHTML="<a href='print.php' onclick=\"printinfo(\''+tableau+'\');\" >Enregistrer la selection</a>";
                      
                      //Seconde solution
                      document.getElementById('print').innerHTML="<a href='print.php?id_print='"+tableau+"' >Enregistrer la selection</a>";
                      


                      La variable
                      <?php
                      $_GET['id_print'];
                      ?>
                      
                      me retournera-t-elle un tableau?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        9 juin 2009 à 14:25:33

                        Alors quelques petites choses.

                        Tout d'abord, pour récupérer les inputs checkbox, tu ne peux pas faire document.getElementsByTagName("checkbox") ^^ Car ce sont avant tout des inputs !

                        Il faut que tu fasses :

                        var inp = document.getElementsByTagName("input"),
                        checkboxes = [];
                        for(var i=0,l=inp.length;i<l;i++) {
                          if(inp[i].type=="checkbox"){
                            checkboxes.push(inp[i]);
                          }
                        }
                        // Ici checkboxes est un array contenant les input checkbox
                        


                        Ensuite, ce n'est pas la peine d'envoyer le count en paramètre, puisque tu pourras compter les checkbox en regardant checkboxes.length ^^

                        Reprenons donc ta fonction JS, sachant que toi, seules les checkboxes cochées t'intéressent.
                        (Note : C'est pas la peine de faire la gueule aux point-virgules, ils sont très gentils. Et il est nécessaire de tous les mettre)

                        function sendMailInfo(){
                          var inp = document.getElementsByTagName("checkbox"),
                          tableau =[];
                        
                          for(var i=0, l=inp.length; i<l; i++){
                            if(inp[i].type=="checkbox" && inp[i].checked=true){
                              tableau.push(inp[i])
                            }
                          }
                          
                          // Ici, "tableau" contient les input checkbox cochés uniquement.
                        }
                        



                        Maintenant, il faut réfléchir à comment tu vas envoyer les values de ces checkboxes cochées à ton PHP.
                        D'abord, pourquoi refaire apparaître un lien ? Tu ne pourrais pas les envoyer directement ?

                        Ensuite, pour envoyer des infos sous forme de tableau à PHP via un formulaire, il faut que le name des checkbox soit sous la forme "le_nom[]" (avec les crochets vides).

                        Ainsi, si tu envoies par GET, tu auras une QueryString du style :
                        page.php?le_nom[]="yop1"&le_nom[]="yop2"

                        Mais :

                        <?php
                        echo $_GET["le_nom"];
                        ?>
                        


                        Il s'agit bien d'un array !


                        Bon, il me manque des infos pour t'aider complètement, mais j'espère t'avoir mis sur la voie.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          9 juin 2009 à 15:27:00

                          Merci pour ces lignes de code qui m'aide pas mal :)
                          Effectivement j'ai oublié quelques points virgules.

                          En mettant en application mon petit script de cette après-midi j'ai pu relever quelques petites erreurs que tu as noté aussi !

                          Par contre

                          //cette ligne n'est pas correcte, elle me coche toutes mes cases.
                          inp[i].checked=true
                          
                          // ceci fonctionne mieux 
                          inp[i].checked== :)true
                          


                          Voici là où j'en suis
                          function sendMailInfo(count){
                          
                          var compteur= parseInt(count)+2;
                          var tableau =[];
                          
                          var checkbox =document.getElementsByTagName('input');
                          
                          for (var i=2; i<compteur; i++){
                              if (checkbox[i].checked==true){
                                  tableau.push=checkbox[i].value;
                                  }
                              }
                          alert(tableau);
                          //Première solution
                          print=document.getElementById('print');
                          print.innerHTML="<a href='print.php?id_print=\'"+tableau+"\' onclick=\"printinfo(\''+tableau+'\');\">Imprimer</a>";
                          
                          
                          }
                          


                          Petit problème, la fenêtre alert(tableau) ne retour aucune valeur.
                          Pourquoi?

                          Pour avancer un peu plus(j'ai déjà bien avance grâce à tes explications, merci), la finalité est de sortie une page web ou un document pdf en utilisant la librairie fpdf (que je connais bien) pour pouvoir imprimer les informations :).

                          Je me suis tourné vers la seconde solution, pour créer une nouvelle page en y passant des valeurs via la méthode GET.
                          document.getElementById('print').innerHTML="<a href='print.php?id_print='"+tableau+"' >Enregistrer la selection</a>";
                          


                          Tu me parles de QueryString (je ne connaissais pas ce terme :) ) je dois nommé mes checkbox comme ceci name=le_nom[].
                          C'est un tableau automatique.

                          Comment puis-je sortir ceci
                          page.php?le_nom[]="yop1"&le_nom[]="yop2" ?

                          N'est-ce pas possible d'utiliser cette solution ?
                          document.getElementById('print').innerHTML="<a href='print.php?id_print='"+tableau+"' >Enregistrer la selection</a>";
                          

                          Sachant que tableau contient les id des cases sélectionnées.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            9 juin 2009 à 15:53:44

                            Oui exact, j'avais fait une faute de frappe. A noter d'ailleurs que le "==true" peut être carrément supprimé.

                            Enfin ensuite, je ne comprends pas bien ta nouvelle fonction... car en fait tu n'as pas du tout suivi mes quelques recommandations ... ?

                            Pourquoi t'embarrasses-tu d'un compteur, alors que tu pourras l'obtenir avec le length ?
                            Pourquoi démarres-tu de 2 au lieu de 0 ?
                            Pourquoi ne vérifies-tu pas le type des inputs afin de t'assurer qu'il s'agit bien de checkbox ? o_O


                            Après, pourquoi veux-tu créer un lien plutôt que de simplement rediriger l'utilisateur vers la page qui convient ?
                            Là, tu l'obliges à cliquer deux fois !


                            Enfin, non, je ne pense pas que la dernière solution soit possible. Mais tu peux recréer la query string en JS :

                            var tableau; // Je considère que le tableau est déjà rempli avec les values des cases cochées
                            var querystr = "";
                            
                            for(var i=0,l=tableau.length;i<l;i++) {
                              querystr += (i==0) ? "?" : "&";
                              querystr += "id_print[]=";
                              querystr += tableau[i];
                            }
                            
                            // Ici, querystr est normalement une chaîne de la forme :
                            // ?id_print[]=value1&id_print[]=value2 ...
                            


                            Si tu envoies cette query string à PHP, il y verra un array id_print !
                            • Partager sur Facebook
                            • Partager sur Twitter
                              9 juin 2009 à 17:34:14

                              Citation : Golmote

                              Oui exact, j'avais fait une faute de frappe. A noter d'ailleurs que le "==true" peut être carrément supprimé.

                              Enfin ensuite, je ne comprends pas bien ta nouvelle fonction... car en fait tu n'as pas du tout suivi mes quelques recommandations ... ?

                              Pourquoi t'embarrasses-tu d'un compteur, alors que tu pourras l'obtenir avec le length ?
                              Pourquoi démarres-tu de 2 au lieu de 0 ?
                              Pourquoi ne vérifies-tu pas le type des inputs afin de t'assurer qu'il s'agit bien de checkbox ? o_O


                              Effectivement, mon précédent poste ne fait pas mention de tes remarques. J'adapte au fur et à mesure sur mon site, donc le fonctionnement diffère un peu. J'ai deux input avant la première case à cocher d'où le 2.

                              Citation : Golmote


                              Après, pourquoi veux-tu créer un lien plutôt que de simplement rediriger l'utilisateur vers la page qui convient ?
                              Là, tu l'obliges à cliquer deux fois !


                              Oui, je préfère ouvrir une nouvelle fenêtre plutôt que de rafraîchir la page et d'y ajouter les informations en vue d'une impression.

                              Citation : Golmote


                              Enfin, non, je ne pense pas que la dernière solution soit possible. Mais tu peux recréer la query string en JS :

                              var tableau; // Je considère que le tableau est déjà rempli avec les values des cases cochées
                              var querystr = "";
                              
                              for(var i=0,l=tableau.length;i<l;i++) {
                                querystr += (i==0) ? "?" : "&";
                                querystr += "id_print[]=";
                                querystr += tableau[i];
                              }
                              
                              // Ici, querystr est normalement une chaîne de la forme :
                              // ?id_print[]=value1&id_print[]=value2 ...
                              



                              Si tu envoies cette query string à PHP, il y verra un array id_print !



                              Je vais travailler ta nouvelle fonction et l'adapter :), merci.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                9 juin 2009 à 17:47:55

                                Ok pour le démarrage à 2, mais sache que la fonction que j'ai donnée pour compter les input checkbox cochés est "générique". Elle fonctionnera quel que soit ton nombre d'inputs de toutes sortes.

                                Elle est donc plus conseillée, car elle n'aura pas à être modifiée si tu modifies ta page.


                                Enfin tu dis vouloir ouvrir une nouvelle fenêtre... Pour cela, inutile de mettre un lien.

                                On utilise window.open() . Se renseigner via Google pour son utilisation.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  10 juin 2009 à 15:12:29

                                  Bonjour :)

                                  J'ai des petites soucis :(, comprend pas.

                                  J'ai retravaillé ma fonction en prenant compte de vos remarques :).

                                  j'ai du écrire une bêtise car le script ne s'exécute plus.


                                  Voici ce que j'ai fait :

                                  function sendPrintInfo(){
                                  alert('toto');// même l'alerte ne fonctionne pas
                                  var tableau =[];
                                  
                                  var checkbox =document.getElementsByTagName('input');
                                  var querystr = "";
                                  
                                  for (var i=0; var l= checkbox.length;i<l;i++){
                                      if (checkbox[i].type=="checkbox" && checkbox[i].checked=true){
                                          tableau.push=checkbox[i].value;
                                          querystr += (i==0) ? "?" : "&";
                                          querystr += "id_print[]=";
                                          querystr += tableau[i];
                                          }
                                      }
                                  
                                  alert(querystr);// Afficher les informations enregistrer dans la variable querystr.
                                  
                                  //Première solution
                                  print=document.getElementById('print');
                                  window.open("index.php?id="+ querystr +"","print");// Ici aucune information ne sont transmit via l'url, j'ai du mal écrire cette ligne.
                                  }
                                  


                                  Quand je teste la page sur mon navigateur internet (safari 4) mon lien qui appel la fonction SendPrintInfo() ne me renvoie rien. Mon navigateur m'indique que la variable SendPrintInfo() est introuvable, pourquoi? tout me semble correct au niveau du html :
                                  <a href="#postprint" onclick="SendPrintInfo();">Imprimer la sélection</a>
                                  


                                  Que peux-tu m'apprendre encore :)

                                  Merci
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    10 juin 2009 à 15:21:50

                                    A la ligne 8, tu ne déclares pas correctement ta boucle for() ^^

                                    for (var i=0; var l= checkbox.length;i<l;i++){
                                    


                                    Il faut que tu définissent i et l ainsi :

                                    for (var i=0, l= checkbox.length;i<l;i++){
                                    
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      10 juin 2009 à 15:37:56

                                      Je me suis posé la question ^^ à savoir si je ne devais pas rajouter var pour déclarer correctement la variable.

                                      Malheureusement le script ne fonctionne pas, le navigateur ne trouve pas la fonction :(.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        10 juin 2009 à 15:38:41

                                        Faute de frappe ? :p
                                        (m'est arrivé la même chose ce matin :-° )
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          10 juin 2009 à 15:55:55

                                          J'ai identifié mon problème.

                                          Ma boucle for génère une erreur quelque part, je ne sais pas encore où.

                                          voici ma boucle for :
                                          for (var i=0; l= checkbox.length;i<l;i++){
                                              if (checkbox[i].type=="checkbox" && checkbox[i].checked=true){
                                                  tableau.push=checkbox[i].value;
                                                  querystr += (i==0) ? "?" : "&";
                                                  querystr += "id_print[]=";
                                                  querystr += tableau[i];
                                                  }
                                              }
                                          


                                          J'y travaille :), si vous avez des idées :) je suis preneur, merci :)

                                          _________
                                          Dans la déclaration de mes paramètres dans la boucle for il y a une virgule entre var i et l=checkbox.length non un point virgule

                                          var i=0, l= checkbox.length;i<l;i++
                                          


                                          ________
                                          La deuxième condition dans le if n'est pas correct :)
                                          Il faut deux égales pour indiquer que l'on cherche à vérifier si les cases sont cochées.
                                          checkbox[i].checked==true
                                          


                                          Pour regarder ce qu'enregistre la variable querystr j'ai demandé d'afficher dans une fenêtre d'avertissement le contenu de la variable.
                                          &id_print[]=undefined&id_print[]=undefined


                                          Pourquoi ai-je undefined au lieu de(s) value de la (les) case(s) cochée(s)?
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            10 juin 2009 à 17:42:01

                                            Hum... en fait, je suis en train de prendre conscience que le tableau[] n'a plus aucun intérêt, puisqu'on insère directement les valeurs dans la query string.
                                            Et je crois même que c'est lui qui pose problème, d'où les undefined...

                                            Essaie comme ça :

                                            function sendPrintInfo(){
                                            alert('toto');// même l'alerte ne fonctionne pas
                                            
                                            var checkbox =document.getElementsByTagName('input');
                                            var querystr = "";
                                            var cpt = 0;
                                            for (var i=0, l= checkbox.length;i<l;i++){
                                                if (checkbox[i].type=="checkbox" && checkbox[i].checked){
                                                    querystr += (cpt==0) ? "?" : "&";
                                                    querystr += "id_print[]=";
                                                    querystr += checkbox[i].value;
                                                    cpt++;
                                                    }
                                                }
                                            
                                            alert(querystr);// Afficher les informations enregistrer dans la variable querystr.
                                            
                                            //Première solution
                                            print=document.getElementById('print');
                                            window.open("index.php?id="+ querystr +"","print");// Ici aucune information ne sont transmit via l'url, j'ai du mal écrire cette ligne.
                                            }
                                            



                                            Petites explications.

                                            La virgule entre les deux déclarations de i et l, c'est normal. Ca permet de "propager" le "var" sur les variable. Jusque là aucun souci.

                                            Ensuite, il manquait effectivement un "=" dans la condition, mais j'ai carrément simplifié en mettant : checkbox[i].checked , puisqu'il s'agit d'une expression booléenne.

                                            J'ai supprimé tout ce qui avait rapport au tableau, désormais inutile.

                                            Mais il fallait du coup ajouter un compteur, afin de détecter le premier checkbox coché (celui dont la valeur doit être précédé de "?" et non pas "&" dans la query string).

                                            Je pense que ça devrait fonctionner.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              10 juin 2009 à 22:55:37

                                              Bien vu ! pour le tableau :) Effectivement je n'en ai plus du tout besoin.


                                              je testerai tout cela demain.

                                              Merci pour ton aide fort appréciable.
                                              __________________
                                              Testé t approuvé :)

                                              Il me reste encore quelques petites chose à regarder du côté de php à savoir comment faire des requêtes sql avec plusieurs critères (ça marche en ne cochant qu'une case, mais à plusieurs …… je regarde les tuto du site :) )
                                              -------------- terminus

                                              Pour ce que ça intéresse voici le code php de ma page que j'appelle en javascript :)

                                              <?php
                                              /* La fonction SendPrintInfo renvoie par l'url les id des incidents à imprimer sous la forme &id_print[]=25&id_print[]=24 (méthode GET) */
                                              $taille=count($_GET['id_print']);
                                              $cpt=0;
                                              for ($i=1;$i<=$taille;$i++){
                                                  $str_info.=" OR ";
                                                  $str_info.="id_inci=";
                                                  $str_info.=$_GET['id_print'][$cpt];
                                                  $cpt++;
                                              }
                                              $str_info=trim($str_info, " OR ");
                                              ?>
                                              




                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              Gestion des cases à cocher

                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                              • Editeur
                                              • Markdown