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 : 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
	}
}
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
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 : 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";
}
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!