Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/07/2011, 10h32   #1
Membre habitué
 
Inscription : juin 2003
Messages : 223
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : juin 2003
Messages : 223
Points : 108
Points : 108
Par défaut 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!
elraton est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 17h10   #2
Membre habitué
 
Inscription : juin 2003
Messages : 223
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : juin 2003
Messages : 223
Points : 108
Points : 108
Toujours le meme probleme, j'ai changé le temps de réponse d'ajax en xmlhttp.status==2000 ce qui me permet d'attendre 2s pour executer toute les instructions mais visiblement ce n'est pas non plus la bonne solution.
elraton est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 19h45   #3
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 774
Points : 4 774
Citation:
Envoyé par elraton Voir le message
... j'ai changé le temps de réponse d'ajax en xmlhttp.status==2000 ce qui me permet d'attendre 2s...
je pensais que c'était le code de la réponse du serveur.

Un truc qui devrait t'intérreser Les meilleurs cours et tutoriels AJAX

et t'en qu'a utiliser jQuery autant l'utiliser pour ta requête Ajax, http://api.jquery.com/jQuery.ajax/, et le pour le reste.
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h17.


 
 
 
 
Partenaires

Hébergement Web