IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Gestion champs dynamique


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 58
    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 : 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
    	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 : 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
    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 : 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
    		$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_";
    		}
    		}

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 58
    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 : 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
    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);
    				}
     
    			}});
    	}

Discussions similaires

  1. Gestion des champs dynamiques
    Par lahdeb dans le forum Oracle
    Réponses: 17
    Dernier message: 04/06/2015, 09h23
  2. [Joomla!] Gestion des champs dynamique
    Par youness135 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 13/08/2011, 13h59
  3. [CR] Taille champ dynamique
    Par reflex dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 06/08/2004, 08h43
  4. [struts] probleme champs dynamiques
    Par rocco dans le forum Struts 1
    Réponses: 28
    Dernier message: 07/06/2004, 21h26
  5. ajouter un champ dynamiquement à une instance de table
    Par maniack dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/02/2004, 23h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo