par
cobra2930 » 16 juin 2011, 08:53
PS : ce n'est qu'un détail mais comment faire pour que lorsque l'on recherche une feuille de présence existante le motif que l'on a choisis pour une absence s'affiche?car la pour l'instant le motif fonctionne dans l'attestation ou dans la consultation mais je sais comment l'afficher dans "formAssiduite".
Tu ajoutes une colonne dans la table HTML qui affiche les assiduités avec un champ texte pour saisir le motif par étudiant comme on a fait pour les cases à cocher "absent/présent". Et dans le SQL qui fait insert et update il faut prendre en considération le nouveau champ motif.
voici ce qu'il y a dans fonction_formAssiduite.php :
// Nouvel enregistrement ou Mise à jour
if ($mode_ajout==true){
$sql="INSERT INTO assiduite SET date='".$date."', idEtudiant='".$idEtudiant."',
presence_mat_t1='".$presence_mat_t1."',
presence_mat_t2='".$presence_mat_t2."',
presence_amidi_t1='".$presence_amidi_t1."',
presence_amidi_t2='".$presence_amidi_t2."',
motif = '".addslashes($motif)."',
nomProf_mat_t1 = '".$nomProf_mat_t1."',
nomProf_mat_t2 = '".$nomProf_mat_t2."',
nomProf_amidi_t1 = '".$nomProf_amidi_t1."',
nomProf_amidi_t2 = '".$nomProf_amidi_t2."',
nomMatiere_mat_t1 = '".$nomMatiere_mat_t1."',
nomMatiere_mat_t2 = '".$nomMatiere_mat_t2."',
nomMatiere_amidi_t1 = '".$nomMatiere_amidi_t1."',
nomMatiere_amidi_t2 = '".$nomMatiere_amidi_t2."';";
} else {
$sql="UPDATE assiduite SET
presence_mat_t1='".$presence_mat_t1."',
presence_mat_t2='".$presence_mat_t2."',
presence_amidi_t1='".$presence_amidi_t1."',
presence_amidi_t2='".$presence_amidi_t2."',
motif = '".addslashes($motif)."',
nomProf_mat_t1 = '".$nomProf_mat_t1."',
nomProf_mat_t2 = '".$nomProf_mat_t2."',
nomProf_amidi_t1 = '".$nomProf_amidi_t1."',
nomProf_amidi_t2 = '".$nomProf_amidi_t2."',
nomMatiere_mat_t1 = '".$nomMatiere_mat_t1."',
nomMatiere_mat_t2 = '".$nomMatiere_mat_t2."',
nomMatiere_amidi_t1 = '".$nomMatiere_amidi_t1."',
nomMatiere_amidi_t2 = '".$nomMatiere_amidi_t2."'
WHERE date='".$date."' AND idEtudiant='".$idEtudiant."';";
}
ensuite je n'est pas très bien compris ce qu'il faut faire par la suite, moi actuellement j'ai ça :
// LISTE DES ÉLÈVES DE LA CLASSE SÉLECTIONNÉE
$listeAssiduiteEtudiants = "";
if (isset($idClasse) && isset($date))
{
// on fait une jointure externe à gauche du côté de la table client vers la table assiduité
// pour afficher tous les étudiants de la classe même si les données de présence sont NULL (cas nouvelle saisie)
$sql = "SELECT a.*, total_ha.*, e.*
FROM etudiant e LEFT OUTER JOIN assiduite a ON e.idEtudiant=a.idEtudiant AND a.date=date('".$date."')
LEFT OUTER JOIN total_heures_absence total_ha ON e.idEtudiant=total_ha.idEtudiant
WHERE e.idClasse = '".$idClasse."'
ORDER BY e.nom, e.prenom";
//echo $sql;
$result = mysql_query($sql) or die(mysql_error());
while($result && $row=mysql_fetch_array($result))
{
// si les données d'assiduité sont NULL (surtout la date) alors il s'agit d'une nouvelle feuille de présence
// sinon affiche l'absence sous 4 tranches horaires : 2 le matin(mat_t1 et mat_t2) et 2 l'après-midi(amidi_t1 et amidi_t2)
if (is_null($row["date"])) $mode_ajout = true; else $mode_ajout = false;
// stat du total des nbre_heures_absence
$motif = $row['motif'];
$nbre_heures_absence = $row['nbre_heures_absence'];
//
$nomProf_mat_t1 = $row['nomProf_mat_t1'];
$nomProf_mat_t2 = $row['nomProf_mat_t2'];
$nomProf_amidi_t1 = $row['nomProf_amidi_t1'];
$nomProf_amidi_t2 = $row['nomProf_amidi_t2'];
//
$nomMatiere_mat_t1 = $row['nomMatiere_mat_t1'];
$nomMatiere_mat_t2 = $row['nomMatiere_mat_t2'];
$nomMatiere_amidi_t1 = $row['nomMatiere_amidi_t1'];
$nomMatiere_amidi_t2 = $row['nomMatiere_amidi_t2'];
//
$mat_t1_checked = $row['presence_mat_t1']!=1 && !is_null($row['presence_mat_t1']) ? " checked " : "";
$mat_t2_checked = $row['presence_mat_t2']!=1 && !is_null($row['presence_mat_t2']) ? " checked " : "";
$amidi_t1_checked = $row['presence_amidi_t1']!=1 && !is_null($row['presence_amidi_t1']) ? " checked " : "";
$amidi_t2_checked = $row['presence_amidi_t2']!=1 && !is_null($row['presence_amidi_t2']) ? " checked " : "";
//
$listeAssiduiteEtudiants .= "<tr><td>".$row['nom']." ".$row['prenom']."</td>
<td><input type=\"checkbox\" name=\"absences[".$row['idEtudiant']."][mat_t1]\" ".$mat_t1_checked." /> Absent(e)</td>
<td><input type=\"checkbox\" name=\"absences[".$row['idEtudiant']."][mat_t2]\" ".$mat_t2_checked." /> Absent(e)</td>
<td><input type=\"checkbox\" name=\"absences[".$row['idEtudiant']."][amidi_t1]\" ".$amidi_t1_checked." /> Absent(e)</td>
<td><input type=\"checkbox\" name=\"absences[".$row['idEtudiant']."][amidi_t2]\" ".$amidi_t2_checked." /> Absent(e)</td>
<td><SELECT name=\"absences[".$row['idEtudiant']."][motif]\"><option value=\"\"></option><option value=\"personnelle\">personnelle</option><option value=\"médicale\">médicale</option><option value=\"professionnelle\">professionnelle</option><option value=\"injustifiée\">injustifiée</option><option value=\"autre\">autre</option>".($motif)." /></SELECT>
</td>
<td>" . $nbre_heures_absence . "</td></tr>";
}
}
j'ai donc une liste déroulante on l'on choisis la cause de l'absence mais quand je recherche avec cette meme page une feuille de présence existante, le motif n'apparait pas.
[quote="sadeq"]
[quote="cobra2930"]
PS : ce n'est qu'un détail mais comment faire pour que lorsque l'on recherche une feuille de présence existante le motif que l'on a choisis pour une absence s'affiche?car la pour l'instant le motif fonctionne dans l'attestation ou dans la consultation mais je sais comment l'afficher dans "formAssiduite".[/quote]
Tu ajoutes une colonne dans la table HTML qui affiche les assiduités avec un champ texte pour saisir le motif par étudiant comme on a fait pour les cases à cocher "absent/présent". Et dans le SQL qui fait insert et update il faut prendre en considération le nouveau champ motif.[/quote]
voici ce qu'il y a dans fonction_formAssiduite.php :
[php]// Nouvel enregistrement ou Mise à jour
if ($mode_ajout==true){
$sql="INSERT INTO assiduite SET date='".$date."', idEtudiant='".$idEtudiant."',
presence_mat_t1='".$presence_mat_t1."',
presence_mat_t2='".$presence_mat_t2."',
presence_amidi_t1='".$presence_amidi_t1."',
presence_amidi_t2='".$presence_amidi_t2."',
motif = '".addslashes($motif)."',
nomProf_mat_t1 = '".$nomProf_mat_t1."',
nomProf_mat_t2 = '".$nomProf_mat_t2."',
nomProf_amidi_t1 = '".$nomProf_amidi_t1."',
nomProf_amidi_t2 = '".$nomProf_amidi_t2."',
nomMatiere_mat_t1 = '".$nomMatiere_mat_t1."',
nomMatiere_mat_t2 = '".$nomMatiere_mat_t2."',
nomMatiere_amidi_t1 = '".$nomMatiere_amidi_t1."',
nomMatiere_amidi_t2 = '".$nomMatiere_amidi_t2."';";
} else {
$sql="UPDATE assiduite SET
presence_mat_t1='".$presence_mat_t1."',
presence_mat_t2='".$presence_mat_t2."',
presence_amidi_t1='".$presence_amidi_t1."',
presence_amidi_t2='".$presence_amidi_t2."',
motif = '".addslashes($motif)."',
nomProf_mat_t1 = '".$nomProf_mat_t1."',
nomProf_mat_t2 = '".$nomProf_mat_t2."',
nomProf_amidi_t1 = '".$nomProf_amidi_t1."',
nomProf_amidi_t2 = '".$nomProf_amidi_t2."',
nomMatiere_mat_t1 = '".$nomMatiere_mat_t1."',
nomMatiere_mat_t2 = '".$nomMatiere_mat_t2."',
nomMatiere_amidi_t1 = '".$nomMatiere_amidi_t1."',
nomMatiere_amidi_t2 = '".$nomMatiere_amidi_t2."'
WHERE date='".$date."' AND idEtudiant='".$idEtudiant."';";
}[/php]
ensuite je n'est pas très bien compris ce qu'il faut faire par la suite, moi actuellement j'ai ça :
[php]// LISTE DES ÉLÈVES DE LA CLASSE SÉLECTIONNÉE
$listeAssiduiteEtudiants = "";
if (isset($idClasse) && isset($date))
{
// on fait une jointure externe à gauche du côté de la table client vers la table assiduité
// pour afficher tous les étudiants de la classe même si les données de présence sont NULL (cas nouvelle saisie)
$sql = "SELECT a.*, total_ha.*, e.*
FROM etudiant e LEFT OUTER JOIN assiduite a ON e.idEtudiant=a.idEtudiant AND a.date=date('".$date."')
LEFT OUTER JOIN total_heures_absence total_ha ON e.idEtudiant=total_ha.idEtudiant
WHERE e.idClasse = '".$idClasse."'
ORDER BY e.nom, e.prenom";
//echo $sql;
$result = mysql_query($sql) or die(mysql_error());
while($result && $row=mysql_fetch_array($result))
{
// si les données d'assiduité sont NULL (surtout la date) alors il s'agit d'une nouvelle feuille de présence
// sinon affiche l'absence sous 4 tranches horaires : 2 le matin(mat_t1 et mat_t2) et 2 l'après-midi(amidi_t1 et amidi_t2)
if (is_null($row["date"])) $mode_ajout = true; else $mode_ajout = false;
// stat du total des nbre_heures_absence
$motif = $row['motif'];
$nbre_heures_absence = $row['nbre_heures_absence'];
//
$nomProf_mat_t1 = $row['nomProf_mat_t1'];
$nomProf_mat_t2 = $row['nomProf_mat_t2'];
$nomProf_amidi_t1 = $row['nomProf_amidi_t1'];
$nomProf_amidi_t2 = $row['nomProf_amidi_t2'];
//
$nomMatiere_mat_t1 = $row['nomMatiere_mat_t1'];
$nomMatiere_mat_t2 = $row['nomMatiere_mat_t2'];
$nomMatiere_amidi_t1 = $row['nomMatiere_amidi_t1'];
$nomMatiere_amidi_t2 = $row['nomMatiere_amidi_t2'];
//
$mat_t1_checked = $row['presence_mat_t1']!=1 && !is_null($row['presence_mat_t1']) ? " checked " : "";
$mat_t2_checked = $row['presence_mat_t2']!=1 && !is_null($row['presence_mat_t2']) ? " checked " : "";
$amidi_t1_checked = $row['presence_amidi_t1']!=1 && !is_null($row['presence_amidi_t1']) ? " checked " : "";
$amidi_t2_checked = $row['presence_amidi_t2']!=1 && !is_null($row['presence_amidi_t2']) ? " checked " : "";
//
$listeAssiduiteEtudiants .= "<tr><td>".$row['nom']." ".$row['prenom']."</td>
<td><input type=\"checkbox\" name=\"absences[".$row['idEtudiant']."][mat_t1]\" ".$mat_t1_checked." /> Absent(e)</td>
<td><input type=\"checkbox\" name=\"absences[".$row['idEtudiant']."][mat_t2]\" ".$mat_t2_checked." /> Absent(e)</td>
<td><input type=\"checkbox\" name=\"absences[".$row['idEtudiant']."][amidi_t1]\" ".$amidi_t1_checked." /> Absent(e)</td>
<td><input type=\"checkbox\" name=\"absences[".$row['idEtudiant']."][amidi_t2]\" ".$amidi_t2_checked." /> Absent(e)</td>
<td><SELECT name=\"absences[".$row['idEtudiant']."][motif]\"><option value=\"\"></option><option value=\"personnelle\">personnelle</option><option value=\"médicale\">médicale</option><option value=\"professionnelle\">professionnelle</option><option value=\"injustifiée\">injustifiée</option><option value=\"autre\">autre</option>".($motif)." /></SELECT>
</td>
<td>" . $nbre_heures_absence . "</td></tr>";
}
}[/php]
j'ai donc une liste déroulante on l'on choisis la cause de l'absence mais quand je recherche avec cette meme page une feuille de présence existante, le motif n'apparait pas.