Label pour multiple ID (JS+jQuery+AJAX+PHP+MYSQL)
Bonjour,
je suis entrain de creer une base de données et j'ai créer un system de label comme celui de Gmail.
Pour expliquer vite fait j'ai 2 tables: produit, label et 1 table de corrélation: _prodlabel
J'arrive bien a gerer l'ajout d'un label sur un produit (fonction upLabels())mais cela ne marche pas bien pour ajouter un label sur de multiples produits (fonction upLabelsMulti()).
Pour savoir quel sont les produits sélectionnés j'utilise jQuery, puis j'appele la function upLabels() qui ajoute un label pour un produit.
Code:
1 2 3 4 5 6 7 8 9 10 11
|
function upLabelsMulti(url,action) {
if(confirm("Are you sure to "+action+" labels for the "+$("input.cbID:checked").length+" selected products"))
{
$("input.cbID:checked").each( function() {
upLabels(url+$(this).attr("value"))
})
//window.location.href=window.location.href; //refresh the web page
history.go(0); //Refresh the page keeping posted value
}
} |
La fonction qui ajoute un label a un produit (Je pense que le problème viens de la car je ne connais pas du tout AJAX et ne comprend pas très bien comment ca marche.
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
|
function upLabels(url)
{
if (url=="")
{
document.getElementById("addremlbl").innerHTML="";
return false;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("addremlbl").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","rlabels.php"+url,true);
xmlhttp.send();
return false;
} |
Et le code de rlabels.php qui permet un appel a MySQL.
les argument utilisés sont:
- prd_ID: ID du produit
lbl_ID: ID du label
action: valeur prenant a (add) ou d (delete)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
if($prd_ID>0 && $lbl_ID>0)
{
if($action=="a" && $role["a"])
{
$query="INSERT INTO _prodlabel VALUES ('$prd_ID','$lbl_ID');";
$res=mysql_query($query);
}
if($action=="d" && $role["d"])
{
$query="DELETE FROM _prodlabel WHERE PRD_ID = $prd_ID AND LBL_ID = $lbl_ID";
$res=mysql_query($query);
}
$action="u";
} |
Voila, si quelqu'un peux m'aider cela serait sympa!
De plus je pense qu'il y a possibilité d’améliorer l'appel a MySQL mais je ne mis connais pas trop!