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:
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>";
$row->mailing_id correspondant bien sûr à l'id de l'élément dans la base de donnée.

Une fois les checkbox sélectionnée, je clique sur un bouton qui lance le script javascript (js_fct_confirm_checkbox_delete):
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')\">";
site_mailing -> table: nom de la table mysql
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:
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);
 
	}
 
}
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.
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...

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());
Si quelqu'un pouvait me sortir de ce mauvais pas, cela me ferait très plaisir.
Merci beaucoup.