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 :

Ajax sur tableau [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 124
    Par défaut Ajax sur tableau
    Bonjour,

    J'ai une messagerie interne au site que je développe.

    Lorsque je veux supprimer plusieurs messages, je coche les checkbox et valide.
    Je fais un appel Ajax pour ne pas avoir à recharger la page + afficher un message + faire disparaître les messages concernés.
    Le problème, c'est que le message de suppressions des messages n’apparaît qu'au 1er clic. ensuite je n'ai plus de messages jusqu'au moment ou je recharge manuellement la page.
    Et mon second problème vient du fait que si je coche plusieurs checkbox, en BDD elles seront bien supprimées, mais l'effet fadeOut ne se fait que sur une seule ligne.

    Voici mon code

    le tableau de données
    Code php : 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
    echo '<div class="error"></div><table class="mess">';
            echo '<thead><tr><th></th><th></th><th></th><th></th><th></th><th><small>'.$total_mess1.'</small></th></tr></thead><tbody>';
     
        echo '<div id="id_form_suppression">';
            echo '<FORM method="POST" action="#">';
     
        while($user=$req->fetch(PDO::FETCH_OBJ)) {
            if (($user->lu)==1) {
                echo '<tr id="ligne_'.$user->id.'"><td><input type="checkbox" id="choix" name="choix[]" value="'.$user->id.'"></td> <td><img src='.$urlImg.'mess_lu.png>';
            }
            else {
                echo '<tr id="ligne_'.$user->id.'"><td><input type="checkbox" id="choix" name="choix[]" value="'.$user->id.'"></td> <td><img src='.$urlImg.'mess_non_lu.png>';
            }
            if (($user->piece_jointe) <> ''){echo '<img src='.$urlImg.'piece_jointe.png></td>';}else{echo '</td>';}
     
                echo '<td>le '.dateFr($user->date_mess).'</td>';
                echo '<td>à '.nl2br(htmlspecialchars(ucfirst($user->prenom))). ' '.nl2br(htmlspecialchars(ucfirst($user->nom))).'</td>';
                echo '<td colspan="2"><a href="indv_env.php?id='.$user->id.'&session='.$user->session.'&lu='.$user->lu.'&token='.$user->token.'">';
                echo  nl2br(htmlspecialchars($user->titre_mess));
                echo '</a></td></tr>';
        }
                echo '</tbody></table><br>
                        <div class="mess_footer"><label><input onclick="CocheTout(this, \'choix[]\');" type="checkbox"><small>Tout sélectionner</small></label><br><br><input id="submit" type="submit" name="submit" value="Submit" onclick="ValidSuppression()" /></div></FORM></div>';

    le JS
    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
    function ValidSuppression() {
        $(document).ready(function() {
            $("#id_form_suppression").on('submit', 'form', function() {
     
                id = $('#choix:checked').val();
     
                $.ajax({
                    url: "suppr_test.php",
                    type: "post",
                    data: $('#choix:checked').serialize(),
                    //data: id,
                    success: function(data) {
                        $(".error").append(data).fadeOut(2000);
                        $("#ligne_"+id).fadeOut();
                    }
                });
            return false;
            });
        });
    }
    Requete SQL
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if(isset($_POST['choix']) AND !empty($_POST['choix'])){// suppression du/des message(s)
            $count = count($_POST['choix']);
                foreach($_POST['choix'] as $id) {
                    $suppr_env = "1";
                    $res = Cnx::connectCnx()->prepare('UPDATE  messagerie m SET suppr_env='.$suppr_env.' WHERE m.id='.$id.'');
                    $res->bindValue(':id', $id);
                    $res->bindParam(':suppr_env', $suppr_env);
                    $res->execute();
                }
                echo '<div class="apres_valid_mess">'. $count .' message(s) supprimé(s)</div>';
    }
    else {
        echo '<div class="new_mess_erreur"> Aucun message n\'a été selectionné</div>';
    }
    Quelqu'un a une idée svp?

  2. #2
    Membre chevronné Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Par défaut
    slt,

    l'id doit être unique dans la page

    ++

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 124
    Par défaut
    Ca y est, c'est modifié
    Mais ça ne change rien à mon problème

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 124
    Par défaut
    J'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    success: function(data) {
     $(".error").append(data).fadeOut(2000);
     $("#ligne_"+id).fadeOut();
    }
    // par
    success: function(data) {
      alert(data);
                    }
    et l'alerte est lancée a chaque fois.

    D'ou peut venir le problème?

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    data: $('#choix:checked').serialize() !!!

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 124
    Par défaut
    Heuuu, que veux tu dire?

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

Discussions similaires

  1. [WB17] Evènement "interrupteur sur tableau AJAX"
    Par EriCstoFF dans le forum WebDev
    Réponses: 4
    Dernier message: 18/03/2013, 09h40
  2. ajax et traitement sur tableau dans le code behind
    Par bobby51 dans le forum ASP.NET Ajax
    Réponses: 2
    Dernier message: 21/04/2010, 11h12
  3. [script.aculo.us] [Prototype] Effets AJAX sur un tableau
    Par metalcoyote dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 19/01/2007, 17h33
  4. loop sur tableau associatif
    Par Plawi dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 28/02/2005, 11h29
  5. Réponses: 25
    Dernier message: 16/07/2003, 20h41

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