[JQuery+AJAX] Gestion de la sauvegarde des lignes d'un tableau

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,
J'essaye de crée un système pour sauvegarder une ligne de mon tableau dans la
BDD (Insert into et Update).
Je croit que le problème vient du script et non de mes fichier ajax.
Car le fichier Insert_line_daily_timer.ajax.php fonctionne, lorsque je le test.

Mais la j'ai seulement la création des ligne dans le tableau html il ne se passe rien du coter de la BDD.

Script
function CreateDiv(idJour,idWorker,nameWorker,dates)
{
	
	var idNumLine = 0;
	
	//Je crée un nouveau div pour le tableau
    $("#Zone_Tab").append("<div name='MesTBL' id='myDiv_" + "TJour_" + idJour + '_' + idWorker + "'></div>");
	//On crée un tableau pour le jour X 
	$("#myDiv_" +"TJour_" + idJour+'_'+ idWorker).append('<table border="2" id="TJour_' + idJour+'_'+ idWorker + '"></table>').css("border","2px inset #000000");
	
	// Line Title
	$("#TJour_" + idJour+'_'+ idWorker).append('<tr align="center" id="Row1_' + idJour+'_'+ idWorker + '"></tr>'); 
	//Title New Line
	$("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" width="80px">Option Line</td>');
	//On crée un Input pour la date
	$("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" width="100px">Date</td>');
	//Title Request
	$("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" width="105px">Request</td>');
	//Title Times (h)
	$("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" width="55px">Time (h)</td>');
	//Title Description
	$("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" width="330px">Description</td>');
	//Title Worker
	$("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" width="175px">Worker</td>');
	//Title Worker
	$("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" style="display:none"></td>');
	
	//Ajoute une ligne au tableau du jour
	$("#TJour_" + idJour+'_'+ idWorker).append('<tr align="center" onmouseout=function Save_Line() id="Row2_' + idJour+'_'+ idWorker+'_'+ idNumLine + '"></tr>'); 
	//On ajoute les options
	$("#Row2_" + idJour+'_'+ idWorker+'_'+ idNumLine).append('<td bgcolor="#FFFFFF"><input type="button" value="New" style="width:100%" class="InsertLine" id="TNewLine_' + idJour+'_'+ idWorker +'_'+ idNumLine + '"></input><br /><input type="button" value="Delete" style="width:100%" class="Delete" onclick="DeleteLine(this);" id="TDeleteLine_' + idJour+'_'+ idWorker +'_'+ idNumLine + '"></input></td>');
	//On crée un Input pour la date
	$("#Row2_" + idJour+'_'+ idWorker+'_'+ idNumLine).append('<td bgcolor="#FFFFFF"><input type="date" style="width: 100%;" id="TDate_' + idJour+'_'+ idWorker +'_'+ idNumLine + '"></input></td>');
	//On crée un Select pour la tache
	$.ajax
	({
		type: 'POST',
		data: {id_Jour : idJour+'_', id_Worker : idWorker+'_', id_NumLine : idNumLine},
		async: false,
		url:'TSRequest_Daily_Timer.ajx.php', 
		success:function(data) { $("#Row2_" + idJour+'_'+ idWorker+'_'+ idNumLine).append('<td bgcolor="#FFFFFF">'+data+'</td>');},
		error: function(error){alert("Erreur : " + error);}
	});
	//On crée un Input pour le Temps
	$("#Row2_" + idJour+'_'+ idWorker+'_'+ idNumLine).append('<td bgcolor="#FFFFFF"><input type="text" value="" style="width: 100%;" id="TTime_' + idJour+'_'+ idWorker+'_'+ idNumLine + '"></input></td>');
	//On crée une Zone de texte pour la description
	$("#Row2_" + idJour+'_'+ idWorker+'_'+ idNumLine).append('<td bgcolor="#FFFFFF"><textarea rows="2" cols="25" style="width: 100%;resize: none;" id="TTADescription_' + idJour+'_'+ idWorker +'_'+ idNumLine +'"></textarea></td>');
	//On crée un Input pour l employer
	$("#Row2_" + idJour+'_'+ idWorker+'_'+ idNumLine).append('<td bgcolor="#FFFFFF"><input type="text" style="width: 100%;" id="TIWorker_' + idJour+'_'+ idWorker +'_'+ idNumLine + '"></input></td>');
	//On crée un Input pour la clef primaire
	$("#Row2_" + idJour+'_'+ idWorker +'_'+ idNumLine).append('<td bgcolor="#FFFFFF"><input type="text" style="width: 100%;" value="" readonly="readonly" id="TIPrimKey_' + idJour+'_'+ idWorker +'_'+ idNumLine + '"></input></td>')
	
	// On met le nom de l'employer sélectionner dans l'input TSWorker+idJour+idWorker
	$("#TIWorker_"+idJour+'_'+ idWorker +'_'+ idNumLine).val(nameWorker);
  
	// On met la valeur de la date sélectionner dans l'input TDate+idJour+idWorker
	var dateText = $.datepick.formatDate(dates[0]);
	$("#TDate_"+idJour+'_'+ idWorker +'_'+ idNumLine).val(dateText); 

	//Create line witch the database + filter(Day/Worker) value
	//$.ajax
	//({
	//	type: 'POST',
	//	data: {id_Jour : idJour+'_', id_Worker : idWorker+'_', id_NumLine : idNumLine},
	//	async: false,
	//	url:'Array_Create_Line_Daily_Timer.ajx.php', 
	//	success:function(data) { $("#Row2_" + idJour+'_'+ idWorker +'_'+ idNumLine).append('<td bgcolor="#FFFFFF">'+data+'</td>');},
	//	error: function(error){alert("Erreur : " + error);}
	//});	
	
	// 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 VI_PrimKey = $(ID_I_PrimKey).val();
	var id_PrimKey =" ";	
		
	$('.InsertLine').click(function Insert_line()
	{	
		Save_Line();
		
		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: visible");
		$('.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('');				
	});

	function Save_Line()
	{
		if($(VI_TimeSpent) != ' ')
		{
			if($(VI_PrimKey) != ' ')
			{		
				$.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:'Update_Line_BDD_Daily_Timer.ajx.php', 
					success:function(data) {},
					error: function(error){alert("Erreur : " + error);}
				});
			}
			else
			{
				//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);
			}
		}
	}

	function DeleteLine(line) 
	{
		var Del_PrimKey = $(ID_I_PrimKey).val()
	
		$.ajax
		({
			type: 'POST',
			data: 
				{
					Delete_PrimKey : Del_PrimKey, 
				},
			async: false,
			url:'Delete_Line_BDD_Daily_Timer.ajx.php', 
			success:function(data) {},
			error: function(error){alert("Erreur : " + error);}
		});		
		line.parentNode.removeChild(line);
	}
}


Ajax insert :
<?php
	include('connexion.php');
	$idJour = isset($_POST['id_Jour'])?$_POST['id_Jour']:'';  // !
	$idWorker = isset($_POST['id_Worker'])?$_POST['id_Worker']:'';  // !
	$VI_Description = isset($_POST['V_I_Description'])?$_POST['V_I_Description']:'';  // !
	$VS_Request = isset($_POST['V_S_Request'])?$_POST['V_S_Request']:'';  // !
	$VI_TimeSpent = isset($_POST['V_I_TimeSpent'])?$_POST['V_I_TimeSpent']:'';  // !
	
	$sql = "INSERT INTO caetbl_timetracking (
												'SimRequest',
												'Description',
												'date',
												'time spent',
												'Worker'
											) 
			VALUES (
						'$VS_Request',
						'$VI_Description',
						'$idJour',
						'$VI_TimeSpent',
						'$idWorker'
					)";
	
	mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());	
	
	$sql2 = "SELECT max(caetbl_timetracking.ID) as maxID
            FROM caetbl_timetracking" ;
	$resultat = mysql_query($sql2)or die("Requete pas comprise");
	
	//pour manipuler le resultat d'une requête il faut le convertir en Array par exemple :
	$row = mysql_fetch_array($resultat);
	
	// Lecture de la colonne maxID de la première ligne ( ligne 0) 
	echo $row[0];
	?>	


Ajax Update
<?php
	include('connexion.php');
	$idJour = isset($_POST['id_Jour'])?$_POST['id_Jour']:'';  // !
	$idWorker = isset($_POST['id_Worker'])?$_POST['id_Worker']:'';  // !
	$VI_Description = isset($_POST['V_I_Description'])?$_POST['V_I_Description']:'';  // !
	$VS_Request = isset($_POST['V_S_Request'])?$_POST['V_S_Request']:'';  // !
	$VI_TimeSpent = isset($_POST['V_I_TimeSpent'])?$_POST['V_I_TimeSpent']:'';  // !
	
	$sql = "UPDATE caetbl_timetracking 
			SET (
					'SimRequest' = '$VS_Request',
					'Description'='$VI_Description',
					'date'='$idJour',
					'time spent'='$VI_TimeSpent',
					'Worker'='$idWorker'
				)";
	
	mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());	
	?>	


Ajax delete
<?php
	include('connexion.php');
	$Del_PrimKey = isset($_POST['Delete_PrimKey'])?$_POST['Delete_PrimKey']:'';  // !
	
	$sql = "DELETE FROM 'caetbl_timetracking' WHERE 'caetbl_timetracking'.'ID' = $Del_PrimKey";
	
	mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());	
	?>	

Merci

8 réponses

Messages postés
29931
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 novembre 2020
338
Avec FireBug, tu peux visualiser ce qui se passe lors de l'appel à ta page AJAX et regarder ce qu'elle te retourne comme info.

Tu vas dans l'onglet CONSOLE
Tu cliques sur le (-) qui se trouve devant la ligne de ton fichier AJAX

Puis tu regardes ce qu'il y a dans les différents onglets...


NB: Il faut bien sur que tu es activé le debogueur de Script...


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

Ok, je regarde sa.
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015

Lorsque je regarde dans console all j'ai sa :
POST http://localhost/Projet/CAE/Ressource_tests/%5bA...hase_Init_+_Switch/TSRequest_Daily_Timer.ajx.php

200 OK
50ms
jquery-1.11.0.js (ligne 9666)
SyntaxError: function statement requires a name


function


jquery-1.11.0.js (ligne 7759, col. 8)
POST http://localhost/Projet/CAE/Ressource_tests/%5bA...nit_+_Switch/Update_Line_BDD_Daily_Timer.ajx.php

200 OK
32ms
jquery-1.11.0.js (ligne 9666)
En-têtesPostRéponseHTML

Erreur SQL !UPDATE caetbl_timetracking
SET (
SimRequest = '',
Description='',
date='2014-04-30',
time_spent='',
Worker='3'
)
WHERE '' !='' AND
'' !='' <br />You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(
SimRequest = '',
Description='',
date='2014-04-30',
ti' at line 2

Avec :
Pour la fonction ajax :
	// 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 VI_PrimKey = $(ID_I_PrimKey).val();
	var id_PrimKey =" ";	
		
	$('.InsertLine').click(function Insert_line()
	{	
		if($(VI_TimeSpent) != ' ')
		{
			if($(VI_PrimKey) != ' ')
			{		
				$.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:'Update_Line_BDD_Daily_Timer.ajx.php', 
					success:function(data) {},
					error: function(error){alert("Erreur : " + error);}
				});
			}
			else
			{
				//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: visible");
		$('.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('');				
	});


Et pour les fichier PHP:
Insert:
<?php
	include('connexion.php');
	$idJour = isset($_POST['id_Jour'])?$_POST['id_Jour']:'';  // !
	$idWorker = isset($_POST['id_Worker'])?$_POST['id_Worker']:'';  // !
	$VI_Description = isset($_POST['V_I_Description'])?$_POST['V_I_Description']:'';  // !
	$VS_Request = isset($_POST['V_S_Request'])?$_POST['V_S_Request']:'';  // !
	$VI_TimeSpent = isset($_POST['V_I_TimeSpent'])?$_POST['V_I_TimeSpent']:'';  // !
	
	$sql = "INSERT INTO caetbl_timetracking (
												'SimRequest',
												'Description',
												'date',
												'time_spent',
												'Worker'
											) 
			VALUES (
						'$VS_Request',
						'$VI_Description',
						'$idJour',
						'$VI_TimeSpent',
						'$idWorker'
					)";
	
	mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());	
	
	$sql2 = "SELECT max(caetbl_timetracking.ID) as maxID
            FROM caetbl_timetracking" ;
	$resultat = mysql_query($sql2)or die("Requete pas comprise");
	
	//pour manipuler le resultat d'une requête il faut le convertir en Array par exemple :
	$row = mysql_fetch_array($resultat);
	
	// Lecture de la colonne maxID de la première ligne ( ligne 0) 
	echo $row[0];
	?>	


update:
<?php
	include('connexion.php');
	$idJour = isset($_POST['id_Jour'])?$_POST['id_Jour']:'';  // !
	$idWorker = isset($_POST['id_Worker'])?$_POST['id_Worker']:'';  // !
	$VI_Description = isset($_POST['V_I_Description'])?$_POST['V_I_Description']:'';  // !
	$VS_Request = isset($_POST['V_S_Request'])?$_POST['V_S_Request']:'';  // !
	$VI_TimeSpent = isset($_POST['V_I_TimeSpent'])?$_POST['V_I_TimeSpent']:'';  // !
	
	$sql = "UPDATE caetbl_timetracking 
			SET (
					SimRequest = '$VS_Request',
					Description='$VI_Description',
					date='$idJour',
					time_spent='$VI_TimeSpent',
					Worker='$idWorker'
				)
			WHERE '$VS_Request' !='' AND
				  '$VI_TimeSpent' !='' ";
	
	mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());	
	?>	


D'après se que j'ai compris il y a un problème avec mes variable qui envoie les valeur du request, time spent.
car Firebug me les indique comme inéxistante.

Merci
Messages postés
29931
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 novembre 2020
338
Heu... avant cela... tu as déjà un souci avec ta requête d'UPDATE...

Erreur SQL !UPDATE caetbl_timetracking
SET (
SimRequest = '',
Description='',
date='2014-04-30',
time_spent='',
Worker='3'
)
WHERE '' !='' AND
'' !='' <br />You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(
SimRequest = '',
Description='',
date='2014-04-30',
ti' at line 2


Dans ta clause WHERE tu dois avoir des NOM_de_CHAMP ... pas des variables..
WHERE '$VS_Request' !='' 
AND     '$VI_TimeSpent' !='' ";

Ne peut pas marcher...

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

J'ai enlever le WHERE, mais j'ai toujours la problème:
Erreur SQL !UPDATE caetbl_timetracking
SET (
SimRequest = '',
Description='',
date='2014-04-09',
time_spent='',
Worker='3'
)<br />You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(
SimRequest = '',
Description='',
date='2014-04-09',
ti' at line 2
Pourtant se que je trouve avec mon moteur de recherche préférer me donne la même écriture.
Messages postés
29931
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 novembre 2020
338
pas de parenthèses..

http://dev.mysql.com/doc/refman/5.0/fr/update.html

UPDATE caetbl_timetracking 
   SET SimRequest = ''
         ,Description=''
         ,date='2014-04-09'
         ,time_spent=''
         ,Worker='3'

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

Merci sa a bien enlever le message d'erreur.
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015

Je ne sait pas pourquoi ni comment mes j'ai eu un update sur 9000 ligne de la ligne sélectionner se qui a effacer toute les donner de la table(par chance j'en est une copie intacte).
Messages postés
29931
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 novembre 2020
338
j'ai eu un update sur 9000 ligneS
Je croit que c'est parce que je n'est pas miS de WHERE
Ben Oui... en effet... Si tu ne mets pas de WHERE..il fait l'UPDATE sur toutes tes lignes de ta BDD..

Dans ton Where... tu dois utiliser des NOMS de champ et non des Variables.
Ce qui doit donner quelque chose du genre :
WHERE SimRequest !='' 
    AND  time_spent !=''
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015

Voila j'ai rajouter un Where fais un test est la sa na pas fais d'update mais ma table time tracking est passer de 8500 ligne a 17000.
Voila mon script :
	// 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 VI_PrimKey = $(ID_I_PrimKey).val();
	var id_PrimKey =" ";	
		
	$('.InsertLine').click(function Insert_line()
	{	
		if($(VI_TimeSpent) != ' ')
		{
			if($(VI_PrimKey) != ' ')
			{	
				var idU_PrimKey = VI_PrimKey;
				$.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,
							id_U_PrimKey :idU_PrimKey
						},
					async: false,
					url:'Update_Line_BDD_Daily_Timer.ajx.php', 
					success:function(data) {},
					error: function(error){alert("Erreur : " + error);}
				});
			}
			else
			{
				//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: visible");
		$('.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('');				
	});

	function Save_Line()
	{
		if($(VI_TimeSpent) != ' ')
		{
			if($(VI_PrimKey) != ' ')
			{		
				$.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:'Update_Line_BDD_Daily_Timer.ajx.php', 
					success:function(data) {},
					error: function(error){alert("Erreur : " + error);}
				});
			}
			else
			{
				//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);
			}
		}
	}


