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); }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
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(); }
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_"; } }
Partager