gestion absences/presences en php

Eléphant du PHP | 150 Messages

15 mai 2011, 20:32

Bonsoir,
et pour ce qui est de l'état je me suis renseigner et on m'as dit qu'il fallait passer soit par une librairie dompdf ou fpdf ou en faisant de l'ajax.T'en pense quoi? car j'aimerais bien savoir la solution la plus simple car je dois bientôt rentre mon projet et si je ne fais pas ça, je n'aurais pas réussi a le finir...
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

15 mai 2011, 23:39

d'ailleur je réitére ma question : Est il possible de ne pas sélectionner la date pour avoir les jours d'absences?
La liste des absences avec les jours sans se limiter à une seule date sélectionnée est :
$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 ";
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

15 mai 2011, 23:40

Bonsoir,
et pour ce qui est de l'état je me suis renseigner et on m'as dit qu'il fallait passer soit par une librairie dompdf ou fpdf ou en faisant de l'ajax.T'en pense quoi? car j'aimerais bien savoir la solution la plus simple car je dois bientôt rentre mon projet et si je ne fais pas ça, je n'aurais pas réussi a le finir...
De quel état parles-tu ?
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

16 mai 2011, 08:21

d'ailleur je réitére ma question : Est il possible de ne pas sélectionner la date pour avoir les jours d'absences?
La liste des absences avec les jours sans se limiter à une seule date sélectionnée est :
$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 ";

cette requête fonctionne mais je suis quand même obliger de sélectionner une date.
Modifié en dernier par cobra2930 le 16 mai 2011, 10:13, modifié 1 fois.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Eléphant du PHP | 150 Messages

16 mai 2011, 08:21

Bonsoir,
et pour ce qui est de l'état je me suis renseigner et on m'as dit qu'il fallait passer soit par une librairie dompdf ou fpdf ou en faisant de l'ajax.T'en pense quoi? car j'aimerais bien savoir la solution la plus simple car je dois bientôt rentre mon projet et si je ne fais pas ça, je n'aurais pas réussi a le finir...
De quel état parles-tu ?
de l'attestation de présence : du fichier que je veux faire : où quand je choisis un élève et que je le valide on retrouverais : son nom et prénom, son entreprise, son nombre d'heure d'absence et les jours d'absence.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

16 mai 2011, 16:56

de l'attestation de présence : du fichier que je veux faire : où quand je choisis un élève et que je le valide on retrouverais : son nom et prénom, son entreprise, son nombre d'heure d'absence et les jours d'absence.
Hé bien tu imprimes cette attestation par du javascript en exécutant la fonction Print du navigateur et tu peux même prévoir un style CSS spécifique à l'impression.

ça doit marcher comme suit:
1. Tu affiche donc ton attestation comme tu as expliqué
2. Tu prévois un bouton ou un lien "Imprimer" qui exécute la fonction javascript : window.print() qui imprime la page affichée.

Voici un code javascript d'impression:

Code : Tout sélectionner

<body> <a href="#" OnClick="javascript:window.print()">Imprimer</a> <h1>Test d'impression</h1> <p>Ceci est un test d'impression par javascript.</p> </body>
Pour spécifier un style CSS pour l'impression voici un exemple:

Code : Tout sélectionner

<style type="text/css" media="print"> body { font-size:12; background-color:white } #bouton_imprimer { visibility:hidden } </style> <style type="text/css" media="screen"> body { font-size:10; background-color:lightblue } </style> <body> <a id="bouton_imprimer" href="#" OnClick="javascript:window.print()">Imprimer</a> <h1>Test d'impression</h1> <p>Ceci est un test d'impression par javascript.</p> </body>
Dans cet exemple, le style CSS donne deux mise en formes différentes pour l'affichage sur écran (media="screen") et pour l'impression (media="print")
Par exemple : le style d'impression règle la taille de la police à 12, cache le lien "Imprimer" et met la couleur de fond de la page à blanc.

pour plus d'infos voir : http://www.pompage.net/traduction/impression
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

18 mai 2011, 08:17

oui mais pour l'afficher je ne peux pas faire plus simple qu'une librairie pdf ou de l'ajax??on ne peut pas y mettre directement quand on clique sur impression?
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

ViPHP
ViPHP | 2577 Messages

18 mai 2011, 09:00

Bonjour,

Ce qui t'es proposé comme solution avec les css, c'est de faire une page HTML avec ton état à imprimer.
En utilisant 2 CCS via l'attribut media, tu peux modifier l'impression en cachant des éléments affichés dans l'affichage de l'état dans le navigateur. En particulier tu peux mettre un bouton imprimer qui sera invisible lors de l'édition, de même que pour un menu, un haut de page ou un pied de page.

Au passage, ce genre de solution est très pratique lorsqu'elle est prévu dès le départ. Celà permet de faire une édition de chaque page assez facilement en n'imprimant que la partie centrale de la page. Le résultat n'est pas toujours aussi précis que du PDF, mais il ne demande presque pas de travail pour un rendu suffisant.

Eléphant du PHP | 150 Messages

18 mai 2011, 10:03

Bonjour,

Ce qui t'es proposé comme solution avec les css, c'est de faire une page HTML avec ton état à imprimer.
En utilisant 2 CCS via l'attribut media, tu peux modifier l'impression en cachant des éléments affichés dans l'affichage de l'état dans le navigateur. En particulier tu peux mettre un bouton imprimer qui sera invisible lors de l'édition, de même que pour un menu, un haut de page ou un pied de page.

Au passage, ce genre de solution est très pratique lorsqu'elle est prévu dès le départ. Celà permet de faire une édition de chaque page assez facilement en n'imprimant que la partie centrale de la page. Le résultat n'est pas toujours aussi précis que du PDF, mais il ne demande presque pas de travail pour un rendu suffisant.

et on peut récupérer mes variable en faisant cela?car je ne sais pas si tu as lu plus haut mais je souhaite récupéré des données sur l'élève.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Eléphant du PHP | 150 Messages

18 mai 2011, 10:11

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.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Eléphant du PHP | 150 Messages

18 mai 2011, 11:18

pour ce qui est de la modification j'aimerais qu'on sélectionne l'élève comme tu as dis, que l'on clique sur valider et que tout les champs apparaissent et pré remplis pour les champs qui sont déjà rempli comme le nom, le prénom etc, après que l'on modifie ce que l'on veut et que l'on clique sur modifier qui va lancer la requête SQL "UPDATE ..."
Pour ces sujets je te laisse le soin de prendre le temps et le recul nécessaire pour les réaliser d'abord par rapport au programmes qu'on a réalisé précédemment car ça se ressemble. Puis je verrai après ce que tu as fait et on en discutera en conséquence.

Essaye de réaliser partie par partie car je vois que tu as tendance à vouloir réaliser plusieurs programmes en parallèle. Cette démarche ne te permettra pas de bien avancer dans ton apprentissage. chi va piano, va sano e va lontano.

Le but étant que tu comprennes les solutions qu'on a mis en place ensemble et que ça te permette d'apprendre plus au niveau SQL et PHP. Pour l'instant je sais que tu as encore des lacunes au niveau SQL, il faut donc réviser ce qu'on a fait dans les premiers programmes et surtout celui de l'assiduité.

En attendant que ça avance de ta part, je reste à l'écoute.

Voila ce que j'ai tenté de faire...

<?php
	$nom = isset($_GET['nom']) && !empty($_GET['nom'])? $_GET['nom'] : null;
	$idClasse = isset($_GET['idClasse']) && !empty($_GET['idClasse'])? $_GET['idClasse'] : 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;
	
	$date = isset($_GET['date']) && !empty($_GET['date'])? $_GET['date'] : null;
	$mois =  date_format(date_create($date), "m"); // extrait le mois de $date 
	$idEleve = isset($_GET['idEleve']) && !empty($_GET['idEleve'])? $_GET['idEleve'] : 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
// 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>";
}
			
		// modifier un eleve
		if (isset($_GET['action']) && $_GET['action']=='modifier')
		{
			//
			$message = "";
			if (empty($message))
			{
			 	$sql = "UPDATE eleve SET nom = '".$nom."', prenom = '".$prenom."', idClasse = '".$idClasse."', adresse ='".$adresse."', code_postal =
'".$code_postal."', ville = '".$ville."', portable = '".$portable."', mail = '".$mail."', date_de_naissance = '".$date_de_naissance."' WHERE idEleve=" . $idEleve;

			  
			
			$result = mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
			//echo $sql;
			if(!$result);
						
				if (empty($message)) $message = "modification effectué avec succès";
                else $message = "<p>Les Erreurs suivantes sont rencontrées :</ul>" . $message . "</ul></p>";
			}
				   
		}				
		// fin de connexion
		mysql_close();
		
?> 
<h1>Modification d'élève de la base</h1><br/><br/>

			<form name="form2" action="" method="get">
				Eleve : <select name="idEleve" onchange="form1.submit();" value="<?php echo isset($idEleve)?$idEleve:null; ?>" >
						<option value="" >
						</option>
						<?php echo isset($listeDesEleves)?$listeDesEleves:null; ?>
						</select>
						<input type="submit" name="action" value="valider" />

		
			<div id="message"><?php echo isset($message)?$message:''; ?></div>
			<br/><br/>
	
			<table align="left">
			<tr align="left">
				<th>
				Nom : 
				</th>
				<th align="left">
					<input type="text" id="nom" name="nom" value="<?php echo isset($nom)?$nom:''; ?>"/><FONT color="red">&nbsp;*</FONT>
				</th>
			</tr>
			<tr>
				<th align="left">
				Prenom :
				</th>
				<th>				
					<input type="text" id="prenom" name="prenom" value="<?php echo isset($prenom)?$prenom:''; ?>"/><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>
		</table>
				<br/><FONT color="red">&nbsp;*</FONT>=champ obligatoire.
				<input type="submit" name="action" value="modifier" />
			</form>
donc j'arrive a modifier mais je ne sais pas comment pré remplir mes champs
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

18 mai 2011, 16:22

Bravo, tout y est sauf le pré-remplissage des données élèves pour les afficher. Pour ce faire, voici comment:

Quand l'utilisateur choisit un élève dans la liste des élèves puis clique sur le bouton "valider", le php reçoit un $_GET['action']='valider' et à ce moment il faut qu'il exécute la requête de recherche des données de idEleve choisi dans la liste.

Voici la partie du programme qui fait ça:
 // rechercher les données de l'élève choisi dans la liste
if (isset($_GET['action']) && $_GET['action']=='valider' && !empty($idEleve))
{
   $message = "";
   $sql = "SELECT * FROM eleve WHERE idEleve ='" . $idEleve . "' ";
   $result = mysql_query($sql) or die(mysql_error());
   if ($result && $row=mysql_fetch_array($result))
   {
        // affectation des données de l'élève dans les variables du formulaire
        $idClasse =$row['idClasse'];
        $nom = $row['nom'];
        $prenom = $row['prenom'];
        $adresse = $row['adresse'];
        $code_postal = $row['code_postal'];
        $ville = $row['ville'];
        $portable = $row['portable'];
        $mail = $row['mail'];
        $date_de_naissance = $row['date_de_naissance'];
        .... Ajouter les autres champs de l'élève ....
   }
  else { $message = "<p>Elève non trouvé</p>"; } 
}
Ce bloc de code doit être insérer au moins avant l'affichage du formulaire. Le mieux est de le mettre avant ou après celui qui traite la modification.

Voila. A+
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

18 mai 2011, 16:34

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.
Quelle est la relation logique entre un élève et une entreprise ? dans ton cas.

En général, pour une BTS en alternance, l'élève est associé à une entreprise en tant que stagiaire. Donc on peut dire que pour un stagiaire ou élève il y a une seule association avec une seule entreprise. Par contre pour une entreprise on peut associer plusieurs stagiaires. De ce fait, on peut stocker les données des entreprises dans une table "entreprise" avec un "idEntreprise" comme clé primaire et mettre en relation chaque stagiaire (ou élève) avec son entreprise par un champ (clé étrangère) nommé aussi "idEntreprise" qu'on doit ajouter dans la table "eleve".

Comme ça, on peut effectivement récupérer les données de l'entreprise à laquelle est attaché un élève par la requête suivante qui sélectionne les données d'un élève et de son entreprise:
$sql = "SELECT * FROM eleve t1 JOIN entreprise t2 ON t1.idEntreprise=t2.idEntreprise WHERE t1.idEleve ='" . $idEleve. "' ";
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

18 mai 2011, 17:25

Bravo, tout y est sauf le pré-remplissage des données élèves pour les afficher. Pour ce faire, voici comment:

Quand l'utilisateur choisit un élève dans la liste des élèves puis clique sur le bouton "valider", le php reçoit un $_GET['action']='valider' et à ce moment il faut qu'il exécute la requête de recherche des données de idEleve choisi dans la liste.

Voici la partie du programme qui fait ça:
 // rechercher les données de l'élève choisi dans la liste
if (isset($_GET['action']) && $_GET['action']=='valider' && !empty($idEleve))
{
   $message = "";
   $sql = "SELECT * FROM eleve WHERE idEleve ='" . $idEleve . "' ";
   $result = mysql_query($sql) or die(mysql_error());
   if ($result && $row=mysql_fetch_array($result))
   {
        // affectation des données de l'élève dans les variables du formulaire
        $idClasse =$row['idClasse'];
        $nom = $row['nom'];
        $prenom = $row['prenom'];
        $adresse = $row['adresse'];
        $code_postal = $row['code_postal'];
        $ville = $row['ville'];
        $portable = $row['portable'];
        $mail = $row['mail'];
        $date_de_naissance = $row['date_de_naissance'];
        .... Ajouter les autres champs de l'élève ....
   }
  else { $message = "<p>Elève non trouvé</p>"; } 
}
Ce bloc de code doit être insérer au moins avant l'affichage du formulaire. Le mieux est de le mettre avant ou après celui qui traite la modification.

Voila. A+
Merci bien pour ce pré-remplissage car je galérais grave!!
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Eléphant du PHP | 150 Messages

18 mai 2011, 17:28

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.
Quelle est la relation logique entre un élève et une entreprise ? dans ton cas.

En général, pour une BTS en alternance, l'élève est associé à une entreprise en tant que stagiaire. Donc on peut dire que pour un stagiaire ou élève il y a une seule association avec une seule entreprise. Par contre pour une entreprise on peut associer plusieurs stagiaires. De ce fait, on peut stocker les données des entreprises dans une table "entreprise" avec un "idEntreprise" comme clé primaire et mettre en relation chaque stagiaire (ou élève) avec son entreprise par un champ (clé étrangère) nommé aussi "idEntreprise" qu'on doit ajouter dans la table "eleve".

Comme ça, on peut effectivement récupérer les données de l'entreprise à laquelle est attaché un élève par la requête suivante qui sélectionne les données d'un élève et de son entreprise:
$sql = "SELECT * FROM eleve t1 JOIN entreprise t2 ON t1.idEntreprise=t2.idEntreprise WHERE t1.idEleve ='" . $idEleve. "' ";
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?pour que par exemple quand je veux modifier les données de l'entreprise je puisse modifier l'élève qui est dedans?
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9: