Partage
  • Partager sur Facebook
  • Partager sur Twitter

Supprimer un messages recu

probleme

Sujet résolu
    24 février 2006 à 23:45:05

    Salut,
    J'ai reussi a faire a ce que le joueur qui veut supprimer ses messages coche le messages à supprimer ( exemple : id = 12 )
    ensuite il clique sur Supprimer ca rafraichie la page et ça supprime le message qui a l'id 12.
    Mais si il coche celui qui a l'id 12 et celui qui a l'id 13 et qu'il clique sur supprimer, ca va supprimer que le 13, comment faire pour qu'il supprimel le 12 et le 13 ? voici mon code :
    <form action="" method=post>
    <input name="delete" type="checkbox" id="delete" value="<? echo $donnees['mp_id']; ?>">
    <input type="submit" name="Submit" value="Supprimer"></form>

    En haut de la page j'ai mi :
    <?
    if (isset($_POST['delete'])) // Si on demande de supprimer une news
    {
        // Alors on supprime la news correspondante
            $mp_i = htmlentities($_POST['delete']);
        mysql_query("DELETE FROM messages WHERE mp_id='".$mp_i."'");
    }
    ?>
    • Partager sur Facebook
    • Partager sur Twitter
      24 février 2006 à 23:47:19

      Je pense qu'il faut donner un nom différent à chacune de tes checkbix puis tu utilises une boucle foreach pour supprimer les messages.
      • Partager sur Facebook
      • Partager sur Twitter
        24 février 2006 à 23:47:26

        tu peux faire une boucle je pense pour suprimer le 12 et le 13
        • Partager sur Facebook
        • Partager sur Twitter
          24 février 2006 à 23:52:44

          je vois pas comment je pourrai faire la boucle o_O
          • Partager sur Facebook
          • Partager sur Twitter
            25 février 2006 à 0:01:49

            Bonjour, remplace ton name="delete" par name="delete[]" ce qui feras que la variable $_POST['delete'] est un array et non une string, du coup chaque ligne de l'array contient l'id cocher, ensuite un count sur la variable pour savoir combien d'id on été coché, une boucle for et c'est partie.

            Au revoir.
            • Partager sur Facebook
            • Partager sur Twitter
              25 février 2006 à 0:04:29

              Même sans foreach :p
              Tu fais d'abord :


              <form action="" method=post>
              <?php
              $req = mysql_query("SELECT id FROM messages WHERE pseudo='$pseudo'");
              while($mp = mysql_fetch_array($req);)
              {
              echo '<input type="checkbox" name="'.$mp['id'].'" /> Supprimer';
              }
              ?>
              <input type="submit" name="Submit" value="Supprimer"></form>



              $req = mysql_query("SELECT id FROM messages WHERE pseudo='$pseudo'");
              while($mp = mysql_fetch_array($req);)
              {
              if (!empty($_POST[$res['id']]) mysql_query("DELETE * FROM messages WHERE id='".$mp['id']."'");
              }
              ?>


              Non testé et je pense qu'il y a plus rapide mais bon :p
              • Partager sur Facebook
              • Partager sur Twitter
                25 février 2006 à 0:06:33

                ares dsl mais je capte pas ta methode, et the angel ca sert a quoi de compter le nombre de case cocher ?
                • Partager sur Facebook
                • Partager sur Twitter
                  25 février 2006 à 0:09:24

                  En fait, on compte fait une boucle pour tous les messages qu'a le membre, et on fait un bouton pour chaque messages (avec un name qui est égal à l'id du message).

                  Pour chaque bouton coché, la value est non nulle, donc on refait la boucle et on supprime si le bouton est coché :p

                  Mais j'ai refait le code, j'avais fait quelques fautes ^^
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 février 2006 à 0:15:01

                    j'ai appelé la checkbox : $donnees['mp_id']
                    et en bas de la page j'ai mis :
                    if (!empty($_POST[$donnees['mp_id']])
                    {
                    mysql_query("DELETE * FROM messages WHERE mp_id='".$donnees['mp_id']."'");
                    }

                    c'est bon ?
                    edit : php me dit qu'il y a une erreur a la ligne :
                    if (!empty($_POST[$donnees['mp_id']])

                    edit : Parse error: parse error, unexpected T_STRING, expecting ']' in ...

                    edit2 : c'est bon il manquait une parenthese lol
                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 février 2006 à 15:53:44

                      Bonjour, compter le nombre de case cocher comme tu dis ça sert à savoir sur combient de méssage le membre veut éffectuer une action, donc:
                      <input name="delete[]" type="checkbox" id="delete" value="<? echo $donnees['mp_id']; ?>">


                      <?php
                      //Tu fais ta vérification pour savoir si le formulaire est remplis, ensuite:
                      $nbr_id = count ($_POST['delete']);
                      if ($nbr_id != 0)
                      {
                          for ($i = 0; $i < $nbr_id; ++$i)
                          {
                              mysql_query ('
                                            DELETE
                                            FROM nom_table
                                            WHERE nom_champ_id = '
                      . (int)$_POST['delete'][$i]
                                          );
                          }
                      }
                      else
                          $error = 'Vous devez choisir au moins un méssage.';
                      ?>


                      Voilà en raccourcis un code qui devrait fonctionner et qui ne demande l'intervention de MySQL qu'une seule fois, n'oublis jamais que MySQL consomme énormément de ressource et qu'il faut limiter son utilisation au stric minimum.

                      Au revoir.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        25 février 2006 à 18:48:15

                        alors la merci beaucoup ! ca marche trop bien merci ^^
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Supprimer un messages recu

                        × 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