Partage
  • Partager sur Facebook
  • Partager sur Twitter

Checkbox dans une boucle

Mais, la valeur de la case ?

Sujet résolu
    19 février 2006 à 20:44:30

    Bonsoir à tous, j' ai un ptit problème au niveau des cases à cocher. J' expose mon problème:

    J' utilise ces cases pour ma messagerie, la case se trouve à coté du message et il suffit de la sélectionnée et ensuite cliquer sur "Supprimer la sélection" pour que celui-ci soit supprimer, seulement chaque case doit avoir une valeur. Le problème est donc là, je ne mets qu' une seule case à coché dans ma boucle, pour qu' il y en ait autant que de messages (ben oui tant qu' a faire :lol: )et donc à chaque fois la valeur 1.. ce qui pose problème.

    J' ai donc essayé de faire ça en fonction de l' id du message :

    <input type="checkbox" name="check[]" value=<?php $donnes['id']; ?> onclick="checkone()">


    Mais il y a un problème: le premier message (oui seulement le premier) n' est pas reconnu, c' est à dire que si je clique dessus et que je clique sur "Supprimer la sélection" il me raffiche une alert comme quoi il faut coché une case..

    Merci à vous si vous sauriez m' aider.. :(
    • Partager sur Facebook
    • Partager sur Twitter
      19 février 2006 à 20:48:18

      Montre le reste de ton code stp !
      • Partager sur Facebook
      • Partager sur Twitter
        19 février 2006 à 20:52:07

        Si vous avez vraiment envie que j' balance mes 150 lignes c' est parti :)

        <SCRIPT language="javascript" type="text/javascript">
        //////////////////////////////////////////////////////////////////////////////////////
        // function checkall()
        // cette fonction s'execute lorsqu'on clique sur la checkbox principale
        // elle passe en revue les checkbox et les coche si necessaire
        // la checkbox d'indice 0 est la checkbox principale
        // rem si ovus ajouter des element de formulaire, il faudra mofifier le script
        // car l'instruction : temp = document.main.elements.length; comptabilise
        // tous les elements et pas uniquement les checkbox...
        //////////////////////////////////////////////////////////////////////////////////////
        function checkall()
        {
           // compte tous les éléments du formulaire en numérotant chronologiquement
          temp = document.main.elements.length;
          if (document.main.elements[0].checked)
          { // si la case est cochée
            for (i=1; i < temp; i++)
             { // on coche toutes les autres
                  document.main.elements[i].checked=1;
              }
            }
            else
            {
               for (i=1; i < temp; i++)
              { // on décoche tout
                  document.main.elements[i].checked=0;
              }
            }
         }
         //////////////////////////////////////////////////////////////////////////////////////
         // function checkone()
         // cette fonction s'execute lorsqu'on coche ou décoche une checkbox qcq
         // elle fait le compte des checkbox cochée pour savoir s'il faut décocher
         // ou cocher la checkbox principale...
         //////////////////////////////////////////////////////////////////////////////////////
         function checkone()
         {
            m=0; // initialisation du nombre de cases cochées
            temp = document.main.elements.length;
            for (i=1; i < temp; i++)
            { // on commence à 1 pour ne pas prendre en compte la checkbox principale
               if (document.main.elements[i].checked)
              { // si la checkbox courante est cochée, on comptabilise
              m++;
              }
           }
            if (document.main.elements[0].checked)
            { // si la checkbox principale est cochée, on la décoche
               document.main.elements[0].checked=0;
            }
            else
            { // dans le cas contraire, on vérifie que toutes les checkbox sont cochées
                if (m == (temp-1)) document.main.elements[0].checked=1;
           }
         }
         //////////////////////////////////////////////////////////////////////////////////////
         // function verifselection()
         // cette fonction s'execute qd on clique sur le bouton supprimer
         // elle vérifie que l'on a bien selectionné un objet au moins...
         //////////////////////////////////////////////////////////////////////////////////////
         function verifselection()
         {
            n=0;
            temp = document.main.elements.length;
            for (i=1; i< temp;i++)
            {
               if (document.main.elements[i].checked)
              {
              n=n+1;
              }
            }
            if (n != 0)
            {
               if (confirm("Êtes-vous sûr de vouloir supprimer ce(s) objet(s)?"))
               {
                  document.main.submit();
               }
            }
            else
           {
               alert("Veuillez sélectionner au moins un message !");
            }
         }
        </SCRIPT>
        <?php
        //Ne pas oublier de mettre le session_start()
        session_start();

        //Ensuite on vérifie que la variable $_SESSION['logged'] existe et vaut bien true.
        if (isset($_SESSION['logged']) && $_SESSION['logged'] == true)
        {
        ?>
        <?
        include('config.php');

        $pseudo = $_SESSION['pseudo'];

        $rep=mysql_query("SELECT * FROM messages WHERE destinataire='".$pseudo."' AND afficher='1' ORDER BY id DESC LIMIT 0,20") or die(mysql_error()); /* Perte de temps
        de mettre la requête à part, sauf si elle ressert par le suite, ce qui n'est pas le cas ici */

                ?>
               
        <h1>Messages</h1>
        <form name="main" method="post" action="membres.php?page=supprimer">
                <center>
         <table>
         <tr>
         <th> Expéditeur </th>
         <th> Message </th>
         <th><img src="suppr.gif"/></th>
         </tr>
        <?
        while($message = mysql_fetch_array($rep))
        {
         $expediteur = $message['expediteur'];
         $date = $message['date'];
         $date_envoi = date('d/m/Y', $date);
         $heure_envoi = date('H\hi', $date);
         $contenu = $message['message'];
                       
         $contenu = nl2br(htmlentities(stripslashes($contenu))) ; // On enlève les slash qui se seraient ajoutés automatiquement, on enlève le méchant html, et on ajoute les br
               
         // On fait passer notre texte à la moulinette des Regex
         $recherche=array('!\[b\](.+)\[/b\]!isU', '!\[i\](.+)\[/i\]!isU', '!\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]!isU', '!\[lien=(.+)\](.+)\[/lien\]!i', '!\[image=(.+)\](.+)\[/image\]!i', '!\[centre\](.+)\[/centre\]!iuS') ; // On définit ce qui doit être recherché
         $remplacement=array('<strong>$1</strong>', '<em>$1</em>', '<span style="color:$1">$2</span>', '<a href="$1">$2</a>', '<img src="http://$2" alt="$1"/>', '<div class="centre">$1</div>') ; // On définit ce qui doit le remplacer
         $contenu = preg_replace($recherche, $remplacement, $contenu);
         ?>
         <td> <? echo $expediteur ?> <br> Le <? echo $date_envoi ?> à <? echo $heure_envoi ?> </td>
         <td> <? echo $contenu ?> </td>
         <td> <input type="checkbox" name="check[]" value=<?php $donnes['id']; ?> onclick="checkone()"></td>


        <?php

        if(isset($_POST['supprmsg']))
        {
        $sql = "DELETE FROM membres WHERE message='".$contenu."' WHERE pseudo='". $_SESSION['pseudo']  ."'" ;
        mysql_query($sql);
        }
        else
        {

        }
        mysql_close(); // Déconnexion de MySQL
        ?> </td>
         </tr>
         
                <?
                ;
                }

        }

        // Fin des actions si la personne est loguée
        ?>
        </table>
        <left>
        <a href="javascript:verifselection();">Supprimer la séléction</a>
        • Partager sur Facebook
        • Partager sur Twitter
          19 février 2006 à 21:09:56

          dans ta fonction checkone(), peut-être que tu devrait mettre que i=0, et non i=1 (dans la boucle for)
          • Partager sur Facebook
          • Partager sur Twitter
            19 février 2006 à 22:13:24

            Non je viens d' essayer.. :( Quelqu' un aurait une solution?
            • Partager sur Facebook
            • Partager sur Twitter
              19 février 2006 à 22:20:20

              et dans la fonction verifselection() tu as essayé ?
              • Partager sur Facebook
              • Partager sur Twitter
                19 février 2006 à 22:26:08

                Ah là non ! Ca marche maintenant :D Merciii beaucoup :)
                • Partager sur Facebook
                • Partager sur Twitter

                Checkbox dans une boucle

                × 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