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

Signaler
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015
-
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015
-
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

Messages postés
30356
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 novembre 2020
338
Quel est le rapport entre le code DONNE qui insert des données dans la BDD.... et l'affichage sur ta page ??


Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015

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.
Messages postés
30356
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 novembre 2020
338
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 ????!!
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015

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.
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015

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.
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015

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