[JQuery+AJAX] Insertion de ligne de la BDD dans un Tableau HTML

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 29/04/2014 à 14:09
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 - 6 mai 2014 à 09:07
Bonjour,
Je cherche a crée une fonction dans ma fonction createDiv qui me permettrait d'insérer dans mon tableau des lignes avec les valeur de celle de la BDD qui correspond au filtre D/W.

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=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
....


Mon fichier AJAX:
<?php
 include('connexion.php');
 $idJour = isset($_POST['id_Jour'])?$_POST['id_Jour']:'';  // !
 $idWorker = isset($_POST['id_Worker'])?$_POST['id_Worker']:'';  // !
 $idNumLine = isset($_POST['id_NumLine'])?$_POST['id_NumLine']:'';  // !
 
 $sql = "SELECT caetbl_timetracking.ID caetbl_timetracking.SimRequest caetbl_timetracking.Description caetbl_timetracking.date caetbl_timetracking.time spent caetbl_timetracking.Worker 
   FROM caetbl_timetracking 
   WHERE caetbl_timetracking.date=$idJour & caetbl_timetracking.Worker=$idWorker "
 $Table_Time_Tracking=mysql_query($sql)or die("Requete pas comprise"); // $Table_Time_Tracking est un pointeur vers le tableau contenant le résultat de la requête

 while($Cols_Table=mysql_fetch_array($Table_Time_Tracking)) // $Cols_Table est un nouveau tableau contenant une ligne du tableau
 { //Si la ligne respect les conditions du filtre D/W on crée une nouvelle ligne contenant nos information 
 
  //On incrémente idNumLine a chaque nouvelle ligne du tableau html
  $idNumLine=$idNumLine+1;
  
  //Ajoute une ligne au tableau du jour
  $(\"#TJour_$idJour$idWorker\").append("<tr align=\"center\" class=\"TRow\" 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\"></input><br /><input type=\"button\" value=\"Delete\" style=\"width: 100%;\" class=\"Delete\" onclick=\"DeleteLine(this.parentNode.parentNode);\" id=\"TDeleteLine_$idJour$idWorker\"></input></td>");
  //On crée un Input pour la date
  $(\"#Row2_$idJour$idWorker$idNumLine\").append("<td bgcolor=\"#FFFFFF\"><input type=\"date\"  value=\"$Cols_Table[3]\" style=\"width: 100%;\" id=\"TDate_$idJour$idWorker\"></input></td>"); // Contains cols Date
  //On crée un Select pour la tache
  if ($idJour)
  {
   $sql2 = "SELECT caetbl_Sim_requests.RequestID, caetbl_Sim_requests.Sim_Title ,caetbl_Sim_requests.ReportDate
     FROM caetbl_Sim_requests 
     WHERE caetbl_Sim_requests.ReportDate Is Null
     ORDER BY caetbl_Sim_requests.RequestID";

   $result = mysql_query($sql2)or die("Requete pas comprise");

   echo $(\"#Row2_$idJour$idWorker$idNumLine\").append("<td bgcolor=\"#FFFFFF\"><select style=\"width: 100%;\" id=\"TSRequest_ $idJour$idWorker\"><option value=\"$Cols_Table[1]\" onChange=\"saveValue(this)\"></option>" ;
   while ($row=mysql_fetch_assoc($result))
   {
    echo "<option value=\"". $row['RequestID'] ." ". $row['Sim_Title'] ." ". $row['ReportDate'] ."\">"
     . $row['RequestID'] ." ". $row['Sim_Title'] ." ". $row['ReportDate'] ."</option>\n"; 
   }
   echo  "</select> </td>");
  }
  //On crée un Input pour le Temps
  $(\"#Row2_$idJour$idWorker$idNumLine\").append("<td bgcolor=\"#FFFFFF\"><input type=\"text\"  value=\"$Cols_Table[4]\" style=\"width: 100%;\" id=\"TTime_$idJour$idWorker\"></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\ value=\"$Cols_Table[2]\"></textarea></td>");
  //On crée un Input pour l employer
  $(\"#Row2_$idJour$idWorker$idNumLine\").append("<td bgcolor=\"#FFFFFF\"><input type=\"text\"  value=\"$Cols_Table[5]\" style=\"width: 100%;\" id=\"TIWorker_$idJour$idWorker\"></input></td>"); 
  //On crée un Input pour la clef primaire
  $(\"#Row2_$idJour$idWorker$idNumLine\").append("<td bgcolor=\"#FFFFFF\"><input type=\"text\"  value=\"$Cols_Table[0]\" style=\"width: 100%;\" id=\"TIPrimKey_$idJour$idWorker\"></input></td>");
  
 }// à chaque boucle, le contenu du tableau $Cols_Table change 
 
 ?>



Merci

Merci et que le café soit avec vous.

8 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
Modifié par jordane45 le 29/04/2014 à 14:29
Bonjour,

Mon fichier AJAX:
Attention... c'est un fichier PHP appellé via une méthode que l'on nomme AJAX ... ce n'est pas un fichier "ajax"...

En tout cas... ta page PHP ne peux pas fonctionner comme tu l'as faite....
Tu ne peux pas appeller des commandes JAVASCRIPT directement dans du PHP ( si tu ne les mets pas dans des balises <script type="text/javascript"> </script>


Pense aussi qu'il vaut mieux éviter de mettre trop de HTML dans de l'AJAX.
Dans l'idéal... avec AJAX ... tu récupères des données sous forme de tableau ( je parle d'ARRAY ..pas des tables html...) Puis tu les manipules dans ta fonction SUCCESS.

N'oublies pas non plus que Javascript travaille côté POSTE client (c.a.d sur l'ordinateur qui affiche la page) alors que le PHP est traité côté serveur.... (=> Gain de rapidité et sécurisation des données.).

Enfin bon..
Autant.... l'ajout de nouvelles lignes dynamiquement dans ta page se fait via javascript (ce que tu fais déjà)... autant l'affichage de lignes déjà existantes dans ta BDD (si tu les veux au chargement de ta page) tu peux le faire directement en PHP... (plus simple).



Ah..et sinon :
Ta première requête est fausse ..

 $sql = "SELECT caetbl_timetracking.ID
 caetbl_timetracking.SimRequest 
caetbl_timetracking.Description 
caetbl_timetracking.date 
caetbl_timetracking.time spent 
caetbl_timetracking.Worker 
   FROM caetbl_timetracking 
   WHERE caetbl_timetracking.date=$idJour 
 & caetbl_timetracking.Worker=$idWorker "


- Il te manque des virgules pour séparer la liste des champs que tu veux "select".
- où as-tu vu .. que pour dire AND tu pouvais utiliser le symbole & ?
- Il manque également un ";" à la fin de ta ligne.

En gros.. tu devrais plutot avoir :
 $sql = "SELECT C.ID
     ,C.SimRequest 
     ,C.Description 
     ,C.date 
     ,C.time spent 
     ,C.Worker 
   FROM caetbl_timetracking C
   WHERE C.date='$idJour' 
     AND   C.Worker='$idWorker' ";


Pas sur non plus que Mysql aprécie les noms de champs avec des espaces.. (time spent ).
A mon avis tu devrais le renomer en "time_spent"

Que d'erreurs....


C'est typiquement le genre de chose que tu aurais pu voir par toi même si tu avais testé ta requête directement dans ta BDD comme je te le conseille à chacune de tes questions ........













Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
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 29/04/2014 à 14:47
J'ai appliquer les correction aux erreur que tu a souligner.
Pour la création des ligne je ne peut pas le faire lors de l'init de la page car le filtre D/W n'est pas encor choisit, et que celui-ci peut être changer.
Merci
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
29 avril 2014 à 14:59
Pour la création des ligne je ne peut pas le faire lors de l'init de la page car le filtre D/W n'est pas encor choisit, et que celui-ci peut être changer.

Dans ce cas reste en Ajax.
Supprimes toutes tes instructions javascript de ton fichier php et ne conserve que le code html.
du genre :
while($Cols_Table=mysql_fetch_array($Table_Time_Tracking)){
// $Cols_Table est un nouveau tableau contenant une ligne du tableau
//Si la ligne respect les conditions du filtre D/W on crée une nouvelle ligne contenant nos information 
//On incrémente idNumLine a chaque nouvelle ligne du tableau html

  //$idNumLine=$idNumLine+1;
  $idNumLine++;

  //Ajoute une ligne au tableau du jour
  echo "<tr align=\"center\" class=\"TRow\" id=\"Row2_$idJour$idWorker$idNumLine\"></tr>"; 

// .....









0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
29 avril 2014 à 15:44
Ben je t'ai répondu...
Tu conserves ton script javascript qui fait appel à ta page PHP.
Tu modifies ta page PHP en tenant compte des mes précédentes remarques..
Et voilou.. le tour est joué.
0
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 1
29 avril 2014 à 16:29
Bonjour,
voila se que j'ai fais dans le fichier php:
<?php
	include('connexion.php');*
	$JourSel = isset($_POST['Jour_Sel'])?$_POST['Jour_Sel']:'';  // !
	$WorkerSel = isset($_POST['Worker_Sel'])?$_POST['Worker_Sel']:'';  // !
	$idJour = isset($_POST['id_Jour'])?$_POST['id_Jour']:'';  // !
	$idWorker = isset($_POST['id_Worker'])?$_POST['id_Worker']:'';  // !
	$idNumLine = isset($_POST['id_NumLine'])?$_POST['id_NumLine']:'';  // !
	
	$sql = "SELECT  caetbl_timetracking.ID,
					caetbl_timetracking.SimRequest,
					caetbl_timetracking.Description,
					caetbl_timetracking.date,
					caetbl_timetracking.time_spent,
					caetbl_timetracking.Worker 
			FROM caetbl_timetracking 
			WHERE caetbl_timetracking.date=$JourSel 
			AND caetbl_timetracking.Worker=$WorkerSel ";
	$Table_Time_Tracking=mysql_query($sql)or die("Requete pas comprise"); // $Table_Time_Tracking est un pointeur vers le tableau contenant le résultat de la requête

	while($Cols_Table=mysql_fetch_array($Table_Time_Tracking)) // $Cols_Table est un nouveau tableau contenant une ligne du tableau
	{	//Si la ligne respect les conditions du filtre D/W on crée une nouvelle ligne contenant nos information 
		//On incrémente idNumLine a chaque nouvelle ligne du tableau html
		//$idNumLine=$idNumLine+1;
		$idNumLine++;

		if ($idJour)
		{
			$sql2 = "SELECT caetbl_Sim_requests.RequestID,
							caetbl_Sim_requests.Sim_Title,
							caetbl_Sim_requests.ReportDate
					FROM caetbl_Sim_requests 
					WHERE caetbl_Sim_requests.ReportDate Is Null
					ORDER BY caetbl_Sim_requests.RequestID";

			$result = mysql_query($sql2)or die("Requete pas comprise");

			echo $(\"#Row2_$idJour$idWorker$idNumLine\").append("<td bgcolor=\"#FFFFFF\"><select style=\"width: 100%;\" id=\"TSRequest_ $idJour$idWorker\"><option value=\"$Cols_Table[1]\" onChange=\"saveValue(this)\"></option>" ;
			while ($row=mysql_fetch_assoc($result))
			{
				echo "<option value=\"". $row['RequestID'] ." ". $row['Sim_Title'] ." ". $row['ReportDate'] ."\">"
					. $row['RequestID'] ." ". $row['Sim_Title'] ." ". $row['ReportDate'] ."</option>\n"; 
			}
			echo  "</select> </td>");
		}
		//Ajoute une ligne au tableau du jour
		echo "<tr align=\"center\" class=\"TRow\" id=\"Row2_$idJour$idWorker$idNumLine\">
				<td bgcolor=\"#FFFFFF"\ ">
					<input type=\"button\" value=\"\" style=\"width: 100%;\" class=\"InsertLine\" id=\"TNewLine_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
					<br />
					<input type=\"button\" value=\"\" style=\"width: 100%;\" class=\"Delete\" onclick=\"DeleteLine(this.parentNode.parentNode);\" id=\"TDeleteLine_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
				</td>
				<td bgcolor=\"#FFFFFF"\ ">
					<input type=\"text\" value=\"$Cols_Table[3]\" style=\"width: 100%;\" id=\"TIDate_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
				</td>
				<td bgcolor=\"#FFFFFF"\ ">
					<select></select>
				</td>
				<td bgcolor=\"#FFFFFF"\ ">
					<input type=\"text\" value=\"$Cols_Table[4]\" style=\"width: 100%;\" id=\"TITime_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
				</td>
				<td bgcolor=\"#FFFFFF"\ ">
					<textarea type=\"text\" value=\"$Cols_Table[2]\" rows=\"2\" cols=\"25\" style=\"width: 100%;resize: none;\" id=\"TTADescription_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></textarea>
				</td>
				<td bgcolor=\"#FFFFFF"\ ">
					<input type=\"text\" value=\"$Cols_Table[5]\" style=\"width: 100%;\" id=\"TIWorker_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
				</td>
				<td bgcolor=\"#FFFFFF"\ ">
					<input type=\"text\" value=\"$Cols_Table[0]\" style=\"width: 100%;\" readonly=\"readonly\" id=\"TIPrimKey_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
				</td>
			 </tr>"; 

	}// à chaque boucle, le contenu du tableau $Cols_Table change	
	
	?>


et la fonction ajax qui l'appel :
	//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) { data.insertAfter("#Row1_" + idJour+'_'+ idWorker);},
		error: function(error){alert("Erreur : " + error);}
	});	


lorsque je fais un test j'ai un message d'erreur sur firebug:
TypeError: data.insertAfter is not a function


success:function(data) { data.insertAfter("#Row1_" + idJour+'_'+ idWorker);},

Je n'ait pas encor trouver comment récupérer mon tableau(si il existe) je continue de chercher.
Merci
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
29 avril 2014 à 16:35
0
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 1
29 avril 2014 à 20:15
donc si j'ai une variable qui prend la valeur de data et que je fais un mavariable.insertafeter sa pourrait marcher, je testerait sa demain sur mon ordo la j'ai pas la BDD.
Merci
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 à 09:02
Bonjour,
En corrigeant de cette façon ma fonction ajax Firebug ne me met plus de message d'erreur:
 //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);}
 })

Et en corrigeant quelque erreur dans le fichier php (pour la création de nouvelle ligne avec le contenu de la BDD correspondant au filtre choisit) je n'ai plus de message d'erreur qui apparait dans ma ligne ou sous ma ligne :
<?php
 include('connexion.php');
 $JourSel = isset($_POST['Jour_Sel'])?$_POST['Jour_Sel']:'';  // !
 $WorkerSel = isset($_POST['Worker_Sel'])?$_POST['Worker_Sel']:'';  // !
 $idJour = isset($_POST['id_Jour'])?$_POST['id_Jour']:'';  // !
 $idWorker = isset($_POST['id_Worker'])?$_POST['id_Worker']:'';  // !
 $idNumLine = isset($_POST['id_NumLine'])?$_POST['id_NumLine']:'';  // !
 
 $sql = "SELECT  caetbl_timetracking.ID,
     caetbl_timetracking.SimRequest,
     caetbl_timetracking.Description,
     caetbl_timetracking.date,
     caetbl_timetracking.time_spent,
     caetbl_timetracking.Worker 
   FROM caetbl_timetracking 
   WHERE caetbl_timetracking.date=$JourSel 
   AND caetbl_timetracking.Worker=$WorkerSel ";
 $Table_Time_Tracking=mysql_query($sql)or die("Requete pas comprise"); // $Table_Time_Tracking est un pointeur vers le tableau contenant le résultat de la requête

 while($Cols_Table=mysql_fetch_array($Table_Time_Tracking)) // $Cols_Table est un nouveau tableau contenant une ligne du tableau
 { //Si la ligne respect les conditions du filtre D/W on crée une nouvelle ligne contenant nos information 
  //On incrémente idNumLine a chaque nouvelle ligne du tableau html
  //$idNumLine=$idNumLine+1;
  $idNumLine++;

  if ($idJour)
  {
   $sql2 = "SELECT caetbl_Sim_requests.RequestID,
       caetbl_Sim_requests.Sim_Title,
       caetbl_Sim_requests.ReportDate
     FROM caetbl_Sim_requests 
     WHERE caetbl_Sim_requests.ReportDate Is Null
     ORDER BY caetbl_Sim_requests.RequestID";

   $result = mysql_query($sql2)or die("Requete pas comprise");

   echo "<select style=\"width: 100%;\" id=\"TSRequest_ $idJour$idWorker\"><option value=\"$Cols_Table[1]\" onChange=\"saveValue(this)\"></option>" ;
   while ($row=mysql_fetch_assoc($result))
   {
    echo "<option value=\"". $row['RequestID'] ." ". $row['Sim_Title'] ." ". $row['ReportDate'] ."\">"
     . $row['RequestID'] ." ". $row['Sim_Title'] ." ". $row['ReportDate'] ."</option>\n"; 
   }
   echo  "</select>";
  }
  //Ajoute une ligne au tableau du jour
  echo "<tr align=\"center\" class=\"TRow\" id=\"Row2_$idJour$idWorker$idNumLine\">
    <td bgcolor=\"#FFFFFF\">
     <input type=\"button\" value=\"\" style=\"width: 100%\" class=\"InsertLine\" id=\"TNewLine_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
     <br />
     <input type=\"button\" value=\"\" style=\"width: 100%\" class=\"Delete\" onclick=\"DeleteLine(this.parentNode.parentNode);\" id=\"TDeleteLine_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
    </td>
    <td bgcolor=\"#FFFFFF\">
     <input type=\"text\" value=\"$Cols_Table[3]\" style=\"width: 100%\" id=\"TIDate_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
    </td>
    <td bgcolor=\"#FFFFFF\">
     <select></select>
    </td>
    <td bgcolor=\"#FFFFFF\">
     <input type=\"text\" value=\"$Cols_Table[4]\" style=\"width: 100%\" id=\"TITime_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
    </td>
    <td bgcolor=\"#FFFFFF\">
     <textarea type=\"text\" value=\"$Cols_Table[2]\" rows=\"2\" cols=\"25\" style=\"width: 100%;resize: none;\" id=\"TTADescription_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></textarea>
    </td>
    <td bgcolor=\"#FFFFFF\">
     <input type=\"text\" value=\"$Cols_Table[5]\" style=\"width: 100%\" id=\"TIWorker_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
    </td>
    <td bgcolor=\"#FFFFFF\">
     <input type=\"text\" value=\"$Cols_Table[0]\" style=\"width: 100%\" readonly=\"readonly\" id=\"TIPrimKey_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
    </td>
    </tr>"; 

 }// à chaque boucle, le contenu du tableau $Cols_Table change 
 
 ?>


