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.