gestion absences/presences en php

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

18 mai 2011, 21:16

dsl de poser une question peut être toute simple mais je n'arrive pas a relier mes deux tables : "eleve"( idEleve, nom, prenom, classe, annee, promotion, redoublement, adresse, code_postal, ville, portable, mail, date_de_naissance) et "entreprise" (idEntreprise, nom_etr, adresse, code_postal, ville, tel, mail, tuteur) et je sais pas si c'est possible mais j'aimerais que l'entreprise soit lié a l'élève et que quand je voudrais afficher les donnée de l'élève,(dans mon attestation) l'entreprise qui est lié a l'élève se mette sur le fichier ou la page.
dans mon cas c'est exactement ce que tu as dit, il sont en bts alternance , mais il faut bien faire une requète SQL dans la base de donnée pour faire une jointure au préalable ou alors on utilise directement cette requète?
faut il que je rajoute un champ dans élève ou entreprise?
Comme tu as déjà les tables "eleve" et "entreprise" il suffit d'ajouter, comme j'ai dit, un champ nommé "idEntreprise" dans la table "eleve" pour assurer la relation. En suite c'est la requête :
$sql = "SELECT * FROM eleve t1 JOIN entreprise t2 ON t1.idEntreprise=t2.idEntreprise WHERE t1.idEleve ='" . $idEleve. "' ";
qui permettra de sélectionner un élève et son entreprise.

Voici comment la structure générale des tables "eleve" et "entreprise" mises en relation par "idEntreprise":
Table "eleve"( idEleve, nom, prenom, classe, annee, promotion, redoublement, adresse, code_postal, ville, portable, mail, date_de_naissance, idEntreprise)

Table "entreprise" (idEntreprise, nom_etr, adresse, code_postal, ville, tel, mail, tuteur)
pour que par exemple quand je veux modifier les données de l'entreprise je puisse modifier l'élève qui est dedans?
La modification des données d'une entreprise peut se faire sans toucher à l'élève car dans tous les cas de modifications l'idEentreprise n'est jamais modifié quand une entreprise existe déjà dans la table.
Si tu modifie le champ "idEntreprise" qui se trouve dans la table "eleve" c'est pour réaffecter un élève à une autre entreprise existante.

Dans la logique de remplissage de la base, on commence d'abord par l'enregistrement des données des entreprises avec lesquelles on travaille en formation et ensuite on enregistre les élèves dont chacun est affecté à une et une seule entreprise dans un temps donné. Si l'élève change d'entreprise, il suffit de le réaffecter à une autre entreprise préalablement enregistrée dans la table "entreprise" en modifiant simplement la valeur du champ "idEntreprise" de la table "eleve" correspondant à l'élève concerné.
Quand les données d'une entreprise changent comme par exemple : le téléphone, l'email ou même l'adresse il suffit de modifier ces champs dans la table "entreprise" mais en aucun cas l'idEntreprise n'est modifié. Car par définition, les valeurs des clé primaires ne doivent pas être modifiées quand elles existent car elles peuvent être associées à des relations avec d'autres tables.

J'espère que tu as compris maintenant le système relationnelle des tables dans une base de données relationnelle.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

19 mai 2011, 11:03

dsl de poser une question peut être toute simple mais je n'arrive pas a relier mes deux tables : "eleve"( idEleve, nom, prenom, classe, annee, promotion, redoublement, adresse, code_postal, ville, portable, mail, date_de_naissance) et "entreprise" (idEntreprise, nom_etr, adresse, code_postal, ville, tel, mail, tuteur) et je sais pas si c'est possible mais j'aimerais que l'entreprise soit lié a l'élève et que quand je voudrais afficher les donnée de l'élève,(dans mon attestation) l'entreprise qui est lié a l'élève se mette sur le fichier ou la page.
dans mon cas c'est exactement ce que tu as dit, il sont en bts alternance , mais il faut bien faire une requète SQL dans la base de donnée pour faire une jointure au préalable ou alors on utilise directement cette requète?
faut il que je rajoute un champ dans élève ou entreprise?
Comme tu as déjà les tables "eleve" et "entreprise" il suffit d'ajouter, comme j'ai dit, un champ nommé "idEntreprise" dans la table "eleve" pour assurer la relation. En suite c'est la requête :
$sql = "SELECT * FROM eleve t1 JOIN entreprise t2 ON t1.idEntreprise=t2.idEntreprise WHERE t1.idEleve ='" . $idEleve. "' ";
qui permettra de sélectionner un élève et son entreprise.

