Partage
  • Partager sur Facebook
  • Partager sur Twitter

Checkbox qui sélectionne tout

    4 novembre 2010 à 21:14:47

    Salut à tous !

    Je viens solliciter votre aide sur un script pllutôt courant.

    J'ai créé un système de messagerie, où la liste des messages reçus s'intègre dans un tableau. Au début de chaque ligne, il y a une checkbox pour sélectionner le message correspondant.

    J'ai au-dessus de ce tableau une checkbox "maître" qui, quand on clique dessus, doit sélectionner toutes les checkbox (tous les messages) d'un coup.

    Voilà en image :
    image


    J'ai essayé toutes les solutions proposées sur ce topic, mais rien n'y fait :
    http://www.siteduzero.com/forum-83-441 [...] ctionner.html

    Voici mon code HTML:
    <form method="post" action="" name="general" enctype="multipart/form-data">
    <table width="100%" border="1" cellspacing="2" cellpadding="2">
      <tr>
        <td></td>
        <td>&nbsp;</td>
        <td><a href="">Supprimer</a></td>
        <td><a href="">Bloquer</a></td>
        <td><a href="">Afficher comme &quot;lu&quot;</a></td>
        <td><a href="">Afficher comme &quot;non lu&quot;</a></td>
      </tr>
      <tr>
        <td colspan="6">&nbsp;</td>
        </tr>
      <tr>
        <td><input type="checkbox" name="all" onclick="selectall(document.general.all,document.general.choix)" /></td>
        <td>&nbsp;</td>
        <td><em>Date</em></td>
        <td><em>Expéditeur</em></td>
        <td colspan="2"><em>Sujet</em></td>
        </tr>
        <tr>
        <td><input type="checkbox" name="id<?php echo $donnees['id']; ?>" id="" /></td>
        <td>&nbsp;</td>
        <td><strong><?php echo $donnees['date_envoi']; ?></strong></td>
        <td><strong><a href=""><?php echo $donnees['pseudo_env']; ?></a></strong></td>
        <td colspan="2"><strong><a href="message.php?id=<?php echo $donnees['id']; ?>"><?php echo $donnees['sujet']; ?></a></strong></td>
      </tr>
      <tr>
        <td><input type="checkbox" name="id<?php echo $donnees['id']; ?>" id="" /></td>
        <td>&nbsp;</td>
        <td><strong><?php echo $donnees['date_envoi']; ?></strong></td>
        <td><strong><a href=""><?php echo $donnees['pseudo_env']; ?></a></strong></td>
        <td colspan="2"><strong><a href="message.php?id=<?php echo $donnees['id']; ?>"><?php echo $donnees['sujet']; ?></a></strong></td>
      </tr>
      <tr>
        <td><input type="checkbox" name="id<?php echo $donnees['id']; ?>" id="" /></td>
        <td>&nbsp;</td>
        <td><strong><?php echo $donnees['date_envoi']; ?></strong></td>
        <td><strong><a href=""><?php echo $donnees['pseudo_env']; ?></a></strong></td>
        <td colspan="2"><strong><a href="message.php?id=<?php echo $donnees['id']; ?>"><?php echo $donnees['sujet']; ?></a></strong></td>
      </tr>
      <tr>
        <td><input type="checkbox" name="id<?php echo $donnees['id']; ?>" id="" /></td>
        <td>&nbsp;</td>
        <td><strong><?php echo $donnees['date_envoi']; ?></strong></td>
        <td><strong><a href=""><?php echo $donnees['pseudo_env']; ?></a></strong></td>
        <td colspan="2"><strong><a href="message.php?id=<?php echo $donnees['id']; ?>"><?php echo $donnees['sujet']; ?></a></strong></td>
      </tr>
      </table>
    </form>
    


    Voilà. Sauriez-vous éclairer ma lanterne ?
    • Partager sur Facebook
    • Partager sur Twitter
      4 novembre 2010 à 21:21:40

      Avant toute chose tu peux le faire sans Javascript avec que du Php, dans une boucle ou tu check chaque case (en rechargeant la page).
      Le moyen avec du Javascript, est de récupérer toute les balises input, ou toute une class checkbox, et dans une boucle les passer check.
      • Partager sur Facebook
      • Partager sur Twitter
        4 novembre 2010 à 21:23:20

        grace a php tu attribues une id croissante a toutes tes checkbox avec une boucle for genre:
        <input id="1" type="checkbox" name="all" onclick="selectall(document.general.all,document.general.choix)" />
        <input id="2" type="checkbox" name="all" onclick="selectall(document.general.all,document.general.choix)" />
        <input id="3" type="checkbox" name="all" onclick="selectall(document.general.all,document.general.choix)" />
        ...
        

        et ensuite en js:
        for(var i=1;i<=nbcheckbox;i++)
        {
        getElementByID(i).checked=true;
        }
        

        lors d'un click sur ta checkbox maitre
        • Partager sur Facebook
        • Partager sur Twitter
          4 novembre 2010 à 21:27:44

          Je reviendrai sur vos réponses plus tard, il faut que je file là.

          Mais je tenais à préciser que je n'y connais absolument rien au Javascript ;)
          • Partager sur Facebook
          • Partager sur Twitter
            5 novembre 2010 à 12:11:23

            Citation : lifaon74

            grace a php tu attribues une id croissante a toutes tes checkbox avec une boucle for genre:

            <input id="1" type="checkbox" name="all" onclick="selectall(document.general.all,document.general.choix)" />
            <input id="2" type="checkbox" name="all" onclick="selectall(document.general.all,document.general.choix)" />
            <input id="3" type="checkbox" name="all" onclick="selectall(document.general.all,document.general.choix)" />
            ...
            


            Evitons quand même les ids purement numériques... et même commençant par un chiffre.

            Préférons quelque chose comme chk1, chk2, chk3...
            • Partager sur Facebook
            • Partager sur Twitter
              5 novembre 2010 à 15:34:39

              Oui par contre, je ne veux pas faire cette fonction en php.
              Je trouve que ça n'a aucun intérêt de devoir recharger la page.

              Je veux que ça remplisse toutes les checkbox instantanément, donc en JS.
              • Partager sur Facebook
              • Partager sur Twitter
                5 novembre 2010 à 16:07:59

                Citation : lifaon74

                grace a php tu attribues une id croissante a toutes tes checkbox avec une boucle for



                Citation : Golmote

                quelque chose comme chk1, chk2, chk3...

                • Partager sur Facebook
                • Partager sur Twitter
                  6 novembre 2010 à 15:26:49

                  Oui d'accord, je ne voyais pas bien où vous vouliez en venir.
                  Ok.

                  Est-ce qu'il est possible d'avoir plus de détail sur la partie Javascript ? Pardon, mais je n'y connais rien au JS...
                  Est-ce que je mets juste :
                  for(var i=1;i<=nbcheckbox;i++)
                  {
                  getElementByID(i).checked=true;
                  }
                  


                  ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 novembre 2010 à 15:35:10

                    Presque ça :) .

                    document.getElementById(i).checked = true;

                    Ps: dans le cas ou t'as pas que des nombres en id tu peux faire genre :
                    document.getElementById("checkBox"+i)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Checkbox qui sélectionne tout

                    × 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