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 02/07/2009, 14h31   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 57
Points : 12
Points : 12
Par défaut Gestion champs dynamique

Bonjour à tous

voici mon problème :

Je dispose de deux fonctions :

une de vérification et une autre d'ajout de champs
la première va récupérer les infos concernant les données entrées dans le champ
la seconde permet d'ajouter automatiquement un champ.

le but :

La page contient les informations d'un bon de mouvement
elle a pour but également de servir de comparaison, je m'explique :

la personne qui receptionne le bon va regarder les infos qu'il y a dessus en l'occurence les numéros de série et comparer avec ceux qu'il a reçu.

il utilisera un lecteur de code barre.

Le document se présente ainsi :

la liste des numéros insérés lors de la création du bon et à coté un champ vierge qui s'auto ajoute au fur et à mesure.

Quand un produit est scanné le numéro de série et comparé avec ceux présent dans la bdd cela affiche à coté "OK"


Mes fonctions me permettent bien :

- de comparer le numéro de série scanné avec celui ou ceux dans la Bdd
un petit OK apparaît rien dans le cas contraire.
- D'ajouter un champ automatique au fur et à mesure.

les soucis :

- Si un produit scanné n'est pas présent permettre de l'ajouter
un bouton ajouter apparaît à coté de celui-ci sans pour autant arrêter l'ajout automatique des champs

- quand une touche du type ctrl ou maj etc... et appuyée un champ s'ajoute également...

- à l'état actuel si je scan deux fois le même produit il me check quand même
(ceci je pense que le pb vient de la requête)

Merci

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
	function verifNserie(id)
	{
	var id_bons = document.getElementById('id_bons').value;
		var span = id.substring(5);
		var nb = parseInt(span) + 1;
		var num = $F(id);
		var url = 'traitement_bons_stock2.php?action=verifNserie_bons';
			var params = 'num_serie='+num + ";" + id_bons;
			var req = new Ajax.Request(url,{encoding: 'UTF-8', method: 'post',parameters : params, onSuccess:
			function(xhr){
			var text = xhr.responseText;
	  			var tableau = text.split("_");
	  			if(tableau[1] == "OK")	{
	  				agent.call('','session_add_num_serie','session_add_num_serie_Callback',trim(tableau[0]));
					$("span"+span).update(tableau[2]+" "+tableau[3]+" ");
					$("span"+span).style.color='#000';
					if(span == ( $("nb_ligne_num_serie").value -1 ) ) {
	  					ajout_champs_nums($("nb_ligne_num_serie").value,0);
	  				}
 
	  			}
			}
		});
		ajout_champs_nums($("nb_ligne_num_serie").value,0);
	}
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
	function ajout_champs_nums(id,init){
		var tab_num_serie = $('tab_num_serie');
		var row = new Element("tr", null);
		var cell_titre = new Element("td", null);
		var txt_titre = document.createTextNode("Num Série "+id+" : ");
			cell_titre.appendChild(txt_titre);
		var cell_input = new Element("td", null);
		//var input_bons = new Element("input", {type:'hidden', name:'id_bons',id:'pompe'+id, value:'id_bons'});
		var input_input = new Element("input", {type:'text', name:'num_serie',id:'pompe'+id});
		input_input.onkeyup = function(){create_timer('verifNserie',500,this.id);};
			cell_input.appendChild(input_input);
		var cell_msg = new Element("td", null);
		var span_msg = new Element("span", null);
		span_msg.setAttribute('id', 'span'+id );
			cell_msg.appendChild(span_msg);
		// ajout du span pour les messages d'erreur
		var cell_msg_error = new Element("td", null);
		var span_msg = new Element("span", {className:'warning',id: 'msg'+id});
		cell_msg_error.appendChild(span_msg);
 
		row.appendChild(cell_titre);
		row.appendChild(cell_input);
		row.appendChild(cell_msg);
		row.appendChild(cell_msg_error);
		tab_num_serie.appendChild(row);
		if (init != 1 ) {
			$("nb_ligne_num_serie").value ++;
		}
		$("pompe"+id).focus();
	}
La partie traitement :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
		$tab_nums = explode(";",$num_serie);
 
		$query = " SELECT id_bons,num_serie,statut
					FROM psh_stock_ligne
					WHERE id_bons ='$tab_nums[1]'
					AND num_serie = '$tab_nums[0]'";
 
		$query = mssql_query($query)or die ('Erreur SQL!');
		$data = mssql_fetch_assoc($query);
 
		$ok ='OK';
		$num_serie = $data['num_serie'];
 
 
		$nb = count($tab_nums[1]);
 
		for($i=0;$i<$nb;$i++)	{
		if($data) {
			echo $num_serie."_OK_".$ok."_";
		} else {
			echo $num_serie."_KO_";
		}
		}
Nick_Rivers est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2009, 15h16   #2
Candidat au titre de Membre du Club
 
Inscription : janvier 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 57
Points : 12
Points : 12
Problème partiellement résolu :

me reste toujours le problème des touches qui génère un champ (touches spécifiques du type : ctrl, alt etc...)


Et le fait qu'un produit re-scanné soit encore contrôlé !

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
	var id = 0;
 
	function verifNserie(id)
	{
	var id_bons = document.getElementById('id_bons').value;
		var span = id.substring(5);
		var nb = parseInt(span) + 1;
		var num = $F(id);
		var url = 'traitement_bons_stock2.php?action=verifNserie_bons';
			var params = 'num_serie='+num + ";" + id_bons;
			var req = new Ajax.Request(url,{encoding: 'UTF-8', method: 'post',parameters : params, onSuccess:
			function(xhr){
			var text = xhr.responseText;
	  			var tableau = text.split("_");
	  			if(tableau[1] == "OK")	{
	  				agent.call('','session_add_num_serie','session_add_num_serie_Callback',trim(tableau[0]));
					$("span"+span).update(tableau[2]+" "+tableau[3]+" ");
					$("span"+span).style.color='#000';
					//if(span == ( $("nb_ligne_num_serie").value -1 ) ) {
	  					ajout_champs_nums($("nb_ligne_num_serie").value,0);
	  				//}
					//document.lavage_pompe.btn_valider.disabled = false;
	  			}
				else {
					 agent.call('','session_add_num_serie_Callback',trim(tableau[0]));
					$("span"+span).update(tableau[2]+" ");
					$("span"+span).style.color='#000';
					var btn_imp = new Element("input", {type:'button',value:'Ajouter'});
	  				btn_imp.onclick =
					function(){
						var nb_ligne_num_serie = $("tab_num_serie").rows.length;
						var pompe = '';
						for(i=1;i<=nb_ligne_num_serie;i++)	{
							var num_serie = $("pompe"+i).value;
							location.replace("traitement_bons_stock2.php?action=ajouter_numserie&num_serie="+num_serie+"&id_bons="+id_bons)};
	  						}
					$("span"+span).appendChild(btn_imp);
					ajout_champs_nums($("nb_ligne_num_serie").value,0);
				}
 
			}});
	}
Nick_Rivers 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 +1. Il est actuellement 06h01.


 
 
 
 
Partenaires

Hébergement Web