Et mon fichier update :
<?php
	include('connexion.php');
	$idJour = isset($_POST['id_Jour'])?$_POST['id_Jour']:'';  // !
	$idWorker = isset($_POST['id_Worker'])?$_POST['id_Worker']:'';  // !
	$VI_Description = isset($_POST['V_I_Description'])?$_POST['V_I_Description']:'';  // !
	$VS_Request = isset($_POST['V_S_Request'])?$_POST['V_S_Request']:'';  // !
	$VI_TimeSpent = isset($_POST['V_I_TimeSpent'])?$_POST['V_I_TimeSpent']:'';  // !
	$idU_PrimKey = isset($_POST['id_U_PrimKey'])?$_POST['id_U_PrimKey']:'';  // !
	$sql = "UPDATE caetbl_timetracking 
			SET 	SimRequest = '$VS_Request',
					Description='$VI_Description',
					date='$idJour',
					time_spent='$VI_TimeSpent',
					Worker='$idWorker'
			WHERE	caetbl_timetracking.ID='$idU_PrimKey'";
	
	mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());	
	?>	


Merci
Messages postés
29931
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 novembre 2020
338
$sql = "UPDATE caetbl_timetracking 
			SET 	SimRequest = '$VS_Request',
					Description='$VI_Description',
					date='$idJour',
					time_spent='$VI_TimeSpent',
					Worker='$idWorker'
			WHERE	caetbl_timetracking.ID='$idU_PrimKey'";
	


//-----------------------------------------------------------------------------------------// FAIS UN ECHO DE TA REQUETE :
//-----------------------------------------------------------------------------------------
echo "<br><b> REQUETE = </b><br>".$sql."<br>";


mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());	
	


Une fois le Echo de ta requête fait.... TESTE LA EN DIRECT dans ta BDD !


sa na pas fais d'update mais ma table time tracking est passer de 8500 ligne a 17000.
Ben... il semble que dans ce cas ça ait réalisé des INSERT et non des UPDATE ..
C'est donc que tes conditions ne sont pas bonnes...
if($(VI_TimeSpent) != ' ')
if($(VI_PrimKey) != ' ')

Que valent tes variables ?
Tu peux en faire des "ALERT" pour le savoir...
alert(($(VI_TimeSpent));
alert(($(VI_PrimKey));



Il faut vraiment que tu commences par faire ton DEBUG par toi même....

=> Utiliser des ALERT, CONSOLE.LOG sous javascript
des ECHO, PRINT_R ou VAR_DUMP sous PHP ..
=> Utiliser FIREBUG pour voir des éventuels messages d'erreur, Savoir ce que ton AJAX reçois/retourne comme valeurs ...
=> Examiner le code HTML généré pour voir si tes éléments HTML ont bien les bons ID..NAME..VALUE...STYLE ..etc...
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015

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

Pour etre sur que : insert et update soit juste je les et test avec Workbench.
Et elle, fonctionne
les voici :
use test;

insert into caetbl_timetracking (SimRequest
,Description
,date
,time_spent
,Worker)
values ('100FAE2001'
,'testInsert'
,'2014-04-30'
,'3'
,'103');

use test;

update caetbl_timetracking
set SimRequest='101FAE2001'
,Description='testupdate'
,date='2014-04-30'
,time_spent='3'
,Worker='103'
where SimRequest='100FAE2001'
and time_spent='3'
and ID='9034';

Se qui confirme mes doutes sur mes tests conditionnel qui sont a corriger.
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015

Bonjour,
J'ai trouver pourquoi mes tests conditionnelle ne marcher pas :
car il fallait mettre :
  if(VI_PrimKey = " ")
  {

   if((VI_TimeSpent != "")&&(VS_Request != ""))
   {

a la place de :
  if(VI_PrimKey = ' ')
  {

   if((VI_TimeSpent != ' ')&&(VS_Request != ' '))
   {


Donc :
Mon problème maintenant :
"J'essaye de crée un système pour sauvegarder une ligne de mon tableau dans la
BDD (Insert into et Update).
Je croit que le problème vient du script et non de mes fichier ajax.
Car le fichier Insert_line_daily_timer.ajax.php fonctionne, lorsque je le test. "

Voila le fonctionnement normale :
-On choisit un filtre
-Le tableau correspondant apparait
-Si on appuie sur new on test si il y a une clef primaire
si le request a était choisit et la durée entrée (si oui on insert une nouvelle ligne dans la BDD et dans le tableau HTML)
si non on ajoute une ligne au tableau HTML.
-Si on quitte la ligne on test si il y a une clef primaire si oui si le request !=" " et la durée entrée!="" on fais un update de la ligne dans la base de données, si non si le request !=" " et la durée entrée!="" on fais un insert dans la base de données.

Je pense que se fonctionnement doit être correct.

Voila mon script :
<script type="text/javascript">
$(function() 
{
   $('#inlineDatepick').datepick
   ({onSelect:
  function(dates)
     {
   // Creation des variables Date
      var dateText = $.datepick.formatDate(dates[0]);
         var dateArr = dateText.split("/");
   var mois=dateArr[1];
   switch(mois) 
   {
   case "Jan":
     var ArrMonth = "01";
   break;
   case "Feb":
     var ArrMonth = "02";
   break;
   case "Mar":
     var ArrMonth = "03";
   break;
   case "Apr":
     var ArrMonth = "04";
   break;
   case "May":
     var ArrMonth = "05";
   break;
   case "Jun":
     var ArrMonth = "06";
   break;
   case "Jul":
     var ArrMonth = "07";
   break;
   case "Aug":
     var ArrMonth = "08";
   break;
   case "Sep":
     var ArrMonth = "09";
   break;
   case "Oct":
     var ArrMonth = "10";
   break;
   case "Nov":
     var ArrMonth = "11";
   break;
   case "Dec":
     var ArrMonth = "12";
   break;
   }
         var IDfromDateText= dateArr[2] +"-"+ ArrMonth  +"-"+ dateArr[0];  
   
   // Creation des variables Worker
   var IDWorker= document.getElementById("TopWorker").value;
   var WorkerArw = IDWorker.split(" ");
   var IDfromWorker = WorkerArw[0] ;
   var NamefromWorker = WorkerArw[1]+" "+ WorkerArw[2];
   
   // Creation de la variable tableau Day/Worker
   var TDW = "#myDiv_TJour_"+IDfromDateText+'_'+IDfromWorker ;
   
   //Test si le tableau Day/Worker exist
   if ($(TDW).length > 0)
   {
    EraseDiv(TDW);
   }
  
    // L'element n'existe pas... je le crée ...
                CreateDiv(IDfromDateText,IDfromWorker,NamefromWorker,dates);

                // ...puis j'affiche le tableau
                ShowDiv(IDfromDateText,IDfromWorker,NamefromWorker);                           
     }
   });
});

function EraseDiv(TDW)
{
 $(TDW).remove()
}

function CreateDiv(idJour,idWorker,nameWorker,dates)
{
 
 var idNumLine = 0;
 
 //Je crée un nouveau div pour le tableau
    $("#Zone_Tab").append("<div name='MesTBL' id='myDiv_" + "TJour_" + idJour + '_' + idWorker + "'></div>");
 //On crée un tableau pour le jour X 
 $("#myDiv_" +"TJour_" + idJour+'_'+ idWorker).append('<table border="2" id="TJour_' + idJour+'_'+ idWorker + '"></table>').css("border","2px inset #000000");
 
 // Line Title
 $("#TJour_" + idJour+'_'+ idWorker).append('<tr align="center" id="Row1_' + idJour+'_'+ idWorker + '"></tr>'); 
 //Title New Line
 $("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" width="80px">Option Line</td>');
 //On crée un Input pour la date
 $("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" width="100px">Date</td>');
 //Title Request
 $("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" width="105px">Request</td>');
 //Title Times (h)
 $("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" width="55px">Time (h)</td>');
 //Title Description
 $("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" width="330px">Description</td>');
 //Title Worker
 $("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" width="175px">Worker</td>');
 //Title Worker
 $("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" style="display:none"></td>');
 
 //Ajoute une ligne au tableau du jour
 $("#TJour_" + idJour+'_'+ idWorker).append('<tr align="center" onmouseout="Save_Line()" id="Row2_' + idJour+'_'+ idWorker+'_'+ idNumLine + '"></tr>'); 
 //On ajoute les options
 $("#Row2_" + idJour+'_'+ idWorker+'_'+ idNumLine).append('<td bgcolor="#FFFFFF"><input type="button" value="New" style="width:100%" class="InsertLine" id="TNewLine_' + idJour+'_'+ idWorker +'_'+ idNumLine + '"></input><br /><input type="button" value="Delete" style="width:100%" class="Delete" onclick="DeleteLine(this);" id="TDeleteLine_' + idJour+'_'+ idWorker +'_'+ idNumLine + '"></input></td>');
 //On crée un Input pour la date
 $("#Row2_" + idJour+'_'+ idWorker+'_'+ idNumLine).append('<td bgcolor="#FFFFFF"><input type="date" style="width: 100%;" id="TDate_' + idJour+'_'+ idWorker +'_'+ idNumLine + '"></input></td>');
 //On crée un Select pour la tache
 $.ajax
 ({
  type: 'POST',
  data: {id_Jour : idJour+'_', id_Worker : idWorker+'_', id_NumLine : idNumLine},
  async: false,
  url:'TSRequest_Daily_Timer.ajx.php', 
  success:function(data) { $("#Row2_" + idJour+'_'+ idWorker+'_'+ idNumLine).append('<td bgcolor="#FFFFFF">'+data+'</td>');},
  error: function(error){alert("Erreur : " + error);}
 });
 //On crée un Input pour le Temps
 $("#Row2_" + idJour+'_'+ idWorker+'_'+ idNumLine).append('<td bgcolor="#FFFFFF"><input type="text" value="" style="width: 100%;" id="TTime_' + idJour+'_'+ idWorker+'_'+ idNumLine + '"></input></td>');
 //On crée une Zone de texte pour la description
 $("#Row2_" + idJour+'_'+ idWorker+'_'+ idNumLine).append('<td bgcolor="#FFFFFF"><textarea rows="2" cols="25" style="width: 100%;resize: none;" id="TTADescription_' + idJour+'_'+ idWorker +'_'+ idNumLine +'"></textarea></td>');
 //On crée un Input pour l employer
 $("#Row2_" + idJour+'_'+ idWorker+'_'+ idNumLine).append('<td bgcolor="#FFFFFF"><input type="text" style="width: 100%;" id="TIWorker_' + idJour+'_'+ idWorker +'_'+ idNumLine + '"></input></td>');
 //On crée un Input pour la clef primaire
 $("#Row2_" + idJour+'_'+ idWorker +'_'+ idNumLine).append('<td bgcolor="#FFFFFF"><input type="text" style="width: 100%;" value="" readonly="readonly" id="TIPrimKey_' + idJour+'_'+ idWorker +'_'+ idNumLine + '"></input></td>')
 
 // On met le nom de l'employer sélectionner dans l'input TSWorker+idJour+idWorker
 $("#TIWorker_"+idJour+'_'+ idWorker +'_'+ idNumLine).val(nameWorker);
  
 // On met la valeur de la date sélectionner dans l'input TDate+idJour+idWorker
 var dateText = $.datepick.formatDate(dates[0]);
 $("#TDate_"+idJour+'_'+ idWorker +'_'+ idNumLine).val(dateText); 

 //Create line witch the database + filter(Day/Worker) value
 //var JourSel = idJour ;
 //var WorkerSel = idWorker ;
 //$.ajax
 //({
 // type: 'POST',
 // data: 
 // {
 //  Jour_Sel : JourSel,
 //  Worker_Sel : WorkerSel,
 //  id_Jour : idJour+'_',
 //  id_Worker : idWorker+'_',
 //  id_NumLine : idNumLine
 // },
 // async: false,
 // url:'Array_Create_Line_Daily_Timer.ajx.php', 
 // success:function(data) {$("#TJour_" + idJour+'_'+ idWorker).append(data);},
 // error: function(error){alert("Erreur : " + error);}
 //}); 
 
 // Variable pour le clonage
 
  
 $('.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();
  var id_PrimKey =" ";
 
  if(VI_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: visible");
    $('.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: visible");
   $('.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('');
  }
 });

 function Save_Line()
 {
  var VI_Description = $("#TTADescription_" + idJour+'_'+ idWorker+'_'+ idNumLine).val();
  var VS_Request = $("#TSRequest_"+ idJour+'_'+ idWorker+'_'+ idNumLine).val();
  var VI_TimeSpent = $("#TTime_" + idJour+'_'+ idWorker+'_'+ idNumLine).val();
  var VI_PrimKey = $("#TIPrimKey_" + idJour+'_'+ idWorker+'_'+ idNumLine).val();
  var id_PrimKey =" ";
  
  if(VI_PrimKey != " ")
  {
   if((VI_TimeSpent != "")&&(VS_Request != ""))
   {  
    $.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:'Update_Line_BDD_Daily_Timer.ajx.php', 
     success:function(data) {},
     error: function(error){alert("Erreur : " + error);}
    });
   }
  }
  else
  {
   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);
   }
  }
 }

 function DeleteLine(line) 
 {
  var Del_PrimKey = $(ID_I_PrimKey).val()
 
  $.ajax
  ({
   type: 'POST',
   data: 
    {
     Delete_PrimKey : Del_PrimKey, 
    },
   async: false,
   url:'Delete_Line_BDD_Daily_Timer.ajx.php', 
   success:function(data) {},
   error: function(error){alert("Erreur : " + error);}
  });  
  line.parentNode.removeChild(line);
 }
}
function ShowDiv(idJour,idWorker)
{
    //On masque TOUS les tableaux
  $('div[name="MesTBL"]').hide(); 
 
    // On affiche celui que l'on a selectionné
  $('#myDiv_' + "TJour_" + idJour+'_'+ idWorker).show();   
}

</script>


Voila ma question :
Comment je peut faire pour gérer le onmouseout avec mon tableau.Pour l'instant firebug me met se message d'erreur a chaque fois que je quitte un élément de ma ligne:
"ReferenceError: Save_Line is not defined


Save_Line()"

Merci


Merci et que le café soit avec vous.
Messages postés
29931
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 novembre 2020
338
Ce message d'erreur apparait en général :
- Soit par ce que la fonction n'existe pas (ce qui n'est pas ton cas)
- Soit par ce que tu as une erreur de syntaxe quelque part dans ton code (avant ta fonction).. comme une accolade fermante oubliée ou quelque chose du genre.

Je pense que tu peux essayer de placer ta fonction Save_Line() En haut de tes scripts... tu verras si elle passe.
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015

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

Si je place Save_Line() au dessus de CreateDiv : j'ai se message d'erreur:
ReferenceError: idJour is not defined


Save_Line(idJour, idWorker, idNumLine)

Pourtant idJour,idWorker,idNumLine sont bien définie.
Et comment
Messages postés
29931
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 novembre 2020
338
Actuellement ta fonction se trouve DANS une autre fonction...CreateDiv.

C'est pour ça que tu avais ta première erreur.

Maintenant que tu l'as sorti correctement.... il t'indique que tes variables ne sont pas initialisées...
Forcément.. ta fonction est la suivante :

function Save_Line() {
  var VI_Description = $("#TTADescription_" + idJour+'_'+ idWorker+'_'+ idNumLine).val();
  var VS_Request = $("#TSRequest_"+ idJour+'_'+ idWorker+'_'+ idNumLine).val();
  var VI_TimeSpent = $("#TTime_" + idJour+'_'+ idWorker+'_'+ idNumLine).val();
  var VI_PrimKey = $("#TIPrimKey_" + idJour+'_'+ idWorker+'_'+ idNumLine).val();
  var id_PrimKey =" ";
  
  if(VI_PrimKey != " ")
  {
   if((VI_TimeSpent != "")&&(VS_Request != ""))
   {  
    $.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:'Update_Line_BDD_Daily_Timer.ajx.php', 
     success:function(data) {},
     error: function(error){alert("Erreur : " + error);}
    });
   }
  }
  else
  {
   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);
   }
  }
 }



Il va falloir que tu lui passes en paramètre tes différentes variables....

 function Save_Line(idJour,idWorker) {
 // ... Le reste de ton code


Il te faudra bien entendu, changer également l'appel à cette fonction...(en lui passant les paramètres..).


NB: tu risques d'avoir le même souci avec ta fonction DeleteLine
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015

Oui , il n'y a plus de message d'erreur lorsque je quitte la ligne.
Question : Pourquoi il faut mettre un + avant la variable et un + après la variable.
Messages postés
29931
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 novembre 2020
338
C'est de la CONCATENATION
http://www.commentcamarche.net/faq/16306-javascript-concatenation-de-chaines-de-caracteres

Exemple:
var H = " Hello ";
var N = " EnguerrandP";

alert( "Ceci est un test : " + H + N + "... !! ");


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

OK , mais pourquoi on en a pas mis pour :
 CreateDiv(IDfromDateText,IDfromWorker,NamefromWorker,dates);

?
Messages postés
29931
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 novembre 2020
338
Par ce que tu l'appelles directement dans un de tes scripts...
Alors que pour SaveLine... tu écris dans un élément HTML.
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015

Donc en direct depuis un script pas de concaténation ,en appelle depuis un élément html concaténation. enregistré
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015

l'idJour reçut dans la fonction Save_Line et incorrect il me met 1999,mais les deux autre id sont eux juste de plus lors de l'envoi plus de la moutier de mes variable ne sont pas lister dans post.
voila le code:
Jscript
function Save_Line(idJour, idWorker, idNumLine)
{
 var VI_Description = $("#TTADescription_" + idJour+'_'+ idWorker+'_'+ idNumLine).val();
 var VS_Request = $("#TSRequest_"+ idJour+'_'+ idWorker+'_'+ idNumLine).val();
 var VI_TimeSpent = $("#TTime_" + idJour+'_'+ idWorker+'_'+ idNumLine).val();
 var VI_PrimKey = $("#TIPrimKey_" + idJour+'_'+ idWorker+'_'+ idNumLine).val();
 var id_PrimKey =" ";

 if(VI_PrimKey != " ")
 {
  if((VI_TimeSpent != "")&&(VS_Request != ""))
  {  
   $.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,
      Val_PrimKey : VI_PrimKey
     },
    async: false,
    url:'Update_Line_BDD_Daily_Timer.ajx.php', 
    success:function(data) {},
    error: function(error){alert("Erreur : " + error);}
   });
  }
 }
 else
 {
  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);
  }
 }
}


php celui-ci et surement correct
<?php
 include('connexion.php');
 $idJour = isset($_POST['id_Jour'])?$_POST['id_Jour']:'';  // !
 $idWorker = isset($_POST['id_Worker'])?$_POST['id_Worker']:'';  // !
 $VI_Description = isset($_POST['V_I_Description'])?$_POST['V_I_Description']:'';  // !
 $VS_Request = isset($_POST['V_S_Request'])?$_POST['V_S_Request']:'';  // !
 $VI_TimeSpent = isset($_POST['V_I_TimeSpent'])?$_POST['V_I_TimeSpent']:'';  // !
 $PrimKey = isset($_POST['Val_PrimKey'])?$_POST['Val_PrimKey']:'';  // !
 
 $sql = "UPDATE caetbl_timetracking 
   SET  SimRequest = '$VS_Request',
     Description='$VI_Description',
     date='$idJour',
     time_spent='$VI_TimeSpent',
     Worker='$idWorker'
   WHERE caetbl_timetracking.ID='$PrimKey'";

 mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
 ?> 


autre problème il appel plus d'une fois la fonction Save_Line lorsque je quitte une ligne .
Messages postés
29931
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 novembre 2020
338
Autre problème il appel plus d'une fois la fonction Save_Line lorsque je quitte une ligne

Tu en déduis quoi ? ..... Qu'il te faut ajouter un test pour savoir si la ligne existe déjà ou non avant de la créer...

'idJour reçut dans la fonction Save_Line et incorrect il me met 1999
Ca veut dire que lorsque tu appelles la fonction.. la variable n'est pas bonne...
Il faut donc regarder là où tu appelles la fonction.
Donc dans le code :
/Ajoute une ligne au tableau du jour
	$("#TJour_" + idJour+'_'+ idWorker).append('<tr align="center" onmouseout="Save_Line('+idJour+','+ idWorker+','+ idNumLine+')" id="Row2_' + idJour+'_'+ idWorker+'_'+ idNumLine + '"></tr>');


... As-tu mis des ALERT pour essayer de voir ce que valent tes variables à cet endroit ??
S'il n'est pas bon ici... c'est que tu as un souci plus haut dans ton code...
A toi de trouver où.

la moitié de mes variables ne sont pas listées dans post.
=> Vu que ton ID_JOUR n'est pas le bon... tes variables
 var VI_Description = $("#TTADescription_" + idJour+'_'+ idWorker+'_'+ idNumLine).val();
 var VS_Request = $("#TSRequest_"+ idJour+'_'+ idWorker+'_'+ idNumLine).val();
 var VI_TimeSpent = $("#TTime_" + idJour+'_'+ idWorker+'_'+ idNumLine).val();
 var VI_PrimKey = $("#TIPrimKey_" + idJour+'_'+ idWorker+'_'+ idNumLine).val();


qui s'initialisent grâce à lui.. ne sont pas bonnes non plus... normal !


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

Ok , je vais essayer d'installer php sur mon mac sinon je ne pourrait pas tester avant lundi matin.
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015

Je vient de faire les test avant la fonction save mes variable sont juste mais arriver dans la fonction le woker et le numéro de ligne sont juste et la date fausse.
Je ne comprend pas pourquoi une seule des variable et fausse.
J'ai aussi essayer en modifier le nom de id jour en IDjourS dans les paramètre de la fonction save mais sa na rien changer.
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015

Bonjour, j'ai trouver une solution mais elle et vraiment pas très "belle".
J'ai crée un input qui contient idJour et dans SaveLine je définie la valeur de idJour avec la valeur de mon input. Se qui ma permit de confirmer que ma fonction fonctionne correctement.
Pouvez vous m'aider a trouvez une solution plus élégante .
Messages postés
295
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
15 juillet 2015

Bonjour, avec ce code:
<?xml version="1.1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<title>Daily Timers Save</title>
	<meta http-equiv="content-type" content="text/php; charset=ISO-8859-1"></meta>
	<!-- CSS -->
	<link rel="stylesheet" href="media/css/demo_page.css" type="text/css"></link>
	<link rel="stylesheet" href="media/css/demo_table.custom.css" type="text/css"></link>
	<link rel="stylesheet" href="media/css/demo_table_jui.css" type="text/css"></link>	
	<link rel="stylesheet" href="media/css/jquery-ui-1.10.4.custom.css"></link>
	<link rel="stylesheet" href="media/css/Interface_Style.css"></link>	
	<link rel="stylesheet" href="media/css/Calendar_Fixe_Design/jquery.datepick.css"></link>	
	
	<!-- general JavaScript -->
	<script type="text/javascript" src="media/js/jquery-1.11.0.js"></script>
	<script type="text/javascript" src="media/js/jquery-ui-1.10.4.custom.js"></script>
	<script type="text/javascript" src="media/js/JS_JQuery_Datepick_Pluging.js"></script>
	<script type="text/javascript" src="media/js/JS_JQuery_Datepick.js"></script>
	
	 <script type="text/javascript">
		$(function() 
		{
			$( '.datepicker' ).datepicker();
		});
	</script>	
</head>

<?php include('connexion.php');?>

<body style="background-image:url(media/image/fond_Gris.jpg)">

<div id="Top_Worker">
	WORKER :
	<?php
		$sql = "SELECT caetbl_people.PeopleID, caetbl_people.LastName, caetbl_people.FirstName
				FROM caetbl_people 
				INNER JOIN caetbl_GroupList 
				ON caetbl_GroupList.GroupID = caetbl_people.Group
				WHERE caetbl_GroupList.Group_Name='C&EA'
				ORDER BY caetbl_people.LastName;";
		
		$result = mysql_query($sql)or die("Requete pas comprise");
		echo '<select  
					name=\"Top_Worker\" 
					id=TopWorker >
					<option value=\"\" onChange=\"saveValue(this)\"></option>c';
		while ($row=mysql_fetch_assoc($result)) 
		{
			echo "<option value=\"". $row['PeopleID'] ." ". $row['LastName'] ." ". $row['FirstName']."\">"
			.$row['LastName'] ." ". $row['FirstName'] ."</option>\n"; 
		}
		echo "</select></td></tr>\n
			  </form>\n";
	?>
</div>

<button id="Return" title="Return menu" type="button" onclick="self.location.href='Administrators_Menu.php'">
			<img src="media/image/return_menu.jpg">
</button>

<div id="inlineDatepick"></div>
 
<fieldset id="Daily_Fieldset">
	<legend> DAILY TIMETABLE per request</legend>
	<div id="Zone_Tab">
	</div>	
</fieldset> 
<br /> 
<input type="hidden" value="" id="DaySelSave" />
<style>
#inlineDatepick
{
	margin-top: 20px;
    margin-left:0px;          
}

#Top_Worker
{
	position : absolute;
	margin-top: 0px;
    margin-left:630px;          
}

#Return
{
	position : absolute;
	margin-top: 145px;
    margin-left:750px;          
}

#Daily_Fieldset
{				
    border: 1px inset #000000;
    width:890px;
	margin: 0;
	padding:0;
    margin-top:30px;
    margin-left:0px;	
}

#Zone_Tab
{ 
	overflow: auto;   
	height: 470px;
	margin-top:0px;
    margin-left:0px;          
}
</style>
<script type="text/javascript">
$(function() 
{
   $('#inlineDatepick').datepick
   ({onSelect:
		function(dates)
   		{
			// Creation des variables Date
    		var dateText = $.datepick.formatDate(dates[0]);
       		var dateArr = dateText.split("/");
			var mois=dateArr[1];
			switch(mois) 
			{
			case "Jan":
					var ArrMonth = "01";
			break;
			case "Feb":
					var ArrMonth = "02";
			break;
			case "Mar":
					var ArrMonth = "03";
			break;
			case "Apr":
					var ArrMonth = "04";
			break;
			case "May":
					var ArrMonth = "05";
			break;
			case "Jun":
					var ArrMonth = "06";
			break;
			case "Jul":
					var ArrMonth = "07";
			break;
			case "Aug":
					var ArrMonth = "08";
			break;
			case "Sep":
					var ArrMonth = "09";
			break;
			case "Oct":
					var ArrMonth = "10";
			break;
			case "Nov":
					var ArrMonth = "11";
			break;
			case "Dec":
					var ArrMonth = "12";
			break;
			}
        	var IDfromDateText= dateArr[2] +"-"+ ArrMonth  +"-"+ dateArr[0];	 
			
			// Creation des variables Worker
			var IDWorker= document.getElementById("TopWorker").value;
			var WorkerArw = IDWorker.split(" ");
			var IDfromWorker = WorkerArw[0] ;
			var NamefromWorker = WorkerArw[1]+" "+ WorkerArw[2];
			
			// Creation de la variable tableau Day/Worker
			var TDW = "#myDiv_TJour_"+IDfromDateText+'_'+IDfromWorker ;
			
			//Test si le tableau Day/Worker exist
			if ($(TDW).length > 0)
			{
				EraseDiv(TDW);
			}
		
				// L'element n'existe pas... je le crée ...
                CreateDiv(IDfromDateText,IDfromWorker,NamefromWorker,dates);

                // ...puis j'affiche le tableau
                ShowDiv(IDfromDateText,IDfromWorker,NamefromWorker);                           
   		}
   });
});

function EraseDiv(TDW)
{
	$(TDW).remove()
}

function CreateDiv(idJour,idWorker,nameWorker,dates)
{
	
	var idNumLine = 0;
	
	//Je crée un nouveau div pour le tableau
    $("#Zone_Tab").append("<div name='MesTBL' id='myDiv_" + "TJour_" + idJour + '_' + idWorker + "'></div>");
	//On crée un tableau pour le jour X 
	$("#myDiv_" +"TJour_" + idJour+'_'+ idWorker).append('<table border="2" id="TJour_' + idJour+'_'+ idWorker + '"></table>').css("border","2px inset #000000");
	
	// Line Title
	$("#TJour_" + idJour+'_'+ idWorker).append('<tr align="center" id="Row1_' + idJour+'_'+ idWorker + '"></tr>'); 
	//Title New Line
	$("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" width="80px">Option Line</td>');
	//On crée un Input pour la date
	$("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" width="100px">Date</td>');
	//Title Request
	$("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" width="105px">Request</td>');
	//Title Times (h)
	$("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" width="55px">Time (h)</td>');
	//Title Description
	$("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" width="330px">Description</td>');
	//Title Worker
	$("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" width="175px">Worker</td>');
	//Title Worker
	$("#Row1_" + idJour+'_'+ idWorker).append('<td bgcolor="#F0FFFF" style="display:none"></td>');
	
	//Ajoute une ligne au tableau du jour
	$("#TJour_" + idJour+'_'+ idWorker).append('<tr align="center" onmouseout="Save_Line('+ idWorker+','+idJour+',' +idNumLine+');" id="Row2_' + idJour+'_'+ idWorker+'_'+ idNumLine + '"></tr>'); //onmouseout="Save_Line()"
	//On ajoute les options
	$("#Row2_" + idJour+'_'+ idWorker+'_'+ idNumLine).append('<td bgcolor="#FFFFFF"><input type="button" value="New" style="width:100%" class="InsertLine" id="TNewLine_' + idJour+'_'+ idWorker +'_'+ idNumLine + '"></input><br /><input type="button" value="Delete" style="width:100%" class="Delete" onclick="DeleteLine(this);" id="TDeleteLine_' + idJour+'_'+ idWorker +'_'+ idNumLine + '"></input></td>');
	//On crée un Input pour la date
	$("#Row2_" + idJour+'_'+ idWorker+'_'+ idNumLine).append('<td bgcolor="#FFFFFF"><input type="date" style="width: 100%;" id="TDate_' + idJour+'_'+ idWorker +'_'+ idNumLine + '"></input></td>');
	//On crée un Select pour la tache
	$.ajax
	({
		type: 'POST',
		data: {id_Jour : idJour+'_', id_Worker : idWorker+'_', id_NumLine : idNumLine},
		async: false,
		url:'TSRequest_Daily_Timer.ajx.php', 
		success:function(data) { $("#Row2_" + idJour+'_'+ idWorker+'_'+ idNumLine).append('<td bgcolor="#FFFFFF">'+data+'</td>');},
		error: function(error){alert("Erreur : " + error);}
	});
	//On crée un Input pour le Temps
	$("#Row2_" + idJour+'_'+ idWorker+'_'+ idNumLine).append('<td bgcolor="#FFFFFF"><input type="text" value="" style="width: 100%;" id="TTime_' + idJour+'_'+ idWorker+'_'+ idNumLine + '"></input></td>');
	//On crée une Zone de texte pour la description
	$("#Row2_" + idJour+'_'+ idWorker+'_'+ idNumLine).append('<td bgcolor="#FFFFFF"><textarea rows="2" cols="25" style="width: 100%;resize: none;" id="TTADescription_' + idJour+'_'+ idWorker +'_'+ idNumLine +'"></textarea></td>');
	//On crée un Input pour l employer
	$("#Row2_" + idJour+'_'+ idWorker+'_'+ idNumLine).append('<td bgcolor="#FFFFFF"><input type="text" style="width: 100%;" id="TIWorker_' + idJour+'_'+ idWorker +'_'+ idNumLine + '"></input></td>');
	//On crée un Input pour la clef primaire
	$("#Row2_" + idJour+'_'+ idWorker +'_'+ idNumLine).append('<td bgcolor="#FFFFFF"><input type="text" style="width: 100%;" value="" readonly="readonly" id="TIPrimKey_' + idJour+'_'+ idWorker +'_'+ idNumLine + '"></input></td>')
	
	// On met le nom de l'employer sélectionner dans l'input TSWorker+idJour+idWorker
	$("#TIWorker_"+idJour+'_'+ idWorker +'_'+ idNumLine).val(nameWorker);
  
	// On met la valeur de la date sélectionner dans l'input TDate+idJour+idWorker
	var dateText = $.datepick.formatDate(dates[0]);
	$("#TDate_"+idJour+'_'+ idWorker +'_'+ idNumLine).val(dateText); 
	$("#DaySelSave").val(idJour);

	//Create line witch the database + filter(Day/Worker) value
	//var JourSel = idJour ;
	//var WorkerSel = idWorker ;
	//$.ajax
	//({
	//	type: 'POST',
	//	data: 
	//	{
	//		Jour_Sel : JourSel,
	//		Worker_Sel : WorkerSel,
	//		id_Jour : idJour+'_',
	//		id_Worker : idWorker+'_',
	//		id_NumLine : idNumLine
	//	},
	//	async: false,
	//	url:'Create_Line_BDD_In_HTML_Daily_Timer.ajx.php', 
	//	success:function(data) {$("#TJour_" + idJour+'_'+ idWorker).append(data);},
	//	error: function(error){alert("Erreur : " + error);}
	//});	
	
	// Variable pour le clonage
	
		
	$('.InsertLine').click(function Insert_line()
	{	
	
		var Line ="#Row2_" + idJour+'_'+ idWorker +'_'+idNumLine;
		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('');
		}
	});

	function DeleteLine(line) 
	{
		var Del_PrimKey = $(ID_I_PrimKey).val()
	
		$.ajax
		({
			type: 'POST',
			data: 
				{
					Delete_PrimKey : Del_PrimKey, 
				},
			async: false,
			url:'Delete_Line_BDD_Daily_Timer.ajx.php', 
			success:function(data) {},
			error: function(error){alert("Erreur : " + error);}
		});		
		line.parentNode.removeChild(line);
	}
	
	
}

function Save_Line(idWorker, idJour,  idNumLine)
{
	var idJour =$("#DaySelSave").val();
	var VI_Description = $("#TTADescription_" + idJour+'_'+ idWorker+'_'+ idNumLine).val();
	var VS_Request = $("#TSRequest_"+ idJour+'_'+ idWorker+'_'+ idNumLine).val();
	var VI_TimeSpent = $("#TTime_" + idJour+'_'+ idWorker+'_'+ idNumLine).val();
	var VI_PrimKey = $("#TIPrimKey_" + idJour+'_'+ idWorker+'_'+ idNumLine).val();
	var id_PrimKey =" ";

	if(VI_PrimKey != " ")
	{
	
		if((VI_TimeSpent != "")&&(VS_Request != ""))
		{
		alert("Key : "+VI_PrimKey);
			$.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,
						Val_PrimKey : VI_PrimKey
					},
				async: false,
				url:'Update_Line_BDD_Daily_Timer.ajx.php', 
				success:function(data) {},
				error: function(error){alert("Erreur : " + error);}
			});
		}
	}
	else
	{
		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);
		}
	}
}


function ShowDiv(idJour,idWorker)
{
    //On masque TOUS les tableaux
 	$('div[name="MesTBL"]').hide(); 
	
    // On affiche celui que l'on a selectionné
 	$('#myDiv_' + "TJour_" + idJour+'_'+ idWorker).show();   
}

</script>
</body>
</html>

Je ne peut mettre que une ligne a jour comment je peut faire pour mettre a jour la ligne que je quitte sachant que sa clef primaire et contenut dans un input qui a un id de type: Prim_Key_la date_l'employer_N°ligne.
Merci