[AJAX] Suppression donn�es mysql avec checkbox et passant par ajax
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:
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:
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:
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:
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.