De-plus je croit non je suis sur qu'il faut faire une modification pour le select car c'est contraint sont:
-Qu'il soit dans la ligne du tableau
-Qu'il est par défaut la valeur contenu dans la ligne de la BDD,
-Que comme mes select crée par javascript est les valeur de la base de données.

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
30 avril 2014 à 10:06
Bonjour,

De-plus je croit non je suis sur qu'il faut faire une modification pour le select car c'est contraint sont:
-Qu'il soit dans la ligne du tableau
-Qu'il est par défaut la valeur contenu dans la ligne de la BDD,
-Que comme mes select crée par javascript est les valeur de la base de données.

C'est une question ?
Si c'est le cas... je ne la comprend pas..(désolé).

Peux-tu essayer de la reformuler ?



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 à 10:15
Dans mon fichier php j'ai sa:
		//On ajoute le select avec les valeur de la BDD
		if ($idJour)
		{
			$sql2 = "SELECT caetbl_Sim_requests.RequestID,
							caetbl_Sim_requests.Sim_Title,
							caetbl_Sim_requests.ReportDate
					FROM caetbl_Sim_requests 
					WHERE caetbl_Sim_requests.ReportDate Is Null
					ORDER BY caetbl_Sim_requests.RequestID";

			$result = mysql_query($sql2)or die("Requete pas comprise");

			echo "<select style=\"width: 100%;\" id=\"TSRequest_ $idJour$idWorker\"><option value=\"$Cols_Table[1]\" onChange=\"saveValue(this)\"></option>" ;
			while ($row=mysql_fetch_assoc($result))
			{
				echo "<option value=\"". $row['RequestID'] ." ". $row['Sim_Title'] ." ". $row['ReportDate'] ."\">"
					. $row['RequestID'] ." ". $row['Sim_Title'] ." ". $row['ReportDate'] ."</option>\n"; 
			}
			echo  "</select>";
		}

qui me crée un select avec les valeur de la BDD
Et j'ai sa (qui théoriquement doit me crée une ligne avec les valeur de la BDD):
		//Ajoute une ligne au tableau du jour
		echo "<tr align=\"center\" class=\"TRow\" id=\"Row2_$idJour$idWorker$idNumLine\">
				<td bgcolor=\"#FFFFFF\">
					<input type=\"button\" value=\"\" style=\"width: 100%\" class=\"InsertLine\" id=\"TNewLine_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
					<br />
					<input type=\"button\" value=\"\" style=\"width: 100%\" class=\"Delete\" onclick=\"DeleteLine(this.parentNode.parentNode);\" id=\"TDeleteLine_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
				</td>
				<td bgcolor=\"#FFFFFF\">
					<input type=\"text\" value=\"$Cols_Table[3]\" style=\"width: 100%\" id=\"TIDate_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
				</td>
				<td bgcolor=\"#FFFFFF\">
					<select></select>
				</td>
				<td bgcolor=\"#FFFFFF\">
					<input type=\"text\" value=\"$Cols_Table[4]\" style=\"width: 100%\" id=\"TITime_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
				</td>
				<td bgcolor=\"#FFFFFF\">
					<textarea type=\"text\" value=\"$Cols_Table[2]\" rows=\"2\" cols=\"25\" style=\"width: 100%;resize: none;\" id=\"TTADescription_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></textarea>
				</td>
				<td bgcolor=\"#FFFFFF\">
					<input type=\"text\" value=\"$Cols_Table[5]\" style=\"width: 100%\" id=\"TIWorker_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
				</td>
				<td bgcolor=\"#FFFFFF\">
					<input type=\"text\" value=\"$Cols_Table[0]\" style=\"width: 100%\" readonly=\"readonly\" id=\"TIPrimKey_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
				</td>
			 </tr>";

Je ne sait pas comment faire pour que mon select soit dans ma ligne avec comme valeur par défaut se qui y a dans la ligne de la BDD qui correspond à la ligne et au filtre D/W.
Merci
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
30 avril 2014 à 10:25
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 à 10:35
Je ne pense pas,
je croit que le code :
echo "<select style=\"width: 100%;\" id=\"TSRequest_ $idJour$idWorker\"><option value=\"$Cols_Table[1]\" onChange=\"saveValue(this)\"></option>" ;
			while ($row=mysql_fetch_assoc($result))
			{
				echo "<option value=\"". $row['RequestID'] ." ". $row['Sim_Title'] ." ". $row['ReportDate'] ."\">"
					. $row['RequestID'] ." ". $row['Sim_Title'] ." ". $row['ReportDate'] ."</option>\n"; 
			}
			echo  "</select>";

fais déjà la valeur par défaut qui correspond a la valeur de la ligne dans la table timetracking avec :
<select style=\"width: 100%;\" id=\"TSRequest_ $idJour$idWorker\"><option value=\"$Cols_Table[1]\" onChange=\"saveValue(this)\"></option>" ;

et l'incrémentation du select avec les request de la table sim_request avec:
while ($row=mysql_fetch_assoc($result))
			{
				echo "<option value=\"". $row['RequestID'] ." ". $row['Sim_Title'] ." ". $row['ReportDate'] ."\">"
					. $row['RequestID'] ." ". $row['Sim_Title'] ." ". $row['ReportDate'] ."</option>\n"; 
			}

Le problème c'est que je ne voit pas comment l'introduire dans la ligne pour que lorsque je renvois la ligne au tableau HTML le select soit dans cette ligne.

Merci
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:30
Bonjour,
avec mon fichier Array_Create_Line je n'ai pas de réponse.
Je suis donc aller voir dans Firebug j'envoie bien les information au fichier, mais rein n'ai renvoyer pourtant, j'ai bien mit :
		//Ajoute une ligne au tableau du jour
		echo "<tr align=\"center\" class=\"TRow\" id=\"Row2_$idJour$idWorker$idNumLine\">
				<td bgcolor=\"#FFFFFF\">
					<input type=\"button\" value=\"\" style=\"width: 100%\" class=\"InsertLine\" id=\"TNewLine_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
					<br />
					<input type=\"button\" value=\"\" style=\"width: 100%\" class=\"Delete\" onclick=\"DeleteLine(this.parentNode.parentNode);\" id=\"TDeleteLine_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
				</td>
				<td bgcolor=\"#FFFFFF\">
					<input type=\"text\" value=\"$Cols_Table[3]\" style=\"width: 100%\" id=\"TIDate_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
				</td>
				<td bgcolor=\"#FFFFFF\">
					<select></select>
				</td>
				<td bgcolor=\"#FFFFFF\">
					<input type=\"text\" value=\"$Cols_Table[4]\" style=\"width: 100%\" id=\"TITime_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
				</td>
				<td bgcolor=\"#FFFFFF\">
					<textarea type=\"text\" value=\"$Cols_Table[2]\" rows=\"2\" cols=\"25\" style=\"width: 100%;resize: none;\" id=\"TTADescription_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></textarea>
				</td>
				<td bgcolor=\"#FFFFFF\">
					<input type=\"text\" value=\"$Cols_Table[5]\" style=\"width: 100%\" id=\"TIWorker_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
				</td>
				<td bgcolor=\"#FFFFFF\">
					<input type=\"text\" value=\"$Cols_Table[0]\" style=\"width: 100%\" readonly=\"readonly\" id=\"TIPrimKey_' + idJour+'_'+ idWorker+'_'+ idNumLine + '\"></input>
				</td>
			 </tr>"; 

dans le fichier php et :
success:function(data) {$("#TJour_" + idJour+'_'+ idWorker).append(data);},

dans le fichier principal.

Je me demande si le problème ne vient pas du faite que j'ai sa dans mon fichier php:
			echo "<select style=\"width: 100%;\" id=\"TSRequest_ $idJour$idWorker\"><option value=\"$Cols_Table[1]\" onChange=\"saveValue(this)\"></option>" ;
			while ($row=mysql_fetch_assoc($result))
			{
				echo "<option value=\"". $row['RequestID'] ." ". $row['Sim_Title'] ." ". $row['ReportDate'] ."\">"
					. $row['RequestID'] ." ". $row['Sim_Title'] ." ". $row['ReportDate'] ."</option>\n"; 
			}
			echo  "</select>";

au dessus de l'echo qui me renvoit mon tableau.
Mais même avec sa il devrait au moins me renvoyer un select mais la rien du tout.
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 à 10:07
Bon j'ai testé en enlevant le echo select mais sa na rien changer. je ne comprend pas pourquoi il n'y a pas de réponse.
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 à 10:46
Bonjour, je ne comprend vraiment pas pourquoi il n'y a pas de réponse car même avec une fonction fausse au niveau de mais variable j'ai l'onglet réponse dans firebug.
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 5/05/2014 à 10:53
Bonjour, j'ai tester en remplacent POST par Get dans ma fonction ajax maintenant j'ai bien l'onglet réponse dans console all .
Mais apparemment ma fonction et fausse car j'ai comme réponse :"requete pas comprise"

Merci et que le café soit avec vous.
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 à 11:19
Bonjour j'ai compris pourquoi j'avais une réponse après avoir mit GET a la place de POST c'est parce que dans le fichier php je n'ai pas remplacer les$_POST en $_GET maintenant j'ai a nouveaux plus aucune réponse.
Merci
0
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 1
6 mai 2014 à 09:07
Bonjour,
J'ai trouver un exemple pour le tableau HTML
Merci de m'avoir aider.
(Voici l'exemple pour ceux que cela intéresse :
    <html>
    <title>Annuaire</title>
    <body>
    <?php
	include('connexion.php');
     
    // requête SQL qui compte le nombre total d'enregistrement dans la table et qui
    //récupère tous les enregistrements
    $select = 'SELECT * FROM 'caetbl_people' ';
    $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
     
     
    // si on a récupéré un résultat on l'affiche.
    if($total) {
    // debut du tableau
    echo '<table bgcolor="#FFFFFF">'."\n";
    // première ligne on affiche les titres prénom et surnom dans 2 colonnes
    echo '<tr>';
    echo '<td bgcolor="#669999"><b><u>PeopleID</u></b></td>';
    echo '<td bgcolor="#669999"><b><u>FirstName</u></b></td>';
    echo '<td bgcolor="#669999"><b><u>LastName</u></b></td>';
    echo '<td bgcolor="#669999"><b><u>Group</u></b></td>';
    echo '<td bgcolor="#669999"><b><u>phone</u></b></td>' ;
	echo '<td bgcolor="#669999"><b><u>DirectReport</u></b></td>' ;
    echo '</tr>'."\n";
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.
    while($row = mysql_fetch_array($result)) {
    echo '<tr>';
    echo '<td bgcolor="#CCCCCC">'.$row["PeopleID"].'</td>';
    echo '<td bgcolor="#CCCCCC">'.$row["FirstName"].'</td>';
    echo '<td bgcolor="#CCCCCC">'.$row["LastName"].'</td>';
    echo '<td bgcolor="#CCCCCC">'.$row["Group"].'</td>';
    echo '<td bgcolor="#CCCCCC">'.$row["phone"].'</td>';
	echo '<td bgcolor="#CCCCCC">'.$row["DirectReport"].'</td>';
    echo '</tr>'."\n";
    }
    echo '</table>'."\n";
    // fin du tableau.
    }
    else echo 'Pas d\'enregistrements dans cette table...';
     
    // on libère le résultat
    mysql_free_result($result);
     
    ?>
    </body>
    </html>
)
0
Rejoignez-nous