Voici comment la structure générale des tables "eleve" et "entreprise" mises en relation par "idEntreprise":
Table "eleve"( idEleve, nom, prenom, classe, annee, promotion, redoublement, adresse, code_postal, ville, portable, mail, date_de_naissance, idEntreprise)

Table "entreprise" (idEntreprise, nom_etr, adresse, code_postal, ville, tel, mail, tuteur)
pour que par exemple quand je veux modifier les données de l'entreprise je puisse modifier l'élève qui est dedans?
La modification des données d'une entreprise peut se faire sans toucher à l'élève car dans tous les cas de modifications l'idEentreprise n'est jamais modifié quand une entreprise existe déjà dans la table.
Si tu modifie le champ "idEntreprise" qui se trouve dans la table "eleve" c'est pour réaffecter un élève à une autre entreprise existante.

Dans la logique de remplissage de la base, on commence d'abord par l'enregistrement des données des entreprises avec lesquelles on travaille en formation et ensuite on enregistre les élèves dont chacun est affecté à une et une seule entreprise dans un temps donné. Si l'élève change d'entreprise, il suffit de le réaffecter à une autre entreprise préalablement enregistrée dans la table "entreprise" en modifiant simplement la valeur du champ "idEntreprise" de la table "eleve" correspondant à l'élève concerné.
Quand les données d'une entreprise changent comme par exemple : le téléphone, l'email ou même l'adresse il suffit de modifier ces champs dans la table "entreprise" mais en aucun cas l'idEntreprise n'est modifié. Car par définition, les valeurs des clé primaires ne doivent pas être modifiées quand elles existent car elles peuvent être associées à des relations avec d'autres tables.

J'espère que tu as compris maintenant le système relationnelle des tables dans une base de données relationnelle.
j'ai bien compris et c'est bien ce que j'avais commencer a faire.
Par contre je crois que je me suis tromper pour remplir le champ "idEntreprise" dans "ajouter_eleve.php" :
// crée la liste des entreprise
		$listeEntreprises = "";
		$sql = "SELECT DISTINCT idEntreprise FROM entreprise ORDER BY idEntreprise;";
		$result = mysql_query($sql) or die(mysql_error());
		while($result && $row=mysql_fetch_array($result))
		{
				$selected = $row['idEntreprise']==$idEntreprise? " selected " : "";
				$listeEntreprises .= "<option value=\"".$row['idEntreprise']."\" ".$selected." >".$row['idEntreprise']."</option>";
		}
Entreprise : 
				</th>
				<th align="left">
					<select name="idEntreprise" value="<?php echo $idEntreprise; ?>" >
					<option value="" ></option>
					<?php echo $listeEntreprises; ?>
					</select><FONT color="red">&nbsp;*</FONT>
				</th>

mais peut être pas.en faite je voudrais être sur que les deux champs sont relier.alors que je n'est pas fait de jointure.

sinon pour ce qui s'agit de attestation en impression je dois faire comment ?car je n'est pas tout compris ce que tu m'as expliqué auparavant.

et est ce que lorsque je vais choisir l'élève pour faire mon attestation, son entreprise lié va être écrite sur mon attestation?
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

19 mai 2011, 20:42

mais peut être pas.en faite je voudrais être sur que les deux champs sont reliés. alors que je n'est pas fait de jointure.
La partie du programme que tu as affiché est correcte. tu remplie une liste des entreprises pour pouvoir choisir l'idEntreprise pour l'élève ajouté. c'est très bien ça. Mais tu as oublié de nous montrer le code php d'ajout des données élèves, c'est là où on verra si tu as bien affecté l'idEntreprise à l'élève ajouté dans la table "eleve". Et c'est ça la relation.
sinon pour ce qui s'agit de attestation en impression je dois faire comment ?car je n'est pas tout compris ce que tu m'as expliqué auparavant.
et est ce que lorsque je vais choisir l'élève pour faire mon attestation, son entreprise lié va être écrite sur mon attestation?
Bien sûr que cela dépend du cas que tu traite et donc des informations que l'attestation doit afficher. Si les infos entreprise de l'élève doivent être affichées, alors la réponse est oui. Je ne peux rien te redire de plus sur l'impression sans voir le code que tu as fait pour cette fameuse attestation.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

