Très bien, ton programme est bien construit conceptuellement parlant, maintenant il faut ajouter la requête qui extrait les données d'un élève, son entreprise et sa classe pour une année donnée. Pour cela il suffit de bien rédiger la requête qui doit joindre les tables "eleve" et "entreprise" par le champ "idEntreprise" et sélectionner tous les champs utiles à l'attestation.
Voici la requête :
// attestation (nom eleve, entreprise, nombre heure par mois, jours d'absences)
$sql = "SELECT * FROM eleve t1 JOIN entreprise t2 ON t1.idEntreprise=t2.idEntreprise WHERE t1.annee='". $annee ."' ";
$result = mysql_query($sql) or die(mysql_error());
while($result && $row=mysql_fetch_array($result))
{
// données élève utiles à l'attestation: eleve, entreprise et classe
$idEleve = $row['idEleve'];
$nomEleve = $row['nom'];
$prenomEleve = $row['prenom'];
$civiliteEleve = $row['civilite'];
$idClasse = $row['idClasse'];
}
Puis il faut placer les champs déterminés par le PHP à leur emplacement que t'as prévu dans l'affichage HTML de l'attestation
Mais en fait j'ai remarqué que tu n'aura plus besoin des messages 2 et 3 pour afficher les infos sur les heures d'absence et de présence tu pourras utiliser directement les variables que calculent tes requêtes ($nombreheureabsencemois et $nombreheurepresencemois)
J'ai ajouté aussi un tableau nommé $tab_nomsMois_FR[] qui contient les noms des mois en français, comme ça tu pourra convertir les noms des mois de la date en français et pour cela il suffit de connaitre le n° du mois d'une date par la fonction php :
$mois = inval(date('m', strtotime($date)));
où : strtotime() sert à convertir la variable varchar $date en date valide, la fonction date('m', ...) extrait le n° du mois de la date donnée en second paramètre et intval() convertit le tout en numérique.
En suite, le nom du mois en français d'un numéro de mois donné est calculé par l'instruction :
$nomMois = isset($tab_nomMois_FR[$mois])?$tab_nomMois_FR[$mois]:'';
Donc si le n° du mois est 4, alors le nom en français est "Avril".
Voici la Correction du programme:
<?php
include ("menu.php");
include ("variable.php");
// init variables de travail
$annee = isset($_GET['annee'])? $_GET['annee'] : null;
$idEleve = isset($_GET['idEleve'])? $_GET['idEleve'] : null;
$date = isset($_GET['date'])? $_GET['date'] : null;
$mois = intval(date('m', strtotime($date)));
$tab_nomMois_FR = array(1=>'Janvier',2=>'Février',3=>'Mars',4=>'Avril',5=>'Mai',6=>'Juin',7=>'Juillet',8=>'Août',9=>'Septembre',10=>'Octobre',11=>'Novembre',12=>'Décembre');
$nomMois = $tab_nomMois_FR[$mois];
// connexion à la base de données
mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
mysql_query ('SET NAMES utf8');
// crée la liste des Annees
$listeAnnees = "";
$sql = "SELECT DISTINCT annee FROM eleve ORDER BY annee;";
$result = mysql_query($sql) or die(mysql_error());
while($result && $row=mysql_fetch_array($result))
{
$selected = $row['annee']==$annee? " selected " : "";
$listeAnnees .= "<option value=\"".$row['annee']."\" ".$selected." >".$row['annee']."</option>";
}
// remplissage de la liste des élèves pour l'année sélectionnée
$listeDesEleves = "";
if (!empty($annee)){
$sql = "SELECT * FROM eleve t1 JOIN entreprise t2 ON t1.idEntreprise=t2.idEntreprise WHERE t1.annee='". $annee ."' ";
$result = mysql_query($sql) or die(mysql_error());
while($result && $row=mysql_fetch_array($result))
{
$selected = $row['idEleve']==$idEleve? " selected " : "";
$listeDesEleves .= "<option value=\"".$row['idEleve']."\" ".$selected." >".$row['nom']."</option>";
}
}
//-------------------------------------
// TRAITEMENT DES BOUTON D'ACTION
//-------------------------------------
$message1 = "";
//------------------------------------------
if (isset($_GET['action_attestation']) && !empty($idEleve))
{
// attestation (nom eleve, entreprise, nombre heure par mois, jours d'absences)
$sql = "SELECT * FROM eleve t1 JOIN entreprise t2 ON t1.idEntreprise=t2.idEntreprise WHERE t1.annee='". $annee ."' ";
$result = mysql_query($sql) or die(mysql_error());
while($result && $row=mysql_fetch_array($result))
{
// données élève utiles à l'attestation: eleve, entreprise et classe
$idEleve = $row['idEleve'];
$nomEleve = $row['nom'];
$prenomEleve = $row['prenom'];
$civiliteEleve = $row['civilite'];
$idClasse = $row['idClasse'];
}
$nombreheurepresencemois = 0;
$nombreheureabsencemois = 0;
$sql = "SELECT t1.* , t2.* FROM `nbre_heures_absence` t1 join `eleve` t2 ON t1.idEleve=t2.idEleve
WHERE t1.idEleve = '". $idEleve . "' AND t1.nbre_heures_absence >0 "; $result = mysql_query($sql) or die(mysql_error());
while ($result && $row = mysql_fetch_array($result))
{
// afficher les heures d'absence de l'élève par jour
$message1 .= "<li>Le ". date('d', strtotime($row['date'])). " " .$tab_nomMois_FR[intval(date('m', strtotime($row['date'])))] . " " .date('Y', strtotime($row['date'])). " pendant " . $row['nbre_heures_absence']. " h</li>";
}
$sql = "SELECT * FROM `nb_heures_presence_mois` WHERE mois = '" . $mois . "' AND idEleve = '". $idEleve. "' ";
$result = mysql_query($sql) or die(mysql_error());
if ($result)
{
$row = mysql_fetch_array($result);
$nombreheurepresencemois = $row['nbre_heures_presence'];
}
$sql = "SELECT * FROM `nb_heures_absence_mois` WHERE mois = '" . $mois . "' AND idEleve = '". $idEleve. "' ";
$result = mysql_query($sql) or die(mysql_error());
if ($result)
{
$row = mysql_fetch_array($result);
$nombreheureabsencemois = $row['nbre_heures_absence'];
}
}
//------------------------------------------
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Gestion d'assiduité des élèves</title>
<script language="JavaScript">
function imprime_zone(obj)
{
// Ouvre une nouvelle fenêtre
var f = window.open("", "", "height=500, width=600,toolbar=0, menubar=0, scrollbars=1, resizable=1,status=0, location=0, left=10, top=10");
// Définit le Style de la page
f.document.body.style.color = '#000000';
f.document.body.style.backgroundColor = '#FFFFFF';
f.document.body.style.padding = "10px";
// Affiche le contenu HTML de obj dans le body de la nouvelle fenêtre
f.document.body.innerHTML = document.getElementById(obj).innerHTML;
// Imprime et ferme la fenêtre
f.window.print();
f.window.close();
return true;
}
</script>
</head>
<body>
<div class="main2">
<h1>Consultation d'assiduité des élèves</h1>
<div id='feuille_absence'>
<form name="form1">
<table>
<tr>
<th>
Année :
</th>
<th>
<select name="annee" onChange="form1.submit();" value="<?php echo $annee; ?>" >
<option value="" ></option>
<?php echo $listeAnnees; ?>
</select>
</th>
</tr>
<tr>
<th>
Eleve :
</th>
<th>
<select name="idEleve" value="<?php echo isset($idEleve)?$idEleve:null; ?>" >
<option value="" >
</option>
<?php echo isset($listeDesEleves)?$listeDesEleves:null; ?>
</select>
</th>
<th>
<br/>
<input type="submit" name="action_attestation" value="Total absences">
<br /><br />
</th>
<th rowspan="2">
</th>
</tr>
<tr>
<th>
Date :
</th>
<th>
<br />
<input type="text" id="dateLib" name="date" value="<?php echo isset($date)?$date:null; ?>" style="width:180px"
onfocus="visuCal(this,{'format' : '%j-%m-%a'})" onblur="masqueCal(this);" />
<br /><br />
</th>
<th> <br/>
</th>
</tr>
</table>
<input type="button" value="Imprimer" onClick="imprime_zone('attestation');">
</form>
<div id="messag"> <?php echo isset($message2)?$message2:''; ?></div>
<br/><br/>
</div>
<div id="attestation">
<h1><u>Attestation</u></h1>
<br/><br/><br/>
Période : <?php echo isset($nomMois)?$nomMois:''; ?> <?php echo isset($annee)?$annee:''; ?>
<br/>
<br/>
Relevé de présence : <br/><br/>
Je soussigné M.______________ , en qualité de directeur de _____________ , Institut Supérieur de Commerce et Gestion [...] certifie que :
<br/>
<br/>
<?php echo isset($civiliteEleve)?$civiliteEleve:''; ?> <?php echo isset($nomEleve)?$nomEleve:''; ?> <?php echo isset($prenomEleve)?$prenomEleve:''; ?> inscrit(e) en <?php echo isset($idClasse)?$idClasse:''; ?>
<br/>
<br/>
A été présent(e) <?php echo isset($nombreheurepresencemois)?$nombreheurepresencemois:'0'; ?>H
<br/>
<br/>
Relevé d'Absence :
<br/>
Total des absences : <?php echo isset($nombreheureabsencemois)?$nombreheureabsencemois:'0'; ?>H
<div id="message1"><?php echo isset($message1)?$message1:''; ?></div>
<br/><br/>
<br/><br/>
<br/><br/>
<table border="0" width="100%">
<tr><th>Le Salarié</th><th>Le Directeur de l'établissement</th></tr>
<tr><th><?php echo isset($nomEleve)?$nomEleve:''; ?> <?php echo isset($prenomEleve)?$prenomEleve:''; ?></th><th></th></tr>
</table>
</div>
</div>
</body>
</html>