Bonsoir � tous,
d�butant dans le monde d'Ajax,
je souhaiterai supprimer une s�rie de mail dans une base de donn�e dont on aurait ch�ck� la checkbox au pr�alable.
Actuellement j'ai un une liste de mail qui sont affich�s, gr�ce � une connexion � la base de donn�e de mysql par Php.
Devant chaque mail, j'ai ajout� une checkbox afin de pouvoir supprimer une s�rie de mail et pas un � la fois.
Voici le code php pour afficher la checkbox:
$row->mailing_id correspondant bien s�r � l'id de l'�l�ment dans la base de donn�e.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 // CHECKBOX echo "<td class=\"empty_td\"><input type=\"checkbox\" name=\"erase[ ]\" value=\"".$row->mailing_id."\"></td>";
Une fois les checkbox s�lectionn�e, je clique sur un bouton qui lance le script javascript (js_fct_confirm_checkbox_delete):
site_mailing -> table: nom de la table mysql
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 <a href=\"javascript:js_fct_confirm_checkbox_delete('site_mailing', 'mailing_id','form_checkbox','erase','".$mailing_checkbox_confirm_delete."', 'viewmailing_3_3_0.html')\">";
mailing_id -> champ: champ de la table mysql
form_checkbox -> Nom du formulaire
erase -> nom du tableau contenant les id
mailing_checkbox_confirm_delete -> message: message � afficher pour confirmation de la suppression
viewmailing_3_3_0.html ->page: page � recharger ensuite
Jusque l� tout fonctionne.
Une fois dans le fichier javascript, je fais ceci:
Et c'est logiquement ci-dessus que j'ai un probl�me, puisque, il arrive � me supprimer seulement le 1er checkbox s�lectionn� mais pas les suivants.
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
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 /* FUNCTION de chargement de XHR */ function getXhr() { var xhr = null; if(window.XMLHttpRequest) // Firefox et autres { xhr = new XMLHttpRequest(); } else if(window.ActiveXObject){ // Internet Explorer try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr = false; } return xhr; } // SUPPRIME une liste d'utilisateur en fonction du checkbox function js_fct_confirm_checkbox_delete(table, champ, form, name, message, page) { // VERIFIE si au moins un checkbox est TRUE // RECUPERATION des checkbox TRUE var NbrCheckbox = document.forms[form].elements.length; var CheckboxCheckedArray = new Array(); // Contient le numéro des checkboxs qui sont checkée parce que sinon on prend dans l'ordre d'affichage var SendAfter; for ( var i=0; i<NbrCheckbox; i++) // Boucle qui lit chaque checkbox de ma page { // CHEMIN pour atteindre les checkbox dans le formulaire 'form' comptant un nombre 'cpt' de checkbox element = document.forms[form].elements[i]; // CONDITION pour voir si checké ou pas if (element.checked == true) { // SI oui ajoute la valeur du checkbox au tableau CheckboxCheckedArray.push(i); // Ajoute la "coordonnée" de la Checkbox checkée } } // TEST si au moins une checkbox est cochée ET demande confirmation de la suppression if ( (CheckboxCheckedArray.length!=0) && (confirm(message)) ) { var data = null; var filename = "act/act_checkbox_delete.php"; // FICHIER CIBLE var xhr = getXhr(); // TEST for (j=0; j<CheckboxCheckedArray.length; j++) { // Ici on va voir comment faire du post xhr.open("POST",filename,true); // ne pas oublier ça pour le post xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // CHEMIN pour atteindre les checkbox dans le formulaire 'form' comptant un nombre 'cpt' de checkbox element = document.forms[form].elements[CheckboxCheckedArray[j]]; // CONCATENATION des données dans la variable data data = "table="+table+"&champ="+champ+"&id="+element.value; // ENVOI xhr.send(data); } // RECharge la page location.replace(page); } }
C'est sans doute mon syst�me de boucle qui n'est pas tr�s au point...
Ou peut-�tre dans le code php mais il me semble qu'il est correcte...
Si quelqu'un pouvait me sortir de ce mauvais pas, cela me ferait tr�s plaisir.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 // CONNEXION à la base de donnée $sql = "DELETE FROM ".utf8_decode($_POST['table'])." WHERE ".utf8_decode($_POST['champ'])." = '".utf8_decode($_POST['id'])."';"; $result = mysql_query($sql) or die("ERREUR: La requête n'est pas valide: ".mysql_error());
Merci beaucoup.
Partager