Bonjour,
Commence d'abord par concevoir et créer la base de données. Aide-toi en utilisant des logiciels de conception comme :
Avec MySQL Workbench tu peux construire le schéma de la base de données et en exporter le code SQL sous MySQL de WampServer en utilisant l'interface PHPMyAdmin.
Dans ton cas tu ne précise pas de quelle type de gestion d'absences/présences il s'agit. Mais je vais te donner une ébauche de gestion des absences/présences d'élèves pour une séance de cours par exemple:
identification du temps de présence à contrôler pour une séance de cours:
- * nom de la séance
* la date de la séance
* horaire (tranches horaires) ex: 8:00/12:00, 14:00/18:00 ou 8:00/10:00, 10:00/12:00, ...
identification des élèves participant à cette séance de cours :
Le croisement entre l'horaire de la séance de cours et la liste des élèves donne naissance aux informations d'assiduité relevées pour les élèves à savoir : présence ou absence.
voici donc les information identifiant une assiduité:
- * nom élève
* nom séance
* assiduité qui peut être soit : présent ou absent
Donc on dispose pour ce système de 3 supports d'information distincts : la séance, les élèves et le relevé d'assiduité. Donc 3 tables dont 2 principales : les tables "séance" et "élève" et la troisième table "assiduité" qui est issue de l'association des 2 premières tables, constitue une relation entre séance et élève.
La relation entre séance et assiduité est le nom de la séance (on peut utiliser des codes identificateurs abrégés au lieu des noms texte long)
La relation entre élève et assiduité est le nom de l'élève (on peut utiliser des codes identificateurs abrégés au lieu des noms texte long)
Voila. Selon cette conception et conformément aux normes de modélisations des bases de données, on se doit de construire un modèle relationnel correctement formé, qui ressemble à celui-ci:
- Table Seance (idSeance texte(20) (clé primaire), nom texte(255), date date/heure, idProf texte(20), ...)
Table Eleve (idEleve texte(20)(clé primaire), nom texte(45), prenom texte(45), idGroupe texte(20), ...)
Table Assiduite (idSeance texte(20)(clé étrangère de Seance.idSeance), idEleve texte(20)(clé étrangère de Eleve.idEleve), present booleen (vrai ou faux) par défaut faux) (clé primaire = idSeance + idEleve)
Voici un jeu d'essai qui valide la structure de données au sein de ce système relationnel:
Les séances:
idSeance -------- nom ------------------ date --------------- idProf
-------------------------------------------------------------------------------
PHP-NIV-1 ------- PHP Niveau 1 ------- 30-03-2011 ------- M. LEPROF
PHP-NIV-2 ------- PHP Niveau 2 ------- 18-04-2011 ------- Mme LAPROF
Les élèves (par exemple d'un groupe nommé "BTS-INF-A1"):
idEleve --------------- nom -------------- prenom ----- idGroupe
---------------------------------------------------------------------------
BTS-INF-A1-01 ------- LABELLE --------- Aline ------- BTS-INF-A1
BTS-INF-A1-02 ------- BONHOMME ----- Olivier ----- BTS-INF-A1
BTS-INF-A1-03 ------- JAMAISLA-------- Stéphane --- BTS-INF-A1
...
L'assuiduité des élèves du groupe "BTS-INF-A1" relevée pendant le cours "PHP-NIV-1":
idSeance -------- idEleve ---------------- present
--------------------------------------------------------
PHP-NIV-1 ------- BTS-INF-A1-01 ------- 1
PHP-NIV-1 ------- BTS-INF-A1-02 ------- 1
PHP-NIV-1 ------- BTS-INF-A1-03 ------- 0 (=> absent)
...
Voici la requête SQL qui vérifie la cohérence du modèle en listant les élèves absents par groupe et séances dans le temps:
SELECT e.idGroup, e.idEleve, e.nom, e.prenom, s.date, s.idSeance
FROM eleve e JOIN assiduite a ON e.idEleve = a.idEleve JOIN seance s ON s.idSeance = a.idSeance
WHERE a.present = 0
ORDER BY e.idGroup, e.nom, e.prenom, s.date, s.idSeance
Ce qui donne le résultat suivant:
idGroupe ------- idEleve ----------- nom ---------- prenom ------ date ---------- idSeance
------------------------------------------------------------------------------------------------------
BTS-INF-A1---- BTS-INF-A1-03 ---JAMAISLA-----Stéphane -----30-03-2011--- PHP-NIV-1
...
... (les autres absents)
...
Voila. J'espère que cela aidera.