20 mai 2011, 10:32

mais pour l'instant je n'est rien fait car je sais pas comment la faire cette attestation.je ne comprend pas comment récupéré mes valeur avec print etc.ce que je veux dans cette attestation c'est que j'aille dans ma consultation d'absence, que je choisisse l'élève désiré et que la il me fasse une fiche avec en haut a droite son entreprise avec l'adresse, son nom, ses nombre d'heure d'absences, et les jour où il a été absent.


Sinon pour le code de ajout élève le voila :
<?php
	$nom = isset($_GET['nom']) && !empty($_GET['nom'])? $_GET['nom'] : null;
	$idClasse = isset($_GET['idClasse']) && !empty($_GET['idClasse'])? $_GET['idClasse'] : null;
	$annee = isset($_GET['annee']) && !empty($_GET['annee'])? $_GET['annee'] : null;
	$promotion = isset($_GET['promotion']) && !empty($_GET['promotion'])? $_GET['promotion'] : null;
	$redoublement = isset($_GET['redoublement']) && !empty($_GET['redoublement'])? $_GET['redoublement'] : null;
	$prenom = isset($_GET['prenom']) && !empty($_GET['prenom'])? $_GET['prenom'] : null;
	$adresse = isset($_GET['adresse']) && !empty($_GET['adresse'])? $_GET['adresse'] : null;
	$code_postal = isset($_GET['code_postal']) && !empty($_GET['code_postal'])? $_GET['code_postal'] : null;
	$ville = isset($_GET['ville']) && !empty($_GET['ville'])? $_GET['ville'] : null;
	$portable = isset($_GET['portable']) && !empty($_GET['portable'])? $_GET['portable'] : null;
	$mail = isset($_GET['mail']) && !empty($_GET['mail'])? $_GET['mail'] : null;
	$date_de_naissance = isset($_GET['date_de_naissance']) && !empty($_GET['date_de_naissance'])? $_GET['date_de_naissance'] : null;
	$idEntreprise = isset($_GET['idEntreprise']) && !empty($_GET['idEntreprise'])? $_GET['idEntreprise'] : null;
	$nom_entr = isset($_GET['nom_entr']) && !empty($_GET['nom_entr'])? $_GET['nom_entr'] : null;

		// on se connecte à notre base
	   // $base = mysql_connect ('serveur', 'login', 'pass');  
		//mysql_select_db ('ma_base', $base) ;  
		mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
?>
<?php


		// crée la liste des entreprise
		$listeEntreprises = "";
		$sql = "SELECT * FROM entreprise";
		$result = mysql_query($sql) or die(mysql_error());
		while($result && $row=mysql_fetch_array($result))
		{
				$selected = $row['idEntreprise']==$idEntreprise? " selected " : "";
				$listeEntreprises .= "<option value=\"".$row['idEntreprise']."\" ".$selected." >".$row['nom_entr']."</option>";
		}
			// enregistrer la saisie du formulaire
		if (isset($_GET['action']) && $_GET['action']=='Enregistrer')
		{
			//
			$message = "";
			if (empty($nom)) $message .= "<p>Le nom est obligatoire !</p>";
			if (empty($prenom)) $message .= "<p>Le prenom est obligatoire !</p>";
			if (empty($idClasse)) $message .= "<p>La classe est obligatoire !</p>";
			if (empty($annee)) $message .= "<p>L'annee est obligatoire !</p>";
			if (empty($promotion)) $message .= "<p>La promotion est obligatoire !</p>";

			
			if (empty($message))
			{
			  $sql = 'INSERT INTO eleve (nom, prenom, idClasse, annee, promotion, redoublement, adresse, code_postal, ville, portable, mail, date_de_naissance, idEntreprise) VALUES ("'.$nom.'", "'.$prenom.'", "'.$idClasse.'","'.$annee.'","'.$promotion.'","'.$redoublement.'", "'.$adresse.'", "'.$code_postal.'", "'.$ville.'", "'.$portable.'", "'.$mail.'", "'.$date_de_naissance.'", "'.$idEntreprise.'")'; 
			  
			  			$result = mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
			//echo $sql;
			if(!$result);

				if (empty($message)) $message = "Enregistrement effectué avec succès";
                else $message = "<p>Les Erreurs suivantes sont rencontrées :</ul>" . $message . "</ul></p>";
			}
				   
		}				
		// fin de connexion
		mysql_close();
?> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Ajout d'élève dans la base</title>
<link rel="stylesheet" type="text/css" href="calendrier.css">
<script type="text/javascript" src="calendrier.js"></script>
  <link href="/index.php?format=feed&type=rss" rel="alternate" type="application/rss+xml" title="RSS 2.0" />
  <link href="/index.php?format=feed&type=atom" rel="alternate" type="application/atom+xml" title="Atom 1.0" />
  <script type="text/javascript" src="/media/system/js/mootools.js"></script>
  <script type="text/javascript" src="/media/system/js/caption.js"></script>
	<link rel="stylesheet" type="text/css" href="css/content.css">
	<link rel="stylesheet" type="text/css" href="css/current.css">
	<link rel="stylesheet" type="text/css" href="css/form.css">
	<link rel="stylesheet" type="text/css" href="css/html_code.css">
	<link rel="stylesheet" type="text/css" href="css/menu.css">
	<link rel="stylesheet" type="text/css" href="css/message.css">
	<link rel="stylesheet" type="text/css" href="css/module.css">
	<link rel="stylesheet" type="text/css" href="css/page_nav.css">
	<link rel="stylesheet" type="text/css" href="css/print.css">
	<link rel="stylesheet" type="text/css" href="css/template.css">
	
</head>
<body>
	<div class="main">
		<div class="logo">
		  <blockquote>
		    <blockquote>
		      <p>						 		<img src="images/banniere.jpg" width="1133" height="138" alt="banniere" />
	          </p>
	        </blockquote>
	      </blockquote>
	  </div>
		<br/><br/>
	
			<div class="leftmod">
				<div class="leftmod2">		
					<div class="module_menu">
						<div>
							<div>
								<div>
																<h3>Menu Principal</h3>
														<ul class="menu">
														  <li id="current" class="active item1"><a href="index.php"><span>Accueil</span></a></li>
														  <li class="parent item27"><a href="formAssiduite.php"><span> Gestion d'assiduité</span></a></li>
														  <li class="item2"><a href="consultation_d_assiduite.php"><span>Consultation d'assiduite</span></a></li>
														  <li class="item37"><a href="gestion_eleves.php"><span>Gestion des élèves</span></a></li>
														  <li class="item37"><a href="gestion_profs.php"><span>Gestion des profs</span></a></li>
														  <li class="item37"><a href="gestion_matiere.php"><span>Gestion des matieres</span></a></li>
														  <li class="item37"><a href="gestion_entreprise.php"><span>Gestion des entreprises</span></a></li>
														</ul>					
								</div>

							</div>
						</div>
					</div>
					<div class="module_menu">
						<div>
							<div>
								<div>
																<h3>Ressources</h3>

														<ul class="menu">
														  <li class="item11"><a href="modeles.php"><span>Modèles</span></a></li>
														  <li class="item12"><a href=""><span></span></a></li>
														  <li class="item13"><a href=""><span></span></a></li>
														  <li class="item17"><a href=""><span></span></a></li>
														</ul>					
								</div>
							</div>
						</div>
					</div>
				</div>
			</div>
			<br/><br/>
		<div class="main2">
		<h1>Ajout d'élève dans la base</h1><br/><br/>
	

			<form name="form2" action="" method="get" align="left">
			<table align="left">
			<tr align="left">
				<th>
				Nom : 
				</th>
				<th align="left">
					<input type="text" id="nom" name="nom" value=""/><FONT color="red">&nbsp;*</FONT>
				</th>
			</tr>
			<tr>
				<th align="left">
				Prenom :
				</th>
				<th>				
					<input type="text" id="prenom" name="prenom" value=""/><FONT color="red">&nbsp;*</FONT>
				</th>
			</tr>
			<tr>
				<th align="left">
				Classe : 
				</th>
				<th>
					<input type="text" id="idClasse" name="idClasse" value=""/><FONT color="red">&nbsp;*</FONT>
				</th>
		</tr>
		<tr>
			<th align="left">
				annee :
				</th>
				<th>
					<input type="text" id="annee" name="annee" value=""/><FONT color="red">&nbsp;*</FONT>
				</th>
		</tr>
		<tr>
			<th align="left">
				promotion :
				</th>
				<th>
					<input type="text" id="promotion" name="promotion" value=""/><FONT color="red">&nbsp;*</FONT>
				</th>
		</tr>
		<tr>
			<th align="left">
				redoublement : 
				</th>
				<th align="left">
				<input type="text" id="redoublement" name="redoublement" value=""/>
				</th>
		</tr>
		<tr>
			<th align="left">
				Adresse :
				</th>
				<th align="left">
				<input type="text" id="adresse" name="adresse" value=""/>
				</th>
		</tr>
		<tr>
			<th align="left">
				Code postal : 
				</th>
				<th align="left">
				<input type="text" id="code_postal" name="code_postal" value=""/>
				</th>
		</tr>
		<tr>
			<th align="left">
				Ville : 
				</th>
				<th align="left">
				<input type="text" id="ville" name="ville" value=""/>
				</th>
		</tr>
		<tr>
			<th align="left">
				Portable :
				</th>
				<th align="left">
				<input type="text" id="portable" name="portable" value=""/>
				</th>
		</tr>
		<tr>
			<th align="left">
				Mail :
				</th>
				<th align="left">
				<input type="text" id="mail" name="mail" value=""/>
				</th>
		</tr>
		<tr>
			<th align="left">
				Date de naissance : 
				</th>
				<th align="left">
				<input type="text" id="date_de_naissance" name="date_de_naissance" value=""/>
				</th>
		</tr>
		<tr>
				<th align="left">
				Entreprise : 
				</th>
				<th align="left">
					<select name="nom_entr" value="<?php echo $idEntreprise; ?>" >
					<option value="" ></option>
					<?php echo $listeEntreprises; ?>
					</select><FONT color="red">&nbsp;*</FONT>
				</th>
		</tr>
		<br/>
		</table>
			
				<br/><br/><FONT color="red">&nbsp;*</FONT>=champ obligatoire.
				<input type="submit" name="action" value="Enregistrer" />
			</form>
			
		<br/><div id="message"><?php echo isset($message)?$message:''; ?></div>
			
		</div>
	</div>
</body>

</html>

est ce que tu pourrais me donner le schéma fonctionnel de ma base stp?car je n'arrive pas a le faire.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

20 mai 2011, 11:51

T'as une erreur logique dans ton programme d'ajout de l'élève ici :
                              <th align="left">
                                        <select name="nom_entr" value="<?php echo $idEntreprise; ?>" >
                                        <option value="" ></option>
                                        <?php echo $listeEntreprises; ?>
                                        </select><FONT color="red">&nbsp;*</FONT>
                                </th>
La zone de liste <select> doit avoir comme nom : name="idEntreprise" car c'est ce nom que tu récupère dans php par $_GET['idEntreprise'] et dans ta requête d'ajout. Sinon ça marchera pas.

Ce qu'il faut comprendre pour le fonctionnement de cette liste déroulante c'est que tu l'a programmée pour afficher les noms des entreprises et en même temps pour transmettre l'idEntreprise (valeur mise dans Value de <option>) quand une entreprise sera choisie (Et ça c'est bien fait au niveau du remplissage de la liste, Bravo) Seulement pour que ça soit cohérent il faut que le nom de la liste corresponde à la valeur transmise et non à celle affichée, c'est à dire que le nom de ta liste doit être : name="idEntreprise" et non "nom_entr".

ps: sinon, question subsidiaire: pourquoi flingues-tu Tony dans ta signature? :mrgreen:
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

22 mai 2011, 21:58

T'as une erreur logique dans ton programme d'ajout de l'élève ici :
                              <th align="left">
                                        <select name="nom_entr" value="<?php echo $idEntreprise; ?>" >
                                        <option value="" ></option>
                                        <?php echo $listeEntreprises; ?>
                                        </select><FONT color="red">&nbsp;*</FONT>
                                </th>
La zone de liste <select> doit avoir comme nom : name="idEntreprise" car c'est ce nom que tu récupère dans php par $_GET['idEntreprise'] et dans ta requête d'ajout. Sinon ça marchera pas.

Ce qu'il faut comprendre pour le fonctionnement de cette liste déroulante c'est que tu l'a programmée pour afficher les noms des entreprises et en même temps pour transmettre l'idEntreprise (valeur mise dans Value de <option>) quand une entreprise sera choisie (Et ça c'est bien fait au niveau du remplissage de la liste, Bravo) Seulement pour que ça soit cohérent il faut que le nom de la liste corresponde à la valeur transmise et non à celle affichée, c'est à dire que le nom de ta liste doit être : name="idEntreprise" et non "nom_entr".

ps: sinon, question subsidiaire: pourquoi flingues-tu Tony dans ta signature? :mrgreen:
d'accord merci!!
Pour l'attestation je crois savoir comment faire : je vais mettre plusieurs requête SQL dans un seul bouton :
<?php
include ("menu.php"); 
include ("variable.php"); 

// 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 systématique de la liste des élèves
$listeDesEleves = "";
$sql = "SELECT * FROM eleve";
$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 = "";
$message2 = "";
$message3 = "";
//------------------------------------------
if (isset($_GET['action_attestation']) && !empty($idEleve))
{
        // attestation (nom eleve, entreprise, nombre heure par mois, jours d'absences)
		
		$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 .= "<p>l'élève " . $row['nom']. " a été absent le : " . date('d M Y', strtotime($row['date'])). "  pendant " . $row['nbre_heures_absence']. " h</p>";

		}
		
        $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'];
        }
        $message2 = "	Nombre d'heures de présence du mois : " . $nombreheurepresencemois . "H";
		
		$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'];
        }
        $message3 = "	Nombre d'heures d'absence du mois : " . $nombreheureabsencemois . "H";
}



//------------------------------------------

?>

<!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>
			<br/><br/>
		<div class="main2">
			<h1>Consultation d'assiduité des élèves</h1>

			<div id='feuille_absence'>
				
			<form name="form1">
				<table>
					<tr>
						<th>
						
						&nbsp;&nbsp;&nbsp;&nbsp;Année :&nbsp;
						</th>
						<th>
							<select name="annee" onChange="form1.submit();" value="<?php echo $annee; ?>" >
							<option value="" ></option>
							<?php echo $listeAnnees; ?>
							</select>
						</th>
					</tr>
					<tr>
						<th>
						&nbsp;&nbsp;&nbsp;&nbsp;Eleve :&nbsp;
						</th>
						<th>
						
							<select name="idEleve" onchange="form1.submit();" 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">
						<div id="message">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo isset($message1)?$message1:''; ?></div>
					
						</th>
					</tr>	
					<tr>
						<th>
							&nbsp;&nbsp;&nbsp;&nbsp;Date :&nbsp; 
						</th>
						<th>
							<br />
							&nbsp;&nbsp;&nbsp;&nbsp;<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);"  />&nbsp;&nbsp;&nbsp;&nbsp;
							<br /><br /> 
						</th>
						<th> <br/>
						</th>
					</tr>
				</table>
							&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value="Imprimer" onClick="imprime_zone('feuille_absence');">

				
									
					
			</form>
				<div id="messag">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo isset($message2)?$message2:''; ?></div>
			<br/><br/>
			
		</div>
	
	
	<h1><u>Attestation</u></h1>
	<br/><br/><br/>
	
	Période : //mois de l'attestation
	<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/>
	M //civilité de l'étudiant// //Nom de l'étudiant// //Prénom de l'étudiant// inscrit en //classe de l'étudiant//
	<br/>
	<br/>
	A été présent(e) //nombre d'heures de présence du mois// 	<div id="message2"><?php echo isset($message2)?$message2:''; ?></div>

	<br/>
	<br/>
	Relevé d'Absence : 
	<br/>
	Total des absences : //nombre heures d'absences du mois//<div id="message3"><?php echo isset($message3)?$message3:''; ?></div>

	
	//Jours d'absences//
							<div id="message1"><?php echo isset($message1)?$message1:''; ?></div>

	
	<br/>
	<br/><br/>
	<br/><br/>
	<br/><br/>
	<br/>
	Le Salarié												Le Directeur de l'établissement
	<br/>
	//Nom de l'étudiant// //Prénom de l'étudiant//
	
	
	
	</div>
</body>

</html>
mais je n'arrive pas a le faire pour retrouver les informations de l'entreprise, ou le nom de l'élève et j'aimerais que le tout s'affiche dans une nouvelle page.

ça n'a pas trop a voir mais je n'arrive pas a trouver comment faire pour afficher la classe par rapport a l'année sélectionnée et aussi afficher les élèves par rapport a l'année selectionnée


ps: sinon, question subsidiaire: pourquoi flingues-tu Tony dans ta signature? :mrgreen:

lol c'est pas que je flingue Tony, c'est juste que Tony c'est mon surnom et je trouvais l'émoticone cool!LOL!!
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Eléphant du PHP | 150 Messages

