gestion absences/presences en php

Eléphant du PHP | 150 Messages

05 juin 2011, 18:24

mais pourtant le champ "motif" se trouve dans la table 'assiduite' donc je ne peux pas le prendre par la?et comment modifier la vu `nbre_heures_absence` ?déjà que je galère en requête SQL pour le php mais la pour une vue c'est encore plus dure.
A non, tu ne vas pas me dire que tu ne sais pas comment créer une vue alors qu'on a déjà fait ça. C'est pas dur une vue c'est juste une requête SELECT considérée comme une table virtuelle.

Tu récupère le code SQL qui décrit la vue : `nbre_heures_absence` dans le script de ta base de données, tu le modifie en ajoutant le champ motif dans le SELECT et tu l'exécute sous PHPMyAdmin pour remplacer la vue existante. Puis tu fais la même chose avec la vue `nbre_heures_presence`.

Voici un exemple pédagogique:
Soit la vue existante : vue1
--
-- Structure de la vue `vue1`
--
DROP TABLE IF EXISTS `vue1`;

CREATE VIEW `vue1` AS SELECT `table1`.`champ1` AS `champ1`,`table1`.`champ2` AS `champ2`, sum(`champ3`) as Somme1 FROM `table1` GROUP BY `champ1`,`champ2`;
Pour modifier cette vue en ajoutant un nouveau champ nommé `champ4` qui existe bien sûr dans la table `table1` il faut réécrire la vue comme ça:
-- Structure de la vue `vue1`
--
DROP TABLE IF EXISTS `vue1`;

CREATE VIEW `vue1` AS SELECT `table1`.`champ1` AS `champ1`,`table1`.`champ2` AS `champ2`, sum(`champ3`) as Somme1, `table1`.`champ4` AS `champ4`  FROM `table1` GROUP BY `champ1`,`champ2`, `champ4`;
En exécutant cette requête modifiée la vue1 sera modifiée dans la base de données.

Remarques:
1. La requête DROP TABLE permet de supprimer la table virtuelle doublure de la vue et la requête CREATE VIEW permet de créer la vue.
2. La position (ordre) du champ ajouté (champ3) dans le SELECT n'est importante que s'il y a une clause ORDER BY pour le classement ou une clause GROUP BY pour regrouper les enregistrement pour les calculs effectués par la requête.
3. Les champs calculés ne figurent jamais dans un GROUP BY si utilisé

Voilà, je pense qu'avec ça tu n'auras pas de motif de réticence.
ok merci je vais essayer ça.

Sinon pour ce qui est des liens entre les tables est ce que tu pourrait me dire quels sont ils?car j'ai bien reussi a faire mon schéma grâce a ce que tu m'as dit sur mysql Workbench mais je ne vois pas tout les liens qu'il y a entre les tables :
Image

et je ne sais pas quel liens utilisé non plus dans workbench.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Eléphant du PHP | 150 Messages

05 juin 2011, 19:05

parfait j'ai reussi le motif en faisant le copier coller de se que tu m'as expliqué :
DROP TABLE IF EXISTS `nbre_heures_absence`;

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `nbre_heures_absence` 
AS select `assiduite`.`date` AS `date`,`assiduite`.`idEtudiant` AS `idEtudiant`,
sum((8 - ((((`assiduite`.`presence_mat_t1` * 2) + (`assiduite`.`presence_mat_t2` * 2)) + 
(`assiduite`.`presence_amidi_t1` * 2)) + (`assiduite`.`presence_amidi_t2` * 2)))) AS `nbre_heures_absence`,
`assiduite`.`motif` AS `motif` from `assiduite` group by `assiduite`.`date`,`assiduite`.`idEtudiant`,`assiduite`.`motif`;
sinon il y a juste deux derniers points :

- dans mon attestation j'aimerais que si l'étudiant n'as pas d'entreprise cela mette son adresse perso en haut a droite au lieu de celle de l'entreprise mais que si il n'a pas d'entreprise.

- j'aimerais sécurisé le site par mot de passe, il faut utiliser quoi comme hachage etc?et comment m'y prendre?faut t il créer des session ?j'ai déja créé l'html de la page login.mais je ne vois pas comment faire le reste.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

05 juin 2011, 19:51

voici un tuto qui montre comment utiliser Mysql Workbench pour modéliser une base de donnée : http://morgan-blog.over-blog.com/articl ... 80943.html

Après avoir suivi ce tuto. Dans ton cas, tu as déjà un schéma généré mais sans les liens. C'est normal, car on a pas déclaré de relations dans la base. Pour recréer les liens Il suffit donc de cliquer sur le type de lien 1 à plusieurs (Place a new 1:n Identifying Relationship) et de cliquer en premier sur la table à relier puis cliquer en suite sur la table de clé primaire (clé jaune) qui référence le lien.

Par exemple: la table Etudiant est liée à La table Entreprise par le champ idEntreprise, donc on retrouve le champ idEntreprise dans la table Entreprise en tant que clé primaire (clé jaune) et le même champ idEntreprise se retrouve dans la table Etudiant comme clé étrangère.
Cette relation est logiquement une dépendance fonctionnelle car la table Entreprise fourni le champ idEntreprise à la table Etudiant qui le consomme.

Ce lien est de type 1:n car car une entreprise est liée à plusieurs étudiants
Ce lien est une dépendance fonctionnelle forte car un étudiant est relié à une et une seule entreprise.
Donc le lien 1:n entre Entreprise et Etudiant est de type : 1:n Identifying Relationship
Par contre si ce lien est une dépendance faible car il se peut qu'un étudiant peut ne pas avoir un lien avec une entreprise alors il faut utiliser le lien 1:n Non Identifying Relationship

Pour faire le lien il faut donc :
1. cliquer dans la barre d'outils à gauche sur l'icône correspondant à un lien 1:n (Place a new 1:n Identifying Relationship ou 1:n Non Identifying Relationship)
2. cliquer sur la table Etudiant puis juste après cliquer sur la table Entreprise
3. un lien sera dessiné entre les 2 tables et un nouveau champ sera créé dans la table Etudiant portant le nom "Entreprise_idEntreprise"
Mais dans notre cas, en se retrouve avec 2 champs dans la table Etudiant qui correspondent à l'entreprise. Pas de panique, il suffit de supprimer le champ qui existait avant nommé "idEntreprise" et renommer le nouveau champ créé par le lien et nommé "Entreprise_idEntreprise" par le nom "idEntreprise" qu'on préfère.

Pour info:
si tu te trompes tu peux toujours supprimer le lien avec un clic-droit dessus le lien + delete (puis reclic sur delete pour confirmation)
pour supprimer ou renommer un champ d'une table, il faut éditer la table en double-cliquant dessus, et se mettre sur l'onglet "Columns" (ou champs) en bas puis sélectionner le champ ciblé. Pour le supprimer=>un clic-droit + delete et pour le renommer=> un seul clic sur son nom puis saisir le nouveau nom et valider
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
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

05 juin 2011, 20:09

parfait j'ai reussi le motif en faisant le copier coller de se que tu m'as expliqué
Bravo, je savais que tu en es capable.
- dans mon attestation j'aimerais que si l'étudiant n'as pas d'entreprise cela mette son adresse perso en haut a droite au lieu de celle de l'entreprise mais que si il n'a pas d'entreprise.
à l'emplacement où tu affiche l'adresse de l'entreprise sur l'attestation tu fais avant un test IF qui vérifie si le champ $row['idEntreprise'] (issu des infos de l'étudiant comme le nom, ... ) est vide alors tu affiches l'adresse de l'étudiant sinon tu affiche l'adresse de l'entreprise.
Utilise la fonction empty(...) pour vérifier si un champ est vide.
- j'aimerais sécuriser le site par mot de passe, il faut utiliser quoi comme hachage etc? et comment m'y prendre? faut t il créer des session ? j'ai déjà créé l'html de la page login.mais je ne vois pas comment faire le reste.
Je te conseille d'ouvrir un nouveau Sujet pour ces questions car elles sont vraiment génériques et détachées du sujet, tu auras plusieurs interventions enrichissantes. Je ne te l'ai pas dit jusqu'à maintenant car toutes tes questions se référaient aus mêmes détails du sujet et étaient enchainées. Maintenant si tu estimes qu'en terme d'avancement du sujet en cours, la boucle est bouclée, il vaudrait mieux clôturer ce sujet et repartir sur d'autres nouvelles questions d'ordre général comme le login, les sessions, ... l'organisation du site, les problèmes liés aux css où tu n'auras pas à ré-expliquer les détails de ton application. OK.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

05 juin 2011, 23:59

Pas de probleme je vais voir sur d'autre post ou ouvrir un nouveau sujet pour ça .j'ai encore une question en rapport avec le sujet que je t'avais deja posé : comment faire pour faire une genre d'attestation qui ferait un recapitulatif de chaque mois et qui donnerait le nombre d'absence pour chaque mois entre deux date défini par l'utilisateur
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

06 juin 2011, 09:51

La réponse est dans ta base de données, tu as une vue qui calcule le nombre d'absences par année/mois elle s'appelle nb_heures_absence_mois et se présente comme ça:
-- Structure de la vue `nb_heures_absence_mois`
--
DROP TABLE IF EXISTS `nb_heures_absence_mois`;

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `nb_heures_absence_mois` AS SELECT year(`assiduite`.`date`) as `annee`, month(`assiduite`.`date`) AS `mois`,`assiduite`.`idEtudiant` AS `idEtudiant`,sum((8 - ((((`assiduite`.`presence_mat_t1` * 2) + (`assiduite`.`presence_mat_t2` * 2)) + (`assiduite`.`presence_amidi_t1` * 2)) + (`assiduite`.`presence_amidi_t2` * 2)))) AS `nbre_heures_absence` FROM `assiduite` GROUP BY year(`assiduite`.`date`), month(`assiduite`.`date`),`assiduite`.`idEtudiant`;
Elle retourne les champs : annee, mois, idEtudiant et nbre_heures_absence.

Il suffit alors de faire saisir deux dates : $date1 et $date2 puis interroger cette vue avec cette requête:
$sql = "SELECT * FROM `nb_heures_absence_mois` WHERE  date(concat(`annee`, '-', `mois`,'-01')) BETWEEN date('".$date1."')  AND date('".$date2."') ";
C'est à dire qu'on sélectionne les absences dont l'année et le mois vues comme une date est comprise entre les 2 dates données $date1 et $date2.
Dans cette requête, l'année et le mois d'une absence sont concaténés comme ça : date(concat(`annee`, '-', `mois`,'-01')) pour former une date de type : AAAA-MM-01. Et cette date est comparée entre $date1 et $date2 avec BETWEEN.
Bien sûr il faut que les variables php $date1 et $date2 contiennent des dates valides au format : aaaa-mm-jj


ps: alors quand est-ce qu'on boira à la santé de ce programme? :wink:
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

06 juin 2011, 13:32



ps: alors quand est-ce qu'on boira à la santé de ce programme? :wink:
c'est clair que je te dois une fiere chandelle.
Tu es d'où?tu as quelle age?
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

06 juin 2011, 14:09



ps: alors quand est-ce qu'on boira à la santé de ce programme? :wink:
c'est clair que je te dois une fiere chandelle.
Tu es d'où?tu as quelle age?
ô je dis ça comme ça mais il faut dire que tu es assidu et tu t'accroche bien. Sinon moi je suis du Mans.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

07 juin 2011, 09:29

et pour ce qui est de l'adresse de l'étudiant qui se substituerait a l'adresse de l'entreprise si il n'en n'a pas?
et comment faire pour que mon attestation ne s'affiche pas à l'écran?
(car il y a une mauvaise mise en forme que je n'arrive pas à modifier : le texte de l'attestation qui est sous le menu se décale a gauche et ne reste pas aligné avec l'autre et comme j'ai fais de l'alignement à gauche pour les adresse cela se colle a droite de l'écran, il faudrait un padding et il passe en dessous aussi a cause du <hr> et parce qu'il y a deux <div> )

donc vu que je n'arrive pas a faire une mise en forme correct (dommage) ben je voudrais que je ne vois plus du tout l'attestation mais juste le bouton imprimer, ou alors si tu sais comment modifier cela?

et j'ai un autre petit problème : maintenant quand j'imprime le titre c'est l'url de la page... alors qu'il y a bien :

Code : Tout sélectionner

// Attribut un titre f.document.title = "Impression: ";
ou même avec ça :

Code : Tout sélectionner

// Attribut un titre f.document.title = "Impression: " + document.title; Merci d'avance.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

07 juin 2011, 21:13

et pour ce qui est de l'adresse de l'étudiant qui se substituerait a l'adresse de l'entreprise si il n'en n'a pas?
et comment faire pour que mon attestation ne s'affiche pas à l'écran?
(car il y a une mauvaise mise en forme que je n'arrive pas à modifier : le texte de l'attestation qui est sous le menu se décale a gauche et ne reste pas aligné avec l'autre et comme j'ai fais de l'alignement à gauche pour les adresse cela se colle a droite de l'écran, il faudrait un padding et il passe en dessous aussi a cause du <hr> et parce qu'il y a deux <div> )

donc vu que je n'arrive pas a faire une mise en forme correct (dommage) ben je voudrais que je ne vois plus du tout l'attestation mais juste le bouton imprimer, ou alors si tu sais comment modifier cela?
il va falloir re-poster le code de ton attestation complet avec la feuille CSS qui fait la mise en forme. Pour voir ce que tu as fait.
et j'ai un autre petit problème : maintenant quand j'imprime le titre c'est l'url de la page... alors qu'il y a bien :

Code : Tout sélectionner

// Attribut un titre f.document.title = "Impression: ";
ou même avec ça :

Code : Tout sélectionner

// Attribut un titre f.document.title = "Impression: " + document.title; Merci d'avance.[/quote] Remplace cette instruction [html]f.document.title = "Impression: " + document.title; [/html]par : [html]f.document.write("<title>Impression: " + document.title + "</title>");[/html] Je pense que c'est le même problème que pour l'image du logo qui ne s'affichait pas. Avec le write() ça doit marcher.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

08 juin 2011, 09:34

et j'ai un autre petit problème : maintenant quand j'imprime le titre c'est l'url de la page... alors qu'il y a bien :

Code : Tout sélectionner

// Attribut un titre f.document.title = "Impression: ";
ou même avec ça :

Code : Tout sélectionner

// Attribut un titre f.document.title = "Impression: " + document.title; Merci d'avance.[/quote] Remplace cette instruction [html]f.document.title = "Impression: " + document.title; [/html]par : [html]f.document.write("<title>Impression: " + document.title + "</title>");[/html] Je pense que c'est le même problème que pour l'image du logo qui ne s'affichait pas. Avec le write() ça doit marcher.[/quote] pour les autres pages c'est niquel mais ça ne fonctionne toujours pas pour la page attestation
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Eléphant du PHP | 150 Messages

08 juin 2011, 09:40

et pour ce qui est de l'adresse de l'étudiant qui se substituerait a l'adresse de l'entreprise si il n'en n'a pas?
et comment faire pour que mon attestation ne s'affiche pas à l'écran?
(car il y a une mauvaise mise en forme que je n'arrive pas à modifier : le texte de l'attestation qui est sous le menu se décale a gauche et ne reste pas aligné avec l'autre et comme j'ai fais de l'alignement à gauche pour les adresse cela se colle a droite de l'écran, il faudrait un padding et il passe en dessous aussi a cause du <hr> et parce qu'il y a deux <div> )

donc vu que je n'arrive pas a faire une mise en forme correct (dommage) ben je voudrais que je ne vois plus du tout l'attestation mais juste le bouton imprimer, ou alors si tu sais comment modifier cela?
il va falloir re-poster le code de ton attestation complet avec la feuille CSS qui fait la mise en forme. Pour voir ce que tu as fait.
donc voici le code "attestation.php" :
<?php
include ("menu.php");
require_once ("fonction_attestation.php");
?>


<head>
<title>Attestation de présence des étudiants pour les entreprise</title>
       
</head>

<u><h1>Attestation de présence des étudiants pour les entreprise</h1></u>

<div id='feuille_absence'>
<form name="form1">
<table>
		<tr>
			<th align="left">
			<br/><br/>
				Année :&nbsp;&nbsp;<br/><br/>
			</th>
			<th  align="left">
			<br/><br/>
				<select name="annee" onChange="form1.submit();">
				<option value="" ></option>
				<?php echo $listeAnnees; ?>
				</select><br/><br/>
			</th>
		</tr>
		<tr>
				<th align="left">	
				
					Mois :&nbsp;&nbsp;<br/><br/>
				</th>
				<th align="left">
				
						<select name="mois" onChange="form1.submit();" >
						<option value="" ></option>
						<?php echo $listeMois; ?>
						</select><br/><br/>
				</th>
		</tr>
		<tr>
			<th align="left">
			
				Année d'étude :&nbsp;&nbsp;<br/><br/>
			</th>
			<th align="left">
			
				<select name="anneeNiveau" onChange="form1.submit();">
				<option value="" ></option>
				<?php echo $listeAnneesNiveau; ?>
				</select><br /> <br /> 
			</th>
		</tr>
		<tr>
			<th align="left">
			
				Etudiant :&nbsp;&nbsp;<br/><br />
			</th>
			<th align="left">
			
					<select name="idEtudiant" >
					<option value="" >
					</option>
					<?php echo isset($listeDesEtudiants)?$listeDesEtudiants:null; ?>
					</select><br /> <br /> 
			</th>
		</tr>
		<tr>
			<th align="left">
			Date : &nbsp;&nbsp;<br /> 
			</th>
			<th align="left">
				<input type="text" id="dateLib" name="dateComplete" value="<?php echo isset($dateComplete)?$dateComplete:date("d-m-Y"); ?>" style="width:180px" onfocus="visuCal('date', this,{'format' : '%d, %k %p %a'})" onblur="masqueCal(this);"  />
				<input type="hidden" id="date" name="date"  value="<?php echo isset($date)?date("Y-m-d",strtotime($date)):date("Y-m-d"); ?>" />
			<br />  </th>
		</tr> 
				
		<tr>
			<th>
			</th>
			<th align="left">
					<br/>
					<input type="submit" name="action_attestation" value="Valider">
					<br /><br />          
			</th>
		</tr>
</table>
</form>
<div id="messag"><?php echo isset($message2)?$message2:''; ?></div>
<br/><br/>
                       
</div>
     
</div>
</body>
</html>

afficher_attestation.php :
<input type="button" value="Imprimer" onClick="imprime_zone('attest_page1'); imprime_zone('attest_page2');" />

<div id="attest_page1" type="hidden">
 <div align="left"><img src="images/logo.png" width="205px" height="82px" alt="logo"></img>   </div>
<br/><br/>


<div align="right" ><b>
	<table >
		<tr align="left">
			<td>
					<?php echo isset($nom_entr)?$nom_entr:''; ?><br/>
			</td>
		</tr>
		<tr >
			<td align="left">
					<?php echo isset($civilite_tuteur)?$civilite_tuteur:''; ?> <?php echo isset($nom_tuteur)?$nom_tuteur:''; ?> <?php echo isset($prenom_tuteur)?$prenom_tuteur:''; ?>
			</td>
		</tr>
		<tr>
			<td align="left">
					<?php echo isset($adresse_entr)?$adresse_entr:''; ?>
			</td>
		</tr>
		<tr>
			<td align="left">
					<?php echo isset($adresse2_entr)?$adresse2_entr:''; ?>
			</td>
		</tr>
		<tr>
			<td align="left">
				<?php echo isset($code_postal_entr)?$code_postal_entr:''; ?> <?php echo isset($ville_entr)?$ville_entr:''; ?>
			</td>
		</tr>
	</table>
</b></div>
<br/>
<br/><div align="right">A Cran-Gevrier, le <?php echo isset($dateComplete)?$dateComplete:date("d-m-Y"); ?></div>
<br/><br/>
        <table width="100%" border="1" cellspacing="1" cellpadding="1"><tr><td><div align="center"><b>ATTESTATION</b></div></td></tr></table>
        <br/><br/>
       
        Période : <b><?php echo isset($nomMois)?$nomMois:''; ?> (<?php echo isset($annee)?$annee:''; ?>)</b>
        <br/>
        <br/>
        <b><u>Relevé de Présence : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		</u><br/><br/></b>
       
        Je soussigné M. Karim DEHIMI, en qualité de directeur de Savoie Décision, Institut Supérieur <br/>
	de Commerce et Gestion, 2 route de la Salle - ZAC des Romains Nord - 74960 Cran-Gevrier, certifie que  :

        <br/>
        <br/>
                <?php echo isset($civiliteEtudiant)?$civiliteEtudiant:''; ?> <b><?php echo isset($nomEtudiant)?$nomEtudiant:''; ?> <?php echo isset($prenomEtudiant)?$prenomEtudiant:''; ?></b> inscrit en <b><?php echo isset($idClasse)?$idClasse:''; ?></b>
        &nbsp;(<?php echo isset($promotion)?$promotion:''; ?>)
                <br/>
        <br/>
        A été présent(e) <?php echo isset($nombreheurepresencemois)?$nombreheurepresencemois:'0'; ?> heures

        <br/>
        <br/>
        <u><b>Relevé d'Absence: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		</u></b> 
        <br/><br/>
        <b>Total des absences : <?php echo isset($nombreheureabsencemois)?$nombreheureabsencemois:'0'; ?> heures  </b>
		<br/><br/>
        <div id="message1"><?php echo isset($message1)?$message1:''; ?></div>

        <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($nomEtudiant)?$nomEtudiant:''; ?> <?php echo isset($prenomEtudiant)?$prenomEtudiant:''; ?></th><th>Karim DEHIMI</th></tr>
        </table>
</div>
        <br/><br/>
        <br/><br/>
        <br/><br/>

<div id="attest_page2">
<div align="left"><img src="images/logo.png" width="205px" height="82px" alt="logo"></img></div>
<br/><br/>

<div align="right" ><b>
	<table >
		<tr align="left">
			<td>
					<?php echo isset($nom_entr)?$nom_entr:''; ?><br/>
			</td>
		</tr>
		<tr >
			<td align="left">
					<?php echo isset($civilite_tuteur)?$civilite_tuteur:''; ?> <?php echo isset($nom_tuteur)?$nom_tuteur:''; ?> <?php echo isset($prenom_tuteur)?$prenom_tuteur:''; ?>
			</td>
		</tr>
		<tr>
			<td align="left">
					<?php echo isset($adresse_entr)?$adresse_entr:''; ?>
			</td>
		</tr>
		<tr>
			<td align="left">
					<?php echo isset($adresse2_entr)?$adresse2_entr:''; ?>
			</td>
		</tr>
		<tr>
			<td align="left">
				<?php echo isset($code_postal_entr)?$code_postal_entr:''; ?> <?php echo isset($ville_entr)?$ville_entr:''; ?>
			</td>
		</tr>
	</table>
</b></div>
<br/><br/>
<br/><br/><div align="right">A Cran-Gevrier, le <?php echo isset($dateComplete)?$dateComplete:date("d-m-Y"); ?></div>
<br/><br/>
<br/><br/>
        
       
       <b>Objet : attestation de présence du mois de <?php echo isset($nomMois)?$nomMois:''; ?> <?php echo isset($annee)?$annee:''; ?></b>
        <br/>
        <br/>
        <?php echo isset($civilite_tuteur)?$civilite_tuteur:''; ?>,<br/><br/>
       
        Pour vous permettre un meilleur suivi de votre étudiant au sein de l'institut Savoie Décision,<br/>
		veuiller trouver ci-joint :
		
        <br/>
        <br/>
		<b>- Le relevé de présence et d'absence de <?php echo isset($civiliteEtudiant)?$civiliteEtudiant:''; ?> <b><?php echo isset($nomEtudiant)?$nomEtudiant:''; ?> <?php echo isset($prenomEtudiant)?$prenomEtudiant:''; ?> pour le mois de <?php echo isset($nomMois)?$nomMois:''; ?> <?php echo isset($annee)?$annee:''; ?></b></b> 
      
                
                <br/>
        <br/>
Vous en souhaitant bonne réception,
<br/>Nous vous prions d'agréer, <?php echo isset($civilite_tuteur)?$civilite_tuteur:''; ?>, l'expression de nos salutations distinguées.

        
		<br/><br/>

        <br/><br/>
		<br/><br/>
       
		<table border="0" width="100%" align="right">
        <tr><th>Le Directeur,</th></tr>
        <tr><th>Karim DEHIMI</th></tr>
        </table>
	
</div>


</body>
</html>
current.css :

Code : Tout sélectionner

div.logo{ float:center; width:100%; height:150px; padding-top:15px; } div.logo2{ border: 2px solid blue; } div.main{ float:left; padding-left:15px; padding-right:20px; height:100%; } div.main2{ float:right; margin:20px; padding-left:15px; margin-left:20px; margin-top:10px; } div.menu{ width:940px; height:29px; background-image:url(../images/bac_top_link.png); background-repeat:repeat-x; background-position:top left; float:left; } div.body{ width:728px; float:left; background-image:url(../images/shadow.png); background-repeat:repeat-x; background-position:bottom left; padding-bottom:15px; } div.leftmod{ width:179px; float:left; background-image:url(../images/top_mod.png); background-repeat:no-repeat; background-position:top left; padding-left:8px; padding-top:10px; margin-left:3px; margin-top:15px; background-color:#DCE1EE; } div.leftmod2{ background-image:url(../images/bot_mod.png); background-repeat:no-repeat; background-position:bottom right; margin-left:-8px; padding-left:8px; } div.sub { font-weight: bolder; /* pour mettre le texte en gras */ display: block; /* pour que le cadre prenne forme */ padding: 5px; /* pour que le texte ne soit pas trop collé aux bordures */ font-size: 10pt !important; /* pour corriger la taille (IE ne le corrige pas) */ border: 2px solid red; /* bordure */ margin: auto; /* pour centrer le cadre (non compris par IE) */ text-align: center; /* pour centrer le texte */ width: 75%; /* largeur de 75% */ } .marge { margin-left: 56em; } div.rightmod{ width:179px; float:left; background-image:url(../images/top_mod.png); background-repeat:no-repeat; background-position:top left; padding-left:8px; padding-top:10px; margin-left:3px; margin-top:3px; background-color:#DCE1EE; } div.rightmod2{ background-image:url(../images/bot_mod.png); background-repeat:no-repeat; background-position:bottom right; margin-left:-8px; padding-left:8px; } #fin { position : absolute; bottom : 0px; }
et pour ce qui est de la substitution de l'adresse de l'entreprise par celle de l'étudiant?
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

09 juin 2011, 16:36

Pour la substitution de l'adresse de l'entreprise par celle de l'étudiant, il faut affecter d'abord les variables d'adresses de l'étudiant et de l'entreprise dans le programme : fonction_attestation.php comme ça:
//-------------------------------------
// TRAITEMENT DES BOUTON D'ACTION
//-------------------------------------
                       


             
                $message1 = "";
                $message4 = "";
                $message5 = "";
                $message6 = "";
                $message7 = "";
               
               
               
                //------------------------------------------
                // attestation (nom etudiant, entreprise, nombre heure par mois, jours d'absences)
                if (isset($_GET['action_attestation']) && !empty($idEtudiant))
                {

                        $sql = "SELECT * FROM etudiant t1 LEFT JOIN entreprise t2 ON t1.idEntreprise=t2.idEntreprise WHERE t1.idEtudiant='". $idEtudiant ."' ";
                        $result = mysql_query($sql) or die(mysql_error());
                        while($result && $row=mysql_fetch_array($result))
                        {
                                 // données Etudiant
                                 $idEtudiant = $row['idEtudiant'];
                                 $nomEtudiant = $row['nom'];
                                 $prenomEtudiant = $row['prenom'];
								 $adresseEtudiant = $row['adresse'];
								 $code_postalEtudiant = $row['code_postal'];
								 $villeEtudiant = $row['ville'];
                                 $civiliteEtudiant = $row['civilite'];
								 //
                                 $promotion = $row['promotion'];
                                 $idClasse = $row['idClasse'];
								 // entreprise
								 $nom_entr = $row['nom_entr'];
								 $adresse_entr = $row['adresse_entr'];
								 $adresse2_entr = $row['adresse2_entr'];
								 $code_postal_entr = $row['code_postal_entr'];
								 $ville_entr = $row['ville_entr'];
								 // tuteur
								 $civilite_tuteur  = $row['civilite_tuteur'];
								 $nom_tuteur = $row['nom_tuteur'];
								 $prenom_tuteur = $row['prenom_tuteur'];
								 
                        }		





En suite, au niveau du programme : afficher_attestation.php, il faut tester ce qui doit être affiché : si l'adresse entreprise n'existe pas alors afficher l'adresse étudiant et de même pour le code postal et la ville. Voici la modif:
<tr>
<td align="left">
<?php echo isset($adresse_entr)?$adresse_entr:(isset($adresseEtudiant)?$adresseEtudiant:''); ?>
</td>
</tr>
<tr>
<td align="left">
<?php echo isset($adresse2_entr)?$adresse2_entr:''; ?>
</td>
</tr>
<tr>
<td align="left">
<?php echo isset($code_postal_entr)?$code_postal_entr:(isset($code_postalEtudiant)?$code_postalEtudiant:''); ?> <?php echo isset($ville_entr)?$ville_entr:(isset($villeEtudiant)?$villeEtudiant:''); ?>
</td>
</tr>
Pour le CSS je ne vois pas où tu mets la relation entre les classes de styles CSS et les DIV HTML dans afficher_attestation.php.
C'est pour cela que l'attestation n'est pas affectée par les styles que tu mets dans current.css.

Tu dois spécifier pour les div adéquats leurs classes css adéquates comme par exemple, pour le logo affiché dans l'attestation, tu as prévu une classe css nommée "logo2"
div.logo2{

border: 2px solid blue;

}
Ce style est déclaré comme: balise.nom_classe ici le nom_classe est précédé forcement par un point car c'est un nom de classe. Il est précédé par le nom d'une balise pour dire que cette classe ne s'appliquera qu'à cette balise.

Pour l'associer au DIV adéquat dans afficher_attestation.php il faut écrire comme ça:
 <div class="logo2" align="left"><img src="images/logo.png" width="205px" height="82px" alt="logo"></img>   </div>
C'est l'attribut class qui spécifie une classe de style css pour une balise.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

14 juin 2011, 01:15

Merci pour tout.


Sinon j'aurais une question :

Si je veux créer une gestion des notes je peux garder cette base vu qu'il y a les profs, les étudiants et les matières.?

si oui sa prendrait combien de temps pour créer une gestion des notes?je pense que pour HTML c'est super rapide mais c'est plutôt quelle table faut il créer?une table note?
et le plus dur va rester dans le PHP je pense a moins que cela soit tout simple.je ne me rend pas compte.


Merci d'avance.

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

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

15 juin 2011, 23:03

Bonjour,
Merci pour tout.


Sinon j'aurais une question :

Si je veux créer une gestion des notes je peux garder cette base vu qu'il y a les profs, les étudiants et les matières.?

si oui sa prendrait combien de temps pour créer une gestion des notes?je pense que pour HTML c'est super rapide mais c'est plutôt quelle table faut il créer?une table note?
et le plus dur va rester dans le PHP je pense a moins que cela soit tout simple.je ne me rend pas compte.


Merci d'avance.
Tu peux utiliser la même base et ajouter effectivement une table "note" liée à "etudiant" et "matiere" et "prof" les programmes php d'ajout, modif, suppression et consultation de notes seront similaires à ce que tu as fait avec les absences.
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.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène