[Jscript+AJAX] input.val() résultat incohérant

Résolu
EnguerrandP
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015
- Modifié par EnguerrandP le 30/04/2014 à 15:13
EnguerrandP
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015
- 5 mai 2014 à 09:59
Bonjour,
Voila mon code :
  if(VI_PrimKey = " ")
  {
   var id_PrimKey =" ";
   if((VI_TimeSpent != "")&&(VS_Request != ""))
   {
    //Insert la ligne actuelle dans la base de données
    $.ajax
    ({
     type: 'POST',
     data:
      {
       id_Jour : idJour, 
       id_Worker : idWorker,
       V_I_Description : VI_Description,
       V_S_Request : VS_Request,
       V_I_TimeSpent : VI_TimeSpent
      },
     async: false,
     url:'Insert_Line_BDD_Daily_Timer.ajx.php', 
     success:function(data) {id_PrimKey = data;},
     error: function(error){alert("Erreur : " + error);}
    });
    alert(ID_I_PrimKey);
    alert(id_PrimKey);
    $(ID_I_PrimKey).val('');
    $(ID_I_PrimKey).val(id_PrimKey);
    alert(id_PrimKey);
    idNumLine++;


Lorsque j'appuis une fois sur "new" ma fonction me crée bien une nouvelle ligne (1) au bon endroit et avec la bonne valeur dans mon input.
Mais lorsque je rappuie sur le boutton new mes alert me donne les bon résultat MAIS dans le nouvel input il me met la Clef Primaire précédente, de plus le bouton new n'est pas placer au bon endroit a la place de se trouver sur la nouvelle ligne (2) il est sur la ligne (1).

Moi je n'y comprend rien ,quequ'un comprend se problème ?

Merci et que le café soit avec vous.

3 réponses

jordane45
Messages postés
35791
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
358
30 avril 2014 à 15:17
Quel est le rapport entre le code DONNE qui insert des données dans la BDD.... et l'affichage sur ta page ??


0
EnguerrandP
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015
1
30 avril 2014 à 15:23
Si la valeur de l'input Prim_Key est incorrect la fonction update ne fonctionnera pas correctement car les données seront sauvegarder au mauvaise endroit.
0
jordane45
Messages postés
35791
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
358
30 avril 2014 à 15:28
Sauf que dans l'explication ( très peu clair au passage) que tu nous donnes.. tu nous parles d'INPUT n'ayant pas la bonne valeur .. de bouton NEW que ne serait pas au bon endroit... Hors... le code que tu nous montres il fait quoi ?... IL FAIT UN INSERT DANS LA BDD .. il ne fait pas d'affichage !
Qui plus est ... si tes ALERT sont bons.. le souci ne vient donc pas de là ... non ????!!
0
EnguerrandP
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015
1
Modifié par EnguerrandP le 30/04/2014 à 16:10
Voila le code de toute la fonction :
$('.InsertLine').click(function Insert_line()
 { 
 
  var Line ="#Row2_" + idJour+'_'+ idWorker +'_'+"0";
  var N_Line ="Row2_" + idJour+'_'+ idWorker;
 
  var ID_B_TNewLine = "#TNewLine_" + idJour+'_'+ idWorker+'_'+ idNumLine;
  var ID_B_TDeleteLine = "#TDeleteLine_" + idJour+'_'+ idWorker+'_'+ idNumLine;
  var ID_I_Date = "#TDate_" + idJour+'_'+ idWorker+'_'+ idNumLine ;
  var ID_S_Request = "#TSRequest_"+ idJour+'_'+ idWorker+'_'+ idNumLine;
  var ID_I_Time = "#TTime_" + idJour+'_'+ idWorker+'_'+ idNumLine ;
  var ID_TA_Description = "#TTADescription_" + idJour+'_'+ idWorker+'_'+ idNumLine ;
  var ID_I_Worker = "#TIWorker_" + idJour+'_'+ idWorker+'_'+ idNumLine;
  var ID_I_PrimKey = "#TIPrimKey_" + idJour+'_'+ idWorker+'_'+ idNumLine;
 
  var N_B_TNewLine = "TNewLine_" + idJour+'_'+ idWorker;
  var N_B_TDeleteLine = "TDeleteLine_" + idJour+'_'+ idWorker;
  var N_I_Date = "TDate_" + idJour+'_'+ idWorker ;
  var N_S_Request = "TSRequest_" + idJour+'_'+ idWorker;
  var N_I_Time = "TTime_" + idJour+'_'+ idWorker ;
  var N_TA_Description = "TTADescription_" + idJour+'_'+ idWorker ;
  var N_I_Worker = "TIWorker_" + idJour+'_'+ idWorker;
  var N_I_PrimKey = "TIPrimKey_" + idJour+'_'+ idWorker;
 
  var VI_Description = $(ID_TA_Description).val();
  var VS_Request = $(ID_S_Request).val();
  var VI_TimeSpent = $(ID_I_Time).val();
  var VI_PrimKey = $(ID_I_PrimKey).val();
 
  if(VI_PrimKey = " ")
  {
   var id_PrimKey =" ";
   if((VI_TimeSpent != "")&&(VS_Request != ""))
   {
    //Insert la ligne actuelle dans la base de données
    $.ajax
    ({
     type: 'POST',
     data:
      {
       id_Jour : idJour, 
       id_Worker : idWorker,
       V_I_Description : VI_Description,
       V_S_Request : VS_Request,
       V_I_TimeSpent : VI_TimeSpent
      },
     async: false,
     url:'Insert_Line_BDD_Daily_Timer.ajx.php', 
     success:function(data) {id_PrimKey = data;},
     error: function(error){alert("Erreur : " + error);}
    });
    $(ID_I_PrimKey).val(id_PrimKey);
    idNumLine++;
  
    // Clone line
    newLine = $(Line).clone(true);
    $(newLine).attr('id', N_Line +'_'+ idNumLine);  
    newLine.insertAfter("#Row1_" + idJour+'_'+ idWorker); 
  
    // Modify object id
    $('.InsertLine').attr("style", "visibility: hidden");
    $(ID_B_TNewLine).attr('id', N_B_TNewLine +'_'+ idNumLine).attr("style", "visibility: visible"); 
    $(ID_B_TDeleteLine).attr('id', N_B_TDeleteLine +'_'+ idNumLine);
    $(ID_I_Date).attr('id', N_I_Date +'_'+ idNumLine);    
    $(ID_S_Request).attr('id', N_S_Request +'_'+ idNumLine);   
    $(ID_I_Time).attr('id', N_I_Time +'_'+ idNumLine).val('');   
    $(ID_TA_Description).attr('id', N_TA_Description +'_'+ idNumLine);    
    $(ID_I_Worker).attr('id', N_I_Worker +'_'+ idNumLine); 
    $(ID_I_PrimKey).attr('id', N_I_PrimKey +'_'+ idNumLine).val('');      
   }
  }
  else
  {
   idNumLine++;
  
   // Clone line
   newLine = $(Line).clone(true);
   $(newLine).attr('id', N_Line +'_'+ idNumLine);  
   newLine.insertAfter("#Row1_" + idJour+'_'+ idWorker); 
  
   // Modify object id
   $('.InsertLine').attr("style", "visibility: hidden");
   $(ID_B_TNewLine).attr('id', N_B_TNewLine +'_'+ idNumLine).attr("style", "visibility: visible"); 
   $(ID_B_TDeleteLine).attr('id', N_B_TDeleteLine +'_'+ idNumLine);
   $(ID_I_Date).attr('id', N_I_Date +'_'+ idNumLine);    
   $(ID_S_Request).attr('id', N_S_Request +'_'+ idNumLine);   
   $(ID_I_Time).attr('id', N_I_Time +'_'+ idNumLine).val('');   
   $(ID_TA_Description).attr('id', N_TA_Description +'_'+ idNumLine);    
   $(ID_I_Worker).attr('id', N_I_Worker +'_'+ idNumLine); 
   $(ID_I_PrimKey).attr('id', N_I_PrimKey +'_'+ idNumLine).val('');
  }
 });


Le bouton new et de la class InsertLine
et j'ai écrit :
$('.InsertLine').attr("style", "visibility: hidden");

qui masque toute la class InsertLine
puis:
$(ID_B_TNewLine).attr('id', N_B_TNewLine +'_'+ idNumLine).attr("style", "visibility: visible");

Qui rend visible le bouton new de la dernière ligne crée.
Je ne voit pas pourquoi sa marche une fois et que les autre fois sa met le bouton new dans la ligne précédente.

et pour la valeur dans l'input j'ai mit :
$(ID_I_PrimKey).val(id_PrimKey);
    idNumLine++;

donc il doit mettre la dernière valeur de la clef primaire dans l'input puis incrémenter mon nombre de ligne.
0
EnguerrandP
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015
1
5 mai 2014 à 09:45
Bonjour,
Après d'autre test j'ai vue qu'il y avait plus d'anomalie que citer si dessus.
Normalement avec se code :
	$('.InsertLine').click(function Insert_line()
	{	
	  	// Variable pour le clonage
		var Line ="#Row2_" + idJour+'_'+ idWorker +'_'+"0";
		var N_Line ="Row2_" + idJour+'_'+ idWorker;
	
		var ID_B_TNewLine = "#TNewLine_" + idJour+'_'+ idWorker+'_'+ idNumLine;
		var ID_B_TDeleteLine = "#TDeleteLine_" + idJour+'_'+ idWorker+'_'+ idNumLine;
		var ID_I_Date = "#TDate_" + idJour+'_'+ idWorker+'_'+ idNumLine ;
		var ID_S_Request = "#TSRequest_"+ idJour+'_'+ idWorker+'_'+ idNumLine;
		var ID_I_Time = "#TTime_" + idJour+'_'+ idWorker+'_'+ idNumLine ;
		var ID_TA_Description = "#TTADescription_" + idJour+'_'+ idWorker+'_'+ idNumLine ;
		var ID_I_Worker = "#TIWorker_" + idJour+'_'+ idWorker+'_'+ idNumLine;
		var ID_I_PrimKey = "#TIPrimKey_" + idJour+'_'+ idWorker+'_'+ idNumLine;
	
		var N_B_TNewLine = "TNewLine_" + idJour+'_'+ idWorker;
		var N_B_TDeleteLine = "TDeleteLine_" + idJour+'_'+ idWorker;
		var N_I_Date = "TDate_" + idJour+'_'+ idWorker ;
		var N_S_Request = "TSRequest_" + idJour+'_'+ idWorker;
		var N_I_Time = "TTime_" + idJour+'_'+ idWorker ;
		var N_TA_Description = "TTADescription_" + idJour+'_'+ idWorker ;
		var N_I_Worker = "TIWorker_" + idJour+'_'+ idWorker;
		var N_I_PrimKey = "TIPrimKey_" + idJour+'_'+ idWorker;
	
		var VI_Description = $(ID_TA_Description).val();
		var VS_Request = $(ID_S_Request).val();
		var VI_TimeSpent = $(ID_I_Time).val();
		var id_PrimKey =" ";
		
		if(VI_PrimKey = " ")
		{
			var id_PrimKey =" ";
			if((VI_TimeSpent != "")&&(VS_Request != ""))
			{		
				idNumLine++;
		
				// Clone line
				newLine = $(Line).clone(true);
				$(newLine).attr('id', N_Line +'_'+ idNumLine);		
				newLine.insertAfter("#Row1_" + idJour+'_'+ idWorker);	
		
				// Modify object id
				$('.InsertLine').attr("style", "visibility: hidden");
				$(ID_B_TNewLine).attr('id', N_B_TNewLine +'_'+ idNumLine).attr("style", "visibility: visible");	
				$(ID_B_TDeleteLine).attr('id', N_B_TDeleteLine +'_'+ idNumLine);
				$(ID_I_Date).attr('id', N_I_Date +'_'+ idNumLine);				
				$(ID_S_Request).attr('id', N_S_Request +'_'+ idNumLine);			
				$(ID_I_Time).attr('id', N_I_Time +'_'+ idNumLine).val('');			
				$(ID_TA_Description).attr('id', N_TA_Description +'_'+ idNumLine);				
				$(ID_I_Worker).attr('id', N_I_Worker +'_'+ idNumLine);
				$(ID_I_PrimKey).attr('id', N_I_PrimKey +'_'+ idNumLine).val('');
			}
		}

	});

}


Je doit tester si j'ai choisit un request, entrée une durée de travaille.
Puis copier la ligne la placer après la ligne Row1_,la classe insertline et masquer, on rend visible le bouton new de la copie, puis on vider la copie des informations de la ligne précédente.

La je n'ai pas du tout se fonctionnement.
J'ai lors de la première copie le fonctionnement sus mentionner mais lors des copie suivante j'ai ceci:
le test puis, copie de le ligne, la copie se place sous la ligne Row1_ jusque la tout va bien, puis le bouton new reste dans la premiére copie, l'input time de la nouvelle copie n'est pas vider mais l'input de la première copie oui.
0
EnguerrandP
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015
1
5 mai 2014 à 09:59
Bonjour j'ai la réponse:
Ici :
		
	$('.InsertLine').click(function Insert_line()
	{	
	
		var Line ="#Row2_" + idJour+'_'+ idWorker +'_'+"0";

a la place de
var Line ="#Row2_" + idJour+'_'+ idWorker +'_'+"0";

il fallait mettre :
var Line ="#Row2_" + idJour+'_'+ idWorker +'_'+idNumLine;


Merci pour votre aide
0