23 mai 2011, 09:26

en faite c'est presque bon, j'ai réussi mais pas pour tout!!j'arrive a afficher sa civilité(que j'ai rajouté), son nom, son prénom, ses heure de présences du mois et ses heures d'absences du mois mais je ne sais pas la requête pour afficher ses jours d'absences du mois et aussi pour afficher les donnée de l'entreprise vu qu'elle ne se trouve pas dans la même table.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

23 mai 2011, 10:40

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 :wink:

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>
						
						&nbsp;&nbsp;&nbsp;&nbsp;Année :&nbsp;
						</th>
						<th>
							<select name="annee" onChange="form1.submit();" value="<?php echo $annee; ?>" >
							<option value="" ></option>
							<?php echo $listeAnnees; ?>
							</select>
						</th>
					</tr>
					<tr>
						<th>
						&nbsp;&nbsp;&nbsp;&nbsp;Eleve :&nbsp;
						</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>
							&nbsp;&nbsp;&nbsp;&nbsp;Date :&nbsp; 
						</th>
						<th>
							<br />
							&nbsp;&nbsp;&nbsp;&nbsp;<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);"  />&nbsp;&nbsp;&nbsp;&nbsp;
							<br /><br /> 
						</th>
						<th> <br/>
						</th>
					</tr>
				</table>
							&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value="Imprimer" onClick="imprime_zone('attestation');">

				
									
					
			</form>
				<div id="messag">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?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>
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

23 mai 2011, 11:44

Merci pour tous ça mais je ne peux pas vraiment tester car j'ai voulu modifier ma variable table "eleve" en "etudiant" et donc "idEleve" en "idEtudiant"

mais j'ai un problème : a.idEtudiant' in 'on clause' !! cela viens de quoi?sachant que j'ai bien recréer ma table eleve et que j'ai modifier mes variable "eleve" de partout grâce au "ctrl + f" .et j'ai aussi recréer une base qui s'appelle désormais "bd_etudiants", et j'ai aussi fais la modification de partout.

j'ai tester en mettant sur une nouvelle page mais la liste des étudiant par rapport a la classe ne se fait pas.

Ps: est ce qu'on ne pourrais pas mettre une liste déroulante où l'on choisis le mois directement et l'année ?cela serait plus simple que de cliquer une date au pif dans le mois.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

23 mai 2011, 12:07

Merci pour tous ça mais je ne peux pas vraiment tester car j'ai voulu modifier ma variable table "eleve" en "etudiant" et donc "idEleve" en "idEtudiant"

mais j'ai un problème : a.idEtudiant' in 'on clause' !! cela viens de quoi?sachant que j'ai bien recréer ma table eleve et que j'ai modifier mes variable "eleve" de partout grâce au "ctrl + f" .et j'ai aussi recréer une base qui s'appelle désormais "bd_etudiants", et j'ai aussi fais la modification de partout.
Ben, il faut que tu regardes dans tous les programmes php, les requêtes SQL, les vues et tables qui se trouvent dans la base et dans l'HTML si il y a encore des anciens noms de champs élève qu'il faut modifier en Etudiant. Car apparemment, selon l'erreur que tu affiche il y en a encore dans la base de données qui ne sont pas changés.
Une piste: tu as modifié dans la table "eleve" mais est-ce que tu as modifié aussi dans la table "assiduite" et les requêtes de calcul des nombres de présence et absences, etc...
Ps: est ce qu'on ne pourrais pas mettre une liste déroulante où l'on choisis le mois directement et l'année ?cela serait plus simple que de cliquer une date au pif dans le mois.
Oui tu peux aussi faire ça.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

23 mai 2011, 12:51

Merci pour tous ça mais je ne peux pas vraiment tester car j'ai voulu modifier ma variable table "eleve" en "etudiant" et donc "idEleve" en "idEtudiant"

mais j'ai un problème : a.idEtudiant' in 'on clause' !! cela viens de quoi?sachant que j'ai bien recréer ma table eleve et que j'ai modifier mes variable "eleve" de partout grâce au "ctrl + f" .et j'ai aussi recréer une base qui s'appelle désormais "bd_etudiants", et j'ai aussi fais la modification de partout.
Ben, il faut que tu regardes dans tous les programmes php, les requêtes SQL, les vues et tables qui se trouvent dans la base et dans l'HTML si il y a encore des anciens noms de champs élève qu'il faut modifier en Etudiant. Car apparemment, selon l'erreur que tu affiche il y en a encore dans la base de données qui ne sont pas changés.
Une piste: tu as modifié dans la table "eleve" mais est-ce que tu as modifié aussi dans la table "assiduite" et les requêtes de calcul des nombres de présence et absences, etc...
.
BieN joué!je n est pas modifier assiduite et les autres!lol!
Ps: est ce qu'on ne pourrais pas mettre une liste déroulante où l'on choisis le mois directement et l'année ?cela serait plus simple que de cliquer une date au pif dans le mois.
Oui tu peux aussi faire ça
oui mais comment?(je sais faire des listes déroulantes mais pour que cela reprenne le mois de ma table de données)
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

23 mai 2011, 14:23

oui mais comment?(je sais faire des listes déroulantes mais pour que cela reprenne le mois de ma table de données)
La liste des mois doit donc provenir de la table "assiduite". Il faut extraire les dates d'assiduité distinctes puis en afficher simplement les mois. La requête est presque la même que celle que tu as fait pour l'année. Et pour n'afficher que le mois je t'ai expliqué dans les derniers messages comment utiliser les fonctions date(), strtotime(), inval() et le tableau des mois en français pour convertir un n° de mois en nom de mois en français.

Aller courage, tu peux le faire.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

23 mai 2011, 14:37

oui mais comment?(je sais faire des listes déroulantes mais pour que cela reprenne le mois de ma table de données)
La liste des mois doit donc provenir de la table "assiduite". Il faut extraire les dates d'assiduité distinctes puis en afficher simplement les mois. La requête est presque la même que celle que tu as fait pour l'année. Et pour n'afficher que le mois je t'ai expliqué dans les derniers messages comment utiliser les fonctions date(), strtotime(), inval() et le tableau des mois en français pour convertir un n° de mois en nom de mois en français.

Aller courage, tu peux le faire.
d'accord je vais tenter ça!!mais ta requête avec la liste des élèves par année ne fonctionne pas.il faut peut être rajouter un bouton??

d'ailleurs la civilité, le nom et le prénom ne fonctionne pas non plus...
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

23 mai 2011, 16:07

En principe ça marche et on n'a pas besoin de bouton car c'est le choix dans la liste qui déclenche le submit du formulaire.

Voici le Code HTML de la liste des années, où on remarque que si une année est choisie alors le formulaire est envoyé (onChange):
<select name="annee" onChange="form1.submit();" value="<?php echo $annee; ?>" >
                                                        <option value="" ></option>
                                                        <?php echo $listeAnnees; ?>
                                                        </select>
Et voici le code php, où on voit que le remplissage ne se fait que si le champ $annee existe (envoyé par le formulaire)
1. partie d'initialisation de la variable $annee:
$annee = isset($_GET['annee'])? $_GET['annee'] : null;
2. et remplissage de la liste:
// 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>";
        }
}
NB. Bien sûr tu dois lire désormais Etudiant au lieu de élève.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

23 mai 2011, 16:49

En principe ça marche et on n'a pas besoin de bouton car c'est le choix dans la liste qui déclenche le submit du formulaire.

Voici le Code HTML de la liste des années, où on remarque que si une année est choisie alors le formulaire est envoyé (onChange):
<select name="annee" onChange="form1.submit();" value="<?php echo $annee; ?>" >
                                                        <option value="" ></option>
                                                        <?php echo $listeAnnees; ?>
                                                        </select>
Et voici le code php, où on voit que le remplissage ne se fait que si le champ $annee existe (envoyé par le formulaire)
1. partie d'initialisation de la variable $annee:
$annee = isset($_GET['annee'])? $_GET['annee'] : null;
2. et remplissage de la liste:
// 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>";
        }
}
NB. Bien sûr tu dois lire désormais Etudiant au lieu de élève.
NON dsl toujours pas!!la liste des années marche mais on ne voit plus les étudiants même après avoir choisis une "année"!
Elle marche chez toi?

et rien n'a voir mais comment fait on pour que toute mon attestation s'affiche sur une autre page?


PS : je sais pas si tu as fait attention dans mon message précédent je t'es dis que les champs civilité,nom, prénom, et classe de l'élève ne fonctionne pas!je ne comprend pas pourquoi, j'ai donc remis comme j'avais fais précédemment avec mes message (c'est peut être lourd mais sa marche!!lol)
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9: