EnguerrandP
Messages postés295Date d'inscriptionvendredi 26 avril 2013StatutMembreDernière intervention15 juillet 2015
-
16 avril 2014 à 16:28
EnguerrandP
Messages postés295Date d'inscriptionvendredi 26 avril 2013StatutMembreDernière intervention15 juillet 2015
-
17 avril 2014 à 10:06
Bonjour,
J'ai quelque problème avec mon script.
Je voulait rajouter un argument a mes "id" du tableau jour pour qu'il prenne aussi en compte l'employer.
Voila mon script :
<script>
$(function()
{
$('#inlineDatepick').datepick
({onSelect:
function(dates)
{
var dateText = $.datepick.formatDate(dates[0]);
var dateArr = dateText.split("/");
var IDfromDateText= dateArr[2] + dateArr[0] + dateArr[1];
var IDfromWorker= document.getElementById("TopWorker").value;
if ($("#myDiv_TJour_"+IDfromDateText+"_"+IDfromWorker).length > 0)
{
// Il existe... donc j'affiche le tableau
AffichDiv(IDfromDateText,IDfromWorker);
}
else
{
// L'element n'existe pas... je le crée ...
CreaTable(IDfromDateText,IDfromWorker,dates);
// ...puis j'affiche le tableau
AffichDiv(IDfromDateText,IDfromWorker);
}
}
});
});
function CreaTable(idJour,idWorker,dates)
{
//Je crée un nouveau div pour le clone du tableau d'origine
$("#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");
$("#TJour_" + idJour+"_"+ idWorker).append('<tr align="center" id="Row1_' + idJour+"_"+ idWorker + '"></tr>');
//On crée un Bouton New Line
$("#Row1_" + idJour+"_"+ idWorker).append('<td bgcolor="#F0FFFF">New Line</td>');
//On crée un Input pour la date
$("#Row1_" + idJour+"_"+ idWorker).append('<td bgcolor="#F0FFFF">Date</td>');
//On crée un Select pour la tache
$("#Row1_" + idJour+"_"+ idWorker).append('<td bgcolor="#F0FFFF" width="160px">Request</td>');
//On crée un Input pour le Temps
$("#Row1_" + idJour+"_"+ idWorker).append('<td bgcolor="#F0FFFF">Time (h)</td>');
//On crée une Zone de texte pour la description
$("#Row1_" + idJour+"_"+ idWorker).append('<td bgcolor="#F0FFFF">Description</td>');
//On crée un Select pour l employer
$("#Row1_" + idJour+"_"+ idWorker).append('<td bgcolor="#F0FFFF"width="170px">Worker</td>');
$("#TJour_" + idJour+"_"+ idWorker).append('<tr align="center" id="Row2_' + idJour+"_"+ idWorker + '"></tr>');
//On crée un Bouton New Line
$("#Row2_" + idJour+"_"+ idWorker).append('<td><input type="button" value="New" style="width: 100%;" onclick="CloneLine(this.parentNode.parentNode);" id="TNewLine_' + idJour+ idWorker + '"></input></td>');
//On crée un Input pour la date
$("#Row2_" + idJour+"_"+ idWorker).append('<td><input type="date" style="width: 100%;" id="TDate_' + idJour+"_"+ idWorker + '"></input></td>');
//On crée un Select pour la tache
$.ajax
({
type: 'POST',
data: {id_Jour : idJour,id_Worker : idWorker},
async: false,
url:'TSRequest.ajx.php',
success:function(data) { $("#Row2_" + idJour+"_"+ idWorker).append('<td>'+data+'</td>');},
error: function(error){alert("Erreur : " + error);}
});
//On crée un Input pour le Temps
$("#Row2_" + idJour+"_"+ idWorker).append('<td><input type="text" style="width: 100%;" id="TTime_' + idJour+"_"+ idWorker + '"></input>');
//On crée une Zone de texte pour la description
$("#Row2_" + idJour+"_"+ idWorker).append('<td><textarea rows="2" cols="25" style="resize: none;" id="TTADescription_' + idJour+"_"+ idWorker + '"></textarea></td>');
//On crée un Select pour l employer
$("#Row2_" + idJour+"_"+ idWorker).append('<td><input type="text" style="width: 100%;" id="TSWorker_' + idJour+"_"+ idWorker + '"></input>');
var texte = document.getElementById("TopWorker").value;
$("#TSWorker_"+idJour+"_"+ idWorker).val(texte);
// On met la valeur de la date sélectionner dans l'input TDate+idJour
var dateText = $.datepick.formatDate(dates[0]);
$("#TDate_"+idJour+"_"+ idWorker).val(dateText);
}
function AffichDiv(idJour,idWorker)
{
//On masque TOUS les tableaux
$('div[name="MesTBL"]').hide();
// On affiche celui que l'on a selectionné
$('#myDiv_' + "TJour_" + idJour+"_"+ idWorker).show();
}
function CloneLine(Line)
{
newLine = Line.cloneNode(true);
Line.parentNode.insertBefore(newLine,Line);
//Line.parentNode.appendChild(newLine);
}
</script>
</body>
</html>
J'ai essayer de le dépanner avec Firebug mais je ne comprend pas pourquoi il ne s' exécute pas correctement.
Donc, je penser que le problème se situer dans ces lignes :
//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");
$("#TJour_" + idJour+"_"+ idWorker).append('<tr align="center" id="Row1_' + idJour+"_"+ idWorker + '"></tr>');
Il crée bien "un" div par jour par employer lorsque l'on sélectionne une journée, mais il ne crée pas le reste du tableau.
Si on re-sélectionne une journée il va recrée un div :
Je penser qu'il y a un problème avec le test de vérification d'éxistence,
mais comme on peut le voir ci-dessus l'id correspond a se que je demande.
if ($("#myDiv_TJour_"+IDfromDateText+"_"+IDfromWorker).length > 0)
{
// Il existe... donc j'affiche le tableau
AffichDiv(IDfromDateText,IDfromWorker);
}
Voila le code de toute la page /
<?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</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 rel="stylesheet" href="media/css/Calendar_Fixe_Design/jquery.datepick.css">
<!-- 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>
$(function()
{
$( '.datepicker' ).datepicker();
});
</script>
</head>
<?php include('connexion.php');?>
<body background="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['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>
<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:820px;
margin: 0;
padding:0;
margin-top:30px;
margin-left:0px;
}
#Zone_Tab
{
overflow: auto;
height: 470px;
margin-top:0px;
margin-left:0px;
}
</style>
<script>
$(function()
{
$('#inlineDatepick').datepick
({onSelect:
function(dates)
{
var dateText = $.datepick.formatDate(dates[0]);
var dateArr = dateText.split("/");
var IDfromDateText= dateArr[2] + dateArr[0] + dateArr[1];
var IDfromWorker= document.getElementById("TopWorker").value;
if ($("#myDiv_TJour_"+IDfromDateText+"_"+IDfromWorker).length > 0)
{
// Il existe... donc j'affiche le tableau
AffichDiv(IDfromDateText,IDfromWorker);
}
else
{
// L'element n'existe pas... je le crée ...
CreaTable(IDfromDateText,IDfromWorker,dates);
// ...puis j'affiche le tableau
AffichDiv(IDfromDateText,IDfromWorker);
}
}
});
});
function CreaTable(idJour,idWorker,dates)
{
//Je crée un nouveau div pour le clone du tableau d'origine
$("#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");
$("#TJour_" + idJour+"_"+ idWorker).append('<tr align="center" id="Row1_' + idJour+"_"+ idWorker + '"></tr>');
//On crée un Bouton New Line
$("#Row1_" + idJour+"_"+ idWorker).append('<td bgcolor="#F0FFFF">New Line</td>');
//On crée un Input pour la date
$("#Row1_" + idJour+"_"+ idWorker).append('<td bgcolor="#F0FFFF">Date</td>');
//On crée un Select pour la tache
$("#Row1_" + idJour+"_"+ idWorker).append('<td bgcolor="#F0FFFF" width="160px">Request</td>');
//On crée un Input pour le Temps
$("#Row1_" + idJour+"_"+ idWorker).append('<td bgcolor="#F0FFFF">Time (h)</td>');
//On crée une Zone de texte pour la description
$("#Row1_" + idJour+"_"+ idWorker).append('<td bgcolor="#F0FFFF">Description</td>');
//On crée un Select pour l employer
$("#Row1_" + idJour+"_"+ idWorker).append('<td bgcolor="#F0FFFF"width="170px">Worker</td>');
$("#TJour_" + idJour+"_"+ idWorker).append('<tr align="center" id="Row2_' + idJour+"_"+ idWorker + '"></tr>');
//On crée un Bouton New Line
$("#Row2_" + idJour+"_"+ idWorker).append('<td><input type="button" value="New" style="width: 100%;" onclick="CloneLine(this.parentNode.parentNode);" id="TNewLine_' + idJour+ idWorker + '"></input></td>');
//On crée un Input pour la date
$("#Row2_" + idJour+"_"+ idWorker).append('<td><input type="date" style="width: 100%;" id="TDate_' + idJour+"_"+ idWorker + '"></input></td>');
//On crée un Select pour la tache
$.ajax
({
type: 'POST',
data: {id_Jour : idJour,id_Worker : idWorker},
async: false,
url:'TSRequest.ajx.php',
success:function(data) { $("#Row2_" + idJour+"_"+ idWorker).append('<td>'+data+'</td>');},
error: function(error){alert("Erreur : " + error);}
});
//On crée un Input pour le Temps
$("#Row2_" + idJour+"_"+ idWorker).append('<td><input type="text" style="width: 100%;" id="TTime_' + idJour+"_"+ idWorker + '"></input>');
//On crée une Zone de texte pour la description
$("#Row2_" + idJour+"_"+ idWorker).append('<td><textarea rows="2" cols="25" style="resize: none;" id="TTADescription_' + idJour+"_"+ idWorker + '"></textarea></td>');
//On crée un Select pour l employer
$("#Row2_" + idJour+"_"+ idWorker).append('<td><input type="text" style="width: 100%;" id="TSWorker_' + idJour+"_"+ idWorker + '"></input>');
var texte = document.getElementById("TopWorker").value;
$("#TSWorker_"+idJour+"_"+ idWorker).val(texte);
// On met la valeur de la date sélectionner dans l'input TDate+idJour
var dateText = $.datepick.formatDate(dates[0]);
$("#TDate_"+idJour+"_"+ idWorker).val(dateText);
}
function AffichDiv(idJour,idWorker)
{
//On masque TOUS les tableaux
$('div[name="MesTBL"]').hide();
// On affiche celui que l'on a selectionné
$('#myDiv_' + "TJour_" + idJour+"_"+ idWorker).show();
}
function CloneLine(Line)
{
newLine = Line.cloneNode(true);
Line.parentNode.insertBefore(newLine,Line);
//Line.parentNode.appendChild(newLine);
}
</script>
</body>
</html>
Merci
A voir également:
Problème avec la modification d'une fonction JavaScript
jordane45
Messages postés37730Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention30 septembre 2023342 Modifié par jordane45 le 16/04/2014 à 17:16
Bonjour,
Déjà.. sans regarder plus loin je te dirai :
Tu nommes une variable : IDfromWorker
Hors.. tu ne lui passes pas un ID à proprement parlé mais une combinaison NOM PRENOM...
Attention.. certaines personnes ont des caractères spéciaux dans leur nom/prénom;.. des accents...des apostrophes....
Bref... vu que ta requête te permet d'avoir un ID... utilises plutot ça dans tes VALUE de tes OPTIONS
<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("Erreur dans la requete : ".$sql);
echo '<select
name=\"Top_Worker\"
id=\"TopWorker\"
onChange=\"saveValue(this.options[this.selectedIndex].text)\">';
echo "<option value=''>....</option>";
while ($row=mysql_fetch_assoc($result))
{
echo "<option value='". $row['PeopleID']."'>
". $row['LastName'] ." ". $row['FirstName']
."</option>\n";
}
echo "</select></td></tr></form>";
?>
</div>
J'ai modifié l'emplacement de ta fonction saveValue.
Elle est à mettre sur le SELECT on non sur un OPTION
J'ai aussi fait en sorte qu'elle te recupère le texte de l'option choisi et non le VALUE.
Testes déjà ça... et reviens après pour nous dire ce que ça donne et si tu coinces toujours....
Avant de poser une question, merci de lire la charte du site. Cordialement, Jordane
EnguerrandP
Messages postés295Date d'inscriptionvendredi 26 avril 2013StatutMembreDernière intervention15 juillet 20151 16 avril 2014 à 17:16
Voila se que j'ai remarquer:
- si on utilise mon code d'hier soir on crée le div mais pas le tableau.
-si on utilise ton code d'hier soir il ne crée pas le div ( je n'ai pas trouver pourquoi)
-Mais si on mixe les deux, et que l'on utilise l'id a la place du Nom/Prénom le tableau se crée a nouveau.Mais (il y a toujours un mais) dans le nom du Worker on a l'id et nom le nom prénom.
La solution que j'ai envisager et d'avoir un select a deux colonne une avec l'id et l'autre avec le nom/prénom.
Ainsi j'aurai une colonne qui aliment idWorker et l'autre mon input.
(Maintenant voir si c'est possible)
Merci
EnguerrandP
Messages postés295Date d'inscriptionvendredi 26 avril 2013StatutMembreDernière intervention15 juillet 20151 17 avril 2014 à 09:23
Salut,
Je pense qu'avec quelque chose dans se genre sa peut marcher si cette écriture est autorisé.
Es ce que on peut utiliser la valeur " " pour séparer avec un silpt ?
exemple: var Worker = 22 Enguerrand P
var elem = Worker .split(' ');
id= elem[0];
prénom= elem[1];
nom= elem[2];
EnguerrandP
Messages postés295Date d'inscriptionvendredi 26 avril 2013StatutMembreDernière intervention15 juillet 20151 17 avril 2014 à 10:04
Bonjour,
J'ai résolue mon probléme.
voila le code de la fonction PHP:
<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;";
<script>
$(function()
{
$('#inlineDatepick').datepick
({onSelect:
function(dates)
{
var dateText = $.datepick.formatDate(dates[0]);
var dateArr = dateText.split("/");
var IDfromDateText= dateArr[2] + dateArr[0] + dateArr[1];
var IDWorker= document.getElementById("TopWorker").value;
var WorkerArw = IDWorker.split(" ");
var IDfromWorker = WorkerArw[0] ;
var NamefromWorker = WorkerArw[1]+" "+ WorkerArw[2];
if ($("#myDiv_TJour_"+IDfromDateText+"_"+IDfromWorker).length > 0)
{
// Il existe... donc j'affiche le tableau
AffichDiv(IDfromDateText,IDfromWorker,NamefromWorker);
}
else
{
// L'element n'existe pas... je le crée ...
CreaTable(IDfromDateText,IDfromWorker,NamefromWorker,dates);
// ...puis j'affiche le tableau
AffichDiv(IDfromDateText,IDfromWorker,NamefromWorker);
}
}
});
});
function CreaTable(idJour,idWorker,nameWorker,dates)
{
//Je crée un nouveau div pour le clone du tableau d'origine
$("#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");
$("#TJour_" + idJour+"_"+ idWorker).append('<tr align="center" id="Row1_' + idJour+"_"+ idWorker + '"></tr>');
//On crée un Bouton New Line
$("#Row1_" + idJour+"_"+ idWorker).append('<td bgcolor="#F0FFFF">New Line</td>');
//On crée un Input pour la date
$("#Row1_" + idJour+"_"+ idWorker).append('<td bgcolor="#F0FFFF">Date</td>');
//On crée un Select pour la tache
$("#Row1_" + idJour+"_"+ idWorker).append('<td bgcolor="#F0FFFF" width="160px">Request</td>');
//On crée un Input pour le Temps
$("#Row1_" + idJour+"_"+ idWorker).append('<td bgcolor="#F0FFFF">Time (h)</td>');
//On crée une Zone de texte pour la description
$("#Row1_" + idJour+"_"+ idWorker).append('<td bgcolor="#F0FFFF">Description</td>');
//On crée un Select pour l employer
$("#Row1_" + idJour+"_"+ idWorker).append('<td bgcolor="#F0FFFF"width="170px">Worker</td>');
$("#TJour_" + idJour+"_"+ idWorker).append('<tr align="center" id="Row2_' + idJour+"_"+ idWorker + '"></tr>');
//On crée un Bouton New Line
$("#Row2_" + idJour+"_"+ idWorker).append('<td><input type="button" value="New" style="width: 100%;" onclick="CloneLine(this.parentNode.parentNode);" id="TNewLine_' + idJour+ idWorker + '"></input></td>');
//On crée un Input pour la date
$("#Row2_" + idJour+"_"+ idWorker).append('<td><input type="date" style="width: 100%;" id="TDate_' + idJour+"_"+ idWorker + '"></input></td>');
//On crée un Select pour la tache
$.ajax
({
type: 'POST',
data: {id_Jour : idJour,id_Worker : idWorker},
async: false,
url:'TSRequest.ajx.php',
success:function(data) { $("#Row2_" + idJour+"_"+ idWorker).append('<td>'+data+'</td>');},
error: function(error){alert("Erreur : " + error);}
});
//On crée un Input pour le Temps
$("#Row2_" + idJour+"_"+ idWorker).append('<td><input type="text" style="width: 100%;" id="TTime_' + idJour+"_"+ idWorker + '"></input>');
//On crée une Zone de texte pour la description
$("#Row2_" + idJour+"_"+ idWorker).append('<td><textarea rows="2" cols="25" style="resize: none;" id="TTADescription_' + idJour+"_"+ idWorker + '"></textarea></td>');
//On crée un Select pour l employer
$("#Row2_" + idJour+"_"+ idWorker).append('<td><input type="text" style="width: 100%;" id="TSWorker_' + idJour+"_"+ idWorker + '"></input>');
// On met le nom de l'employer sélectionner dans l'input TSWorker+idJour+idWorker
$("#TSWorker_"+idJour+"_"+ idWorker).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).val(dateText);
}
function AffichDiv(idJour,idWorker)
{
//On masque TOUS les tableaux
$('div[name="MesTBL"]').hide();
// On affiche celui que l'on a selectionné
$('#myDiv_' + "TJour_" + idJour+"_"+ idWorker).show();
}
function CloneLine(Line)
{
newLine = Line.cloneNode(true);
Line.parentNode.insertBefore(newLine,Line);
//Line.parentNode.appendChild(newLine);
}
</script>
EnguerrandP
Messages postés295Date d'inscriptionvendredi 26 avril 2013StatutMembreDernière intervention15 juillet 20151 17 avril 2014 à 10:06
J'ai donc réussit à séparer les information de l'option de mon select en trois morceau : id,lastname, firstname
grâce à un spilt()
puis je ré assemble les morceaux comme je le souhaite en combinant mes différent élément.
16 avril 2014 à 17:16
merci