====== Surveillance examen - portail et eScrupule ======
ai-je vraiment besoin de anet_ta ??
====== todo ======
(
(isset($_SESSION['faculte']) && $_SESSION['faculte'] != '')
?(
isset($_SESSION['autres'])
?
" and (anet_ta.faculte NOT IN ( '" . implode($_SESSION['$arrayFacExlusion'], "', '") . "' )
and (anet_ta.faculte = '".$_SESSION['faculte']."' or cours_ta.faculte = '".$_SESSION['faculte']."'))"
:
" and (anet_ta.faculte = '".$_SESSION['faculte']."' or cours_ta.faculte = '".$_SESSION['faculte']."')"
)
:
""
);
===== Liste des cours ayant un examen lors de cette session =====
**original** :
select distinct session_cours_ta.ID_session_cours_ta
from session_cours_ta
inner join cours_ta
on cours_ta.ID_cours_ta = session_cours_ta.ID_cours
inner join session_cours_date_ta
on session_cours_date_ta.ID_session_cours = session_cours_ta.ID_session_cours_ta
where session_cours_ta.ID_session='".$_REQUEST['ID_session_ta']."'
and (session_cours_ta.type_exam = 'E' or session_cours_ta.type_exam = 'P')
order by cours_ta.mnemonique"
**steph** : j'enleve l'order by inutile
SELECT DISTINCT session_cours_ta.ID_session_cours_ta
FROM session_cours_ta
INNER JOIN cours_ta
ON cours_ta.ID_cours_ta = session_cours_ta.ID_cours
INNER JOIN session_cours_date_ta
ON session_cours_date_ta.ID_session_cours = session_cours_ta.ID_session_cours_ta
WHERE session_cours_ta.ID_session='71'
AND ( session_cours_ta.type_exam = 'E'
OR session_cours_ta.type_exam = 'P')
resultat : meme nombre de lignes : 663 \\
**test avec table temporaire**
CREATE TEMPORARY TABLE cours_ayant_examens (
ID_session_cours_ta int(11)
);
INSERT INTO cours_ayant_examens (ID_session_cours_ta)
SELECT DISTINCT session_cours_ta.ID_session_cours_ta
FROM session_cours_ta
INNER JOIN cours_ta
ON cours_ta.ID_cours_ta = session_cours_ta.ID_cours
INNER JOIN session_cours_date_ta
ON session_cours_date_ta.ID_session_cours = session_cours_ta.ID_session_cours_ta
WHERE session_cours_ta.ID_session='71'
AND ( session_cours_ta.type_exam = 'E'
OR session_cours_ta.type_exam = 'P') ;
SELECT * FROM cours_ayant_examens ;
resultat: meme nombre de ligne : 663 \\
Donc maintenant pour la requete suivante on peut la faire en jointure avec cette table temporaire
===== 2e Requete : Kesako ?? =====
On boucle sur les resultat de la premiere requete et pour chaque ligne on execute la requete suivante :
// envoi confirmation mails surveillance examens écrits aux titulaires
for($CptExamenSession=0;$CptExamenSession
**extraction de la requete : **
select 1 from session_surveillance_ta
where session_surveillance_ta.ID_session_cours='".$LigneExamenSession[0]."'
**rewritten for testing as : **
select 1
from session_surveillance_ta
where session_surveillance_ta.ID_session_cours= 49516
-- or --
SELECT ID_session_surveillance_ta
FROM session_surveillance_ta
WHERE session_surveillance_ta.ID_session_cours= '49516' ;
**nouvelle query 2in1 ***
CREATE TEMPORARY TABLE cours_ayant_examens (
ID_session_cours_ta int(11)
);
INSERT INTO cours_ayant_examens (ID_session_cours_ta)
SELECT DISTINCT session_cours_ta.ID_session_cours_ta
FROM session_cours_ta
INNER JOIN cours_ta
ON cours_ta.ID_cours_ta = session_cours_ta.ID_cours
INNER JOIN session_cours_date_ta
ON session_cours_date_ta.ID_session_cours = session_cours_ta.ID_session_cours_ta
WHERE session_cours_ta.ID_session='71'
AND ( session_cours_ta.type_exam = 'E'
OR session_cours_ta.type_exam = 'P') ;
SELECT cae.ID_session_cours_ta, ss.*
FROM cours_ayant_examens AS cae
INNER JOIN session_surveillance_ta AS ss
ON ss.ID_session_cours = cae.ID_session_cours_ta ;
Cela me donne 16 total (16 lignes).
la query suivante select * from session_surveillance_ta
devrait avoir le meme nombre de lignes soit 16 total, donc c'est bon.
==== Les 2 premieres queries en une seule ====
SELECT DISTINCT session_cours_ta.ID_session_cours_ta, ss.*
FROM session_cours_ta
INNER JOIN cours_ta
ON cours_ta.ID_cours_ta = session_cours_ta.ID_cours
INNER JOIN session_cours_date_ta
ON session_cours_date_ta.ID_session_cours = session_cours_ta.ID_session_cours_ta
INNER JOIN session_surveillance_ta AS ss
ON ss.ID_session_cours = session_cours_ta.ID_session_cours_ta
WHERE session_cours_ta.ID_session='71'
AND ( session_cours_ta.type_exam = 'E'
OR session_cours_ta.type_exam = 'P') ;
==== Essai d'ajout de la troisieme requete ====
SELECT DISTINCT session_cours_ta.ID_session_cours_ta,
ss.*,
agent_ta.matricule, agent_ta.nom, agent_ta.prenom, agent_ta.ID_agent_ta, agent_ta.email
FROM session_cours_ta
INNER JOIN cours_ta
ON cours_ta.ID_cours_ta = session_cours_ta.ID_cours
INNER JOIN session_cours_date_ta
ON session_cours_date_ta.ID_session_cours = session_cours_ta.ID_session_cours_ta
INNER JOIN session_surveillance_ta AS ss
ON ss.ID_session_cours = session_cours_ta.ID_session_cours_ta
INNER JOIN agent_ta
ON ss.ID_agent = agent_ta.ID_agent_ta
WHERE session_cours_ta.ID_session='71'
AND ( session_cours_ta.type_exam = 'E'
OR session_cours_ta.type_exam = 'P') ;
J'ai enlevé la partie où on vérifie la charge et les mandats et les statuts ... c'est inutile car la personne ne serait pas dans la table **session_cours_ta** si elle ne satisfiait pas ces critères. Cette vérification a déja été faite lors de l'insertion et lors de la proposition
de choisir une personne. \\
Resultat :
ID_session_cours_ta ID_session_surveillance_ta ID_session_cours ID_agent matricule nom prenom ID_agent_ta email
49484 33 49484 1480 52101 ALEXANDRIDOU Alexandra 1480 Alexandra.Alexandridou@ulb.ac.be
49479 30 49479 1480 52101 ALEXANDRIDOU Alexandra 1480 Alexandra.Alexandridou@ulb.ac.be
49473 39 49473 1480 52101 ALEXANDRIDOU Alexandra 1480 Alexandra.Alexandridou@ulb.ac.be
49472 37 49472 1480 52101 ALEXANDRIDOU Alexandra 1480 Alexandra.Alexandridou@ulb.ac.be
49465 27 49465 1480 52101 ALEXANDRIDOU Alexandra 1480 Alexandra.Alexandridou@ulb.ac.be
49461 26 49461 1253 47819 ANDRIANNE Gilles 1253 Gilles.Andrianne@ulb.ac.be
49033 38 49033 1480 52101 ALEXANDRIDOU Alexandra 1480 Alexandra.Alexandridou@ulb.ac.be
49067 23 49067 609 27700 DAULIE Renaud 609 Renaud.DAULIE@ulb.ac.be
48933 19 48933 1480 52101 ALEXANDRIDOU Alexandra 1480 Alexandra.Alexandridou@ulb.ac.be
48951 29 48951 876 18175 KAPPEL Jenny 876 Jenny.Kappel@ulb.ac.be
48951 28 48951 1254 47293 ESSEX Richard 1254 Richard.Essex@ulb.ac.be
48952 32 48952 1254 47293 ESSEX Richard 1254 Richard.Essex@ulb.ac.be
48986 36 48986 1480 52101 ALEXANDRIDOU Alexandra 1480 Alexandra.Alexandridou@ulb.ac.be
49254 35 49254 1480 52101 ALEXANDRIDOU Alexandra 1480 Alexandra.Alexandridou@ulb.ac.be
49253 34 49253 1480 52101 ALEXANDRIDOU Alexandra 1480 Alexandra.Alexandridou@ulb.ac.be
49006 31 49006 1480 52101 ALEXANDRIDOU Alexandra 1480 Alexandra.Alexandridou@ulb.ac.be
==== 4e requete + horaire ====
SELECT DISTINCT agent_ta.email, session_cours_ta.ID_session_cours_ta,
ss.*,
agent_ta.matricule, agent_ta.nom, agent_ta.prenom,
cours_ta.mnemonique,
session_cours_date_ta.*
FROM session_cours_ta
INNER JOIN cours_ta
ON cours_ta.ID_cours_ta = session_cours_ta.ID_cours
INNER JOIN session_cours_date_ta
ON session_cours_date_ta.ID_session_cours = session_cours_ta.ID_session_cours_ta
INNER JOIN session_surveillance_ta AS ss
ON ss.ID_session_cours = session_cours_ta.ID_session_cours_ta
INNER JOIN agent_ta
ON ss.ID_agent = agent_ta.ID_agent_ta
WHERE session_cours_ta.ID_session='71'
AND ( session_cours_ta.type_exam = 'E'
OR session_cours_ta.type_exam = 'P')
**resultat** :
email ID_session_cours_ta ID_session_surveillance_ta ID_session_cours ID_agent matricule nom prenom mnemonique
Alexandra.Alexandridou@ulb.ac.be 49484 33 49484 1480 52101 ALEXANDRIDOU Alexandra LANG-S-212
Alexandra.Alexandridou@ulb.ac.be 49479 30 49479 1480 52101 ALEXANDRIDOU Alexandra LANG-S-211
Alexandra.Alexandridou@ulb.ac.be 49473 39 49473 1480 52101 ALEXANDRIDOU Alexandra LANG-S-201
Alexandra.Alexandridou@ulb.ac.be 49472 37 49472 1480 52101 ALEXANDRIDOU Alexandra LANG-S-201
Alexandra.Alexandridou@ulb.ac.be 49465 27 49465 1480 52101 ALEXANDRIDOU Alexandra LANG-S-1002
Gilles.Andrianne@ulb.ac.be 49461 26 49461 1253 47819 ANDRIANNE Gilles LANG-S-1001
[...]
Un peut comme le haut de la page :
SELECT DISTINCT session_cours_date_ta.date_exam, cours_ta.mnemonique, session_cours_date_ta.heure_exam, session_cours_ta.local,
agent_ta.email, agent_ta.matricule,
FROM session_cours_ta
INNER JOIN cours_ta
ON cours_ta.ID_cours_ta = session_cours_ta.ID_cours
INNER JOIN session_cours_date_ta
ON session_cours_date_ta.ID_session_cours = session_cours_ta.ID_session_cours_ta
INNER JOIN session_surveillance_ta AS ss
ON ss.ID_session_cours = session_cours_ta.ID_session_cours_ta
INNER JOIN agent_ta
ON ss.ID_agent = agent_ta.ID_agent_ta
WHERE session_cours_ta.ID_session='71'
AND ( session_cours_ta.type_exam = 'E'
OR session_cours_ta.type_exam = 'P')
ORDER BY session_cours_date_ta.date_exam, session_cours_date_ta.heure_exam, cours_ta.mnemonique, session_cours_ta.local,
agent_ta.email, agent_ta.matricule, agent_ta.nom, agent_ta.prenom
**resultat :**
ID_session_cours_date_ta date_exam ID_cours_ta mnemonique heure_exam local ID_agent_ta email matricule
42154 2016-05-17 35216 LANG-S-1001 09:00:00 S.K.1.105/S.UB2.252A 1253 Gilles.Andrianne@ulb.ac.be 47819
42158 2016-05-17 35217 LANG-S-1002 09:00:00 S.K.1.105/S.UB2.252A 1480 Alexandra.Alexandridou@ulb.ac.be 52101
41644 2016-05-17 26604 GERM-B-105 14:00:00 S.UB2.252A 876 Jenny.Kappel@ulb.ac.be 18175
41644 2016-05-17 26604 GERM-B-105 14:00:00 S.UB2.252A 1254 Richard.Essex@ulb.ac.be 47293
42172 2016-05-17 35224 LANG-S-211 17:30:00 S.JANSON 1480 Alexandra.Alexandridou@ulb.ac.be 52101
[...]
===== avec les titulaires =====
SELECT DISTINCT titulaire.email, session_cours_date_ta.ID_session_cours_date_ta, session_cours_date_ta.date_exam, cours_ta.ID_cours_ta, cours_ta.mnemonique,
session_cours_date_ta.heure_exam, session_cours_ta.local,
surveillant.ID_agent_ta, surveillant.email, surveillant.matricule
FROM session_cours_ta
INNER JOIN cours_ta
ON cours_ta.ID_cours_ta = session_cours_ta.ID_cours
INNER JOIN session_cours_date_ta
ON session_cours_date_ta.ID_session_cours = session_cours_ta.ID_session_cours_ta
INNER JOIN session_surveillance_ta AS ss
ON ss.ID_session_cours = session_cours_ta.ID_session_cours_ta
INNER JOIN agent_ta AS surveillant
ON ss.ID_agent = surveillant.ID_agent_ta
INNER JOIN charge_ta
ON charge_ta.ID_cours = cours_ta.ID_cours_ta
AND (charge_ta.Statut='T' OR charge_ta.Statut='C' OR charge_ta.Statut='S')
AND charge_ta.Anac = 2015
INNER JOIN agent_ta AS titulaire
ON titulaire.ID_agent_ta = charge_ta.ID_agent
WHERE session_cours_ta.ID_session='71'
AND ( session_cours_ta.type_exam = 'E'
OR session_cours_ta.type_exam = 'P')
ORDER BY session_cours_date_ta.date_exam, session_cours_date_ta.heure_exam, cours_ta.mnemonique, session_cours_ta.local,
surveillant.email, surveillant.matricule, surveillant.nom, surveillant.prenom