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 JS
le tableau de données
Requete SQL
Quelqu'un a une idée svp?
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 JS
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;
});
});
}
le tableau de données
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>';
Requete SQL
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?