IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Supprimer plusieurs checkbox avec une requête ajax


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 14
    Par défaut Supprimer plusieurs checkbox avec une requête ajax
    Bonjour,
    Dans mon code j'affiche plusieurs checkbox
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    <body>
      <div class="container">
     
    <div class="row">
            <section class="col-sm-12">
            <form method="post" action="add.php" id="form-add" name="form-add" class="form-inline">
            <input type="text" name="name" placeholder="titre" class="form-control">
            <button type="submit" class="btn btn-primary" id="name" name="name">ENVOYER         
            </button>         
            </form>
            </section>
    </div>
    <div class="row">
            <section class="col-sm-12">
              <div class="panel panel-primary">
              <form method="post" action="formsupp.php" id="formsupp" name="formsupp" class="form-inline">
                <table class="table table-striped table-condensed">
                  <div class="panel-heading"> 
                    <h3 class="panel-title">EXEMPLE DE TABLEAU</h3>
                  </div>
                  <thead>
                    <tr>
                      <th>NOM</th>
                      <th>CONTENU</th>
                    </tr>
                  </thead>
                  <tbody>
     
                      <?php foreach ($articles as $article):?>
                          <tr>
                            <td>
                            <div class="radio">
                              <label><input type="checkbox" id="optradio[]" name="optradio[]"value="<?=$article['id'];?>"><?=$article['id'];?></label>
                              </td>
                          </div>
                          </tr>
                        <?php endforeach; ?>
                      <tr>
                        <td><input type="submit" id="bsupprim" name= "bsupprim" class="btn_danger" value"SUPPRIMER"/></td>
                      </tr>
                      </tbody>
                </table>
                </form>
              </div>
            </section>
          </div>  </div><!--container-->
    </body>
    J'ai un code php pour effacer les checkbox qui fonctionne
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    // array map renvoie tous les éléments du tableau après avoir fait la fonction callback ici intval
    $values = array_map('intval',$_POST['optradio']);
    //implode — Rassemble les éléments d'un tableau en une chaîne
    $values = implode(",",$values);
     
    require('connection.php');
    sleep(3);
    $bdd->query("DELETE FROM `article` WHERE `id` IN($values)");
    header('location:formulcb.php');
    Mon problème est de transformer la requête php en ajax


    j'ai écrit ce code pour transformer en une requète ajax
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    $('#formsupp').on('submit', function(e){
    			e.preventDefault();
    			var $form = $(this);
    			$.post(
    					$form.attr('action'),
    					$('#formsupp').serialize())	
    						.done(function(data, text, jqxhr){
    							alert(jqxhr.responseText);
    						//var $check = $form.find('#optradio');
    						//$check.hide();
     
    						})
    						.fail(function(jqxhr, text){
    							alert(jqxhr.responseText);
    						})
    						.always(function(){
     
    						});					
    				});
    Cela fonctionne après rechargement de la page, ce qui n'est pas le but pour une requête ajax!
    En fait mon problème est d'effacer les checkbox préalablement sélectionnées dans la fonction done() sans recharger.
    Je n'arrive pas à retrouver la bonne écriture jquery pour sélectionner la checkbox et lui appliquer un hide().
    Je vous remercie pour votre aide.

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 673
    Par défaut
    pour sélectionner les cases cochées avec jQuery, vous pouvez faire cela par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("input[name=\"optradio[]\"]:checked")
    j'ai remarqué que vous avez plusieurs éléments avec le même identifiant.
    même si cela à l'air de fonctionner maintenant, je vous conseille de corriger cela pour ne pas vous retrouver un jour avec un résultat inattendu.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 14
    Par défaut
    Merci Mathieu pour votre réponse.
    J'avais fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $( "input:checked" ).parent().hide();
    Mais effectivement il faut mieux utiliser name.
    Par contre je ne retrouve pas d’éléments avec des identifiants dupliqués.
    Dans tous les cas un grand merci mais je suis un peu honteux car la solution était sur la première page de jquery.com!
    Bon WE

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 673
    Par défaut
    Si vous générez plusieurs cases à cocher, elles ont toutes le même identifiant.
    Vous pouvez éviter cela en mettant "as $index =>$article" dans la boucle foreach et vous aurez donc un numéro différent pour chaque case.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Ecriture dans un fichier json avec une requête AJAX
    Par DarkPoster14 dans le forum jQuery
    Réponses: 1
    Dernier message: 10/07/2012, 09h45
  2. Réponses: 5
    Dernier message: 06/10/2009, 09h37
  3. Réponses: 4
    Dernier message: 11/06/2009, 16h03
  4. Réponses: 10
    Dernier message: 11/07/2007, 12h06
  5. pb avec une requête supprimer
    Par amel19 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/02/2005, 17h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo