Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire Cours JavaScript, 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 (permalink)
Membre à l'essai
 
Date d'inscription: janvier 2007
Messages: 43
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 :
	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 :
	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 :
		$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
Vieux 03/07/2009, 15h16   #2 (permalink)
Membre à l'essai
 
Date d'inscription: janvier 2007
Messages: 43
Par défaut

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 :
	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
NEWS JAVASCRIPTF.A.Q JSTUTORIELS JSSOURCES JSLIVRES JS

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 05h00.


Vos questions techniques : forum d'entraide JavaScript - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.