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.
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 } }
Et le code de rlabels.php qui permet un appel a MySQL.
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 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; }
les argument utilisés sont:
- prd_ID: ID du produit
lbl_ID: ID du label
action: valeur prenant a (add) ou d (delete)
Voila, si quelqu'un peux m'aider cela serait sympa!
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 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"; }
De plus je pense qu'il y a possibilité d’améliorer l'appel a MySQL mais je ne mis connais pas trop!
Partager