Modification de la bdd + affichage des modules + dragndrop en cours + affichage à arranger/refaire

This commit is contained in:
xdrm-brackets 2015-10-28 18:08:12 +01:00
parent 29ac8943bc
commit c86836c1b2
24 changed files with 1411 additions and 1054 deletions

View File

@ -1,4 +1,6 @@
<?php define('__ROOT__', dirname(__FILE__) ); <?php define('__ROOT__', dirname(__FILE__) );
require_once __ROOT__.'/manager/security.php';
/* GESTION DE L'AUTHENTIFICATION - SI L'UTILISATEUR EST CONNECTÉ */ /* GESTION DE L'AUTHENTIFICATION - SI L'UTILISATEUR EST CONNECTÉ */
@ -55,6 +57,8 @@
/* MODULE */ /* MODULE */
/**********/ /**********/
case 'modules': case 'modules':
if( isset($request->level_1) ){ require_once __ROOT__.'/manager/modules.php'; modules_switch_level_1($request, $answer); }
else { $answer->request = 'missing_level_1'; }
break; break;

25
css/global.css Normal file → Executable file
View File

@ -119,7 +119,7 @@ table.basic tr:hover td{
#CONTAINER section > p{ #CONTAINER section > p{
/* position */ /* position */
padding: 1em; padding: 1em;
margin-left: 10em; margin-left: 1em;
/* border */ /* border */
border-radius: 3px; border-radius: 3px;
@ -131,20 +131,19 @@ table.basic tr:hover td{
} }
#CONTAINER section > p:before{ #CONTAINER section > p:before{
content: attr(data-pre); content: '';
/* position */ /* position */
display: block; display: block;
position: absolute; position: absolute;
top: 2em; top: calc( 2.7em - 3px );
left: 0; left: calc( 1.1em - 5px );
width: 8em;
height: 1.3em;
padding: 1em;
margin-left: 1em;
/* foreground */ /* border */
color: #666; border: calc(1em + 3px) solid transparent;
text-align: right; border-right-color: #ddd;
/* Z */
z-index: -1;
} }
#CONTAINER section > p:after{ #CONTAINER section > p:after{
@ -153,12 +152,12 @@ table.basic tr:hover td{
display: block; display: block;
position: absolute; position: absolute;
top: 2.7em; top: 2.7em;
left: 10.1em; left: 1.1em;
/* border */ /* border */
border: 1em solid transparent; border: 1em solid transparent;
border-right-color: #fff; border-right-color: #fff;
/* Z */ /* Z */
z-index: 1; z-index: 2;
} }

View File

@ -305,3 +305,16 @@ body{
background-color: #3dcc70; background-color: #3dcc70;
color: #fff; color: #fff;
} }
/* errorbox (identifiants incorrects) */
#AUTH span.errorbox{
/* position */
display: inline-block;
position: relative;
padding-top: 1em;
padding-left: 1em;
color: #ff5c5c;
}

View File

@ -1,36 +1,7 @@
<?php define('__ROOT__', dirname(__FILE__) ); <?php define('__ROOT__', dirname(__FILE__) );
require_once __ROOT__.'/manager/security.php'; require_once __ROOT__.'/manager/security.php';
$LOGIN_postAreSet = isset($_POST['username']) && isset($_POST['password']); // variables POST existent
$LOGIN_postStrings = $LOGIN_postAreSet && is_string($_POST['username']) && is_string($_POST['password']); // sont toutes 2 des strings
$LOGIN_postNotEmpty = $LOGIN_postStrings && strlen($_POST['username']) > 1 && strlen($_POST['password']) > 1; // d'au moins 2 caractères
// $_SESSION['username'] = null;
// si on a soumis le formulaire
if( $LOGIN_postNotEmpty ){
$userlist = file_get_contents('src/userlist.json');
$userlistObj = json_decode($userlist);
if( $userlistObj != null ){ // si format non corrompu
if( isset($userlistObj->{$_POST['username']}) ) // si non d'utilisateur connu
if( $userlistObj->{$_POST['username']}->password == $_POST['password'] ) // si mot de passe ok
$_SESSION['username'] = $_POST['username'];
}
}
if( !(isset($_SESSION['username']) && is_string($_SESSION['username']) && strlen($_SESSION['username']) > 1) )
$_SESSION['username'] = null;
/* VARIABLES DES NOTIFICATIONS */ /* VARIABLES DES NOTIFICATIONS */
$memberNotifNum = 10;
$messageNotifNum = 0;
$notifNotifNum = 5; $notifNotifNum = 5;
?> ?>
@ -72,17 +43,19 @@ $notifNotifNum = 5;
<!-- MENU DE LA PAGE --> <!-- MENU DE LA PAGE -->
<nav id='MENU'> <nav id='MENU'>
<?php <?php
if( $_SESSION['username'] != null ) // si $_SESSION['username'] est défini if( $_SESSION['identifiant'] != null ) // si $_SESSION['identifiant'] est défini
echo "<div class='userdata M'>".$_SESSION['username']."</div>"; echo "<div class='userdata M'>".$_SESSION['identifiant']."</div>";
else else
echo "<div class='userdata'>Connexion</div>"; echo "<div class='userdata'>Connexion</div>";
?> ?>
<span data-link='home' >Accueil </span> <span data-link='home' >Accueil </span>
<?php if( $_SESSION['identifiant'] != null ){ ?>
<span data-link='groups' >Composition</span> <span data-link='groups' >Composition</span>
<span data-link='ue' >Suivi </span> <span data-link='ue' >Suivi </span>
<span data-link='modules' >Modules </span> <span data-link='modules' >Modules </span>
<span data-link='marks' >Notes </span> <span data-link='marks' >Notes </span>
<span data-link='settings'>Paramètres </span> <span data-link='settings'>Paramètres </span>
<?php } ?>
</nav> </nav>
<!-- HEADER DE LA PAGE --> <!-- HEADER DE LA PAGE -->
@ -94,7 +67,7 @@ $notifNotifNum = 5;
if( $_SESSION['username'] != null ){ // si l'utilisateur est connecté, on affiche les notifications if( $_SESSION['identifiant'] != null ){ // si l'utilisateur est connecté, on affiche les notifications
/* BOUTON DE DECONNECTION */ /* BOUTON DE DECONNECTION */
echo "<div id='LOGOUT' data-info='Déconnection'></div>"; echo "<div id='LOGOUT' data-info='Déconnection'></div>";
@ -148,11 +121,11 @@ $notifNotifNum = 5;
<div id='AUTH_FILTER'></div> <div id='AUTH_FILTER'></div>
<?php if( $_SESSION['username'] == null ){ // si on est pas connecté ?> <?php if( $_SESSION['identifiant'] == null ){ // si on est pas connecté ?>
<form id='AUTH' action='' method='POST'> <form id='AUTH' action='' method='POST'>
<label>Connexion</label> <label>Connexion</label>
<input type='text' name='username' placeholder='Username'> <input type='text' name='identifiant' placeholder='Username'>
<input type='password' name='password' placeholder='Password'> <input type='password' name='mdp' placeholder='Password'>
<span class='errorbox'>&nbsp</span> <span class='errorbox'>&nbsp</span>
<input type='button' value='Connection'> <input type='button' value='Connection'>
</form> </form>

View File

@ -181,6 +181,10 @@ var connected = !( DOM.AUTH.children[0].innerHTML == 'Connexion' );
if( target != null ) if( target != null )
addClass(target, 'active'); addClass(target, 'active');
// on définit la sous-page de pageManager.js
pageM.vars[0] = subSection.dataset.sectname;
pageM.updateURL();
addClass(subSection, 'active'); // on active @subSection addClass(subSection, 'active'); // on active @subSection
} }
@ -307,20 +311,8 @@ initForm( // initialisation du formulaire de connection
API.send(request, function(response){ API.send(request, function(response){
if( response.request == 'success' )// si connection ok if( response.request == 'success' )// si connection ok
document.location = ''; document.location = '';
else
document.querySelector('#AUTH .errorbox').innerHTML = 'Identifiants incorrects.';
}); });
} }
); );
/* TEST DRAG N DROP */
var dnd = new DragnDrop();
setTimeout(function(){
var members = document.querySelectorAll('#CONTAINER table.basic tr td:not(.more)');
for( var i = 0 ; i < members.length ; i++ ){
dnd.setDraggable(members[i]);
dnd.setDroppable(members[i]);
}
dnd.init();
}, 500);

23
js/dragndrop.js Normal file → Executable file
View File

@ -41,16 +41,15 @@ DragnDrop.prototype = {
// evenement mousedown // evenement mousedown
document.body.addEventListener('mousedown', function(e){ document.body.addEventListener('mousedown', function(e){
if( pointer.draggableElements.indexOf(e.target) > -1 ){ // si l'élément est dans la liste des "draggables" if( pointer.draggableElements.indexOf(e.target) > -1 ){ // si l'élément est dans la liste des "draggables"
pointer.dragElement = e.target; pointer.dragElement = e.target.parentNode;
DOM.DRAGNDROP.innerHTML = ''; DOM.DRAGNDROP.innerHTML = '';
DOM.DRAGNDROP.appendChild( e.target.cloneNode() ); DOM.DRAGNDROP.appendChild( e.target.parentNode.cloneNode() );
DOM.DRAGNDROP.children[0].innerHTML = e.target.innerHTML; DOM.DRAGNDROP.children[0].innerHTML = e.target.parentNode.innerHTML;
DOM.DRAGNDROP.children[0].style.border = '1px solid #aaa'; DOM.DRAGNDROP.children[0].style.border = '1px solid #aaa';
DOM.DRAGNDROP.children[0].style.boxShadow = '0 0 10px #ddd'; DOM.DRAGNDROP.children[0].style.boxShadow = '0 0 10px #ddd';
DOM.DRAGNDROP.style.top = e.clientY + 'px'; DOM.DRAGNDROP.style.top = e.clientY + 'px';
DOM.DRAGNDROP.style.left = e.clientX + 'px'; DOM.DRAGNDROP.style.left = e.clientX + 'px';
DOM.DRAGNDROP.style.display = 'block'; DOM.DRAGNDROP.style.display = 'block';
e.target.style.backgroundColor = '#28b965';
pointer.state = true; pointer.state = true;
} }
}, false); }, false);
@ -61,11 +60,12 @@ DragnDrop.prototype = {
DOM.DRAGNDROP.style.top = e.clientY + 'px'; DOM.DRAGNDROP.style.top = e.clientY + 'px';
DOM.DRAGNDROP.style.left = e.clientX + 'px'; DOM.DRAGNDROP.style.left = e.clientX + 'px';
if( pointer.droppableElements.indexOf(e.target) > -1 ) // si on est sur un "receveur"
e.target.style.backgroundColor = '#28b965';
else
for( var i = 0 ; i < pointer.droppableElements.length ; i++ ) for( var i = 0 ; i < pointer.droppableElements.length ; i++ )
pointer.droppableElements[i].style.backgroundColor = 'inherit'; pointer.droppableElements[i].style.color = '#777';
if( pointer.droppableElements.indexOf(e.target) > -1 )
e.target.style.color = 'red';
} }
}, false); }, false);
@ -74,10 +74,6 @@ DragnDrop.prototype = {
if( pointer.state ){ if( pointer.state ){
DOM.DRAGNDROP.style.display = 'none'; DOM.DRAGNDROP.style.display = 'none';
pointer.state = false; pointer.state = false;
for( var i = 0 ; i < pointer.draggableElements.length ; i++ )
pointer.draggableElements[i].style.backgroundColor = 'inherit';
for( var i = 0 ; i < pointer.droppableElements.length ; i++ )
pointer.droppableElements[i].style.backgroundColor = 'inherit';
if( pointer.droppableElements.indexOf(e.target) > -1 ){ // si l'élément est dans la liste des "draggables" et qu'il est "draggé" if( pointer.droppableElements.indexOf(e.target) > -1 ){ // si l'élément est dans la liste des "draggables" et qu'il est "draggé"
pointer.dropElement = e.target; pointer.dropElement = e.target;
@ -85,6 +81,9 @@ DragnDrop.prototype = {
console.log('Dest. : '); console.log( pointer.dropElement ); console.log('Dest. : '); console.log( pointer.dropElement );
} }
for( var i = 0 ; i < pointer.droppableElements.length ; i++ )
pointer.droppableElements[i].style.color = '#777';
} }
}, false); }, false);

View File

@ -136,6 +136,14 @@ pageManager.prototype = {
}); });
}, },
/* =======================================================================
Met à jour l'URL de la page en fonction de la page chargée et des
variables associées (ne recharge aucune ressource)
======================================================================= */
updateURL: function(){
window.history.pushState(null, this.page, '#/'+this.page+'/'+this.vars.join('/')+'/');
},
/* ======================================================================= /* =======================================================================
Cette fonction est celle qui gère les 2 autres et celle que l'utilisateur utilisera Cette fonction est celle qui gère les 2 autres et celle que l'utilisateur utilisera
PARAMETRES: PARAMETRES:

View File

@ -1,4 +1,5 @@
<?php <?php require_once __ROOT__.'/manager/security.php';
class DataBase{ class DataBase{
@ -23,36 +24,37 @@ class DataBase{
/* retourne une instance de la classe */ /* retourne une instance de la classe */
public static function getInstance(){ public static function getInstance(){
return new DataBase("localhost", "sid", "php", "Qt358nUdyeTxLDM8"); return new DataBase("localhost", "sid2", "php", "Qt358nUdyeTxLDM8");
} }
/*********************************************/ /*********************************************/
/*** création d'un utilisateur dans la bdd ***/ /*** création d'un utilisateur dans la bdd ***/
/*********************************************/ /*********************************************/
public function creerUtilisateur($username, $prenom, $nom, $email, $password, $droits){ public function creerUtilisateur($identifiant, $prenom, $nom, $mail, $mdp, $droits){
$getLastId = $this->pdo->query('SELECT max(`id_utilisateur`) as `id` FROM `utilisateurs`'); $getLastCount = $this->pdo->query('SELECT count(identifiant) as count FROM utilisateur');
$lastId = (int) $getLastId->fetch()['id']; $lastCount = (int) $getLastCount->fetch()['count'];
// on applique une normalisation // on applique une normalisation
$prenom = ucwords( strtolower($prenom) ); // majuscule à chaque mot sinon minuscule $prenom = ucwords( strtolower($prenom) ); // majuscule à chaque mot sinon minuscule
$nom = strtoupper($nom); // nom en majuscules $nom = strtoupper($nom); // nom en majuscules
$email = strtolower($email); // email en minuscules $mail = strtolower($mail); // email en minuscules
$password = sha1($password); // on hash le password $mdp = sha1($mdp); // on hash le password
$req = $this->pdo->prepare("INSERT INTO `utilisateurs`(`id_utilisateur`, `pseudo`, `prenom`, `nom`, `email`, `password`, `droits`) VALUES(default, :pseudo, :prenom, :nom, :email, :password, :droits)"); $req = $this->pdo->prepare("INSERT INTO utilisateur(identifiant, prenom, nom, mail, mdp, droits) VALUES(:identifiant, :prenom, :nom, :mail, :mdp, :droits)");
$req->execute(array( $req->execute(array(
':pseudo' => $username, ':identifiant' => $identifiant,
':prenom' => $prenom, ':prenom' => $prenom,
':nom' => $nom, ':nom' => $nom,
':email' => $email , ':mail' => $mail,
':password' => $password, ':mdp' => $mdp,
':droits' => $droits ':droits' => $droits
)); ));
$added = (int) $this->pdo->lastInsertId(); $getNewCount = $this->pdo->query('SELECT count(identifiant) as count FROM utilisateur');
$newCount = (int) $getNewCount->fetch()['count'];
if( $added > $lastId ) // si on a bien ajouté un entrée if( $newCount > $lastCount ) // si on a bien ajouté un entrée
return 'success'; return 'success';
else else
return 'error'; return 'error';
@ -66,23 +68,23 @@ class DataBase{
/*** création d'un groupe dans la bdd ***/ /*** création d'un groupe dans la bdd ***/
/****************************************/ /****************************************/
public function creerGroupe($nom){ public function creerGroupe($nom){
$getLastId = $this->pdo->query('SELECT max(`id_groupe`) as `id` FROM `groupes`'); $getLastCount = $this->pdo->query('SELECT count(id_groupe) as count FROM groupe');
$lastId = (int) $getLastId->fetch()['id']; $lastCount = (int) $getLastCount->fetch()['count'];
// on applique une normalisation // on applique une normalisation
$nom = strtoupper($nom); // nom en majuscules $nom = strtoupper($nom); // nom en majuscules
$req = $this->pdo->prepare("INSERT INTO `groupes`(`id_groupe`, `nom`) VALUES(default, :nom)"); $req = $this->pdo->prepare("INSERT INTO groupe(id_groupe, nom) VALUES(default, :nom)");
$req->execute(array( $req->execute(array(
':nom' => $nom ':nom' => $nom
)); ));
// echo var_dump( $this->pdo->errorInfo() ).'<br>';
$added = (int) $this->pdo->lastInsertId(); $getNewCount = $this->pdo->query('SELECT count(id_groupe) as count FROM groupe');
$newCount = (int) $getNewCount->fetch()['count'];
if( $added > $lastId ) // si on a bien ajouté un entrée if( $newCount > $lastCount ) // si on a bien ajouté un entrée
return 'success'; return 'success';
else else
return 'error'; return 'error';
@ -92,88 +94,133 @@ class DataBase{
/******************************************************/ /******************************************************/
/*** ajout d'un utilisateur à un groupe dans la bdd ***/ /*** ajout d'un utilisateur à un groupe dans la bdd ***/
/******************************************************/ /******************************************************/
public function ajouterEtudiantGroupe($etudiant, $groupe){ public function ajouterEtudiantGroupe($etudiant, $groupe, $semestre, $annee){
$getLastCount = $this->pdo->query('SELECT count(id_etudiant) as count FROM appartenance');
$lastCount = (int) $getLastCount->fetch()['count'];
// on cherche un utilisateur avec ce pseudo
$getEtudiantUID = $this->pdo->prepare("SELECT `id_utilisateur` FROM `utilisateurs` WHERE `pseudo` = :username"); /*** on cherche un utilisateur avec cet identifiant ***/
$getEtudiantUID = $this->pdo->prepare("SELECT identifiant as id FROM utilisateur WHERE identifiant = :etudiant");
$getEtudiantUID->execute(array( $getEtudiantUID->execute(array(
':username' => $etudiant ':etudiant' => $etudiant
)); ));
// si on trouve, on le définit, sinon on retourne "unknown_user" // si on trouve, on le définit, sinon on retourne "unknown_user"
if( $etudiantUID = $getEtudiantUID->fetch()['id_utilisateur'] ) if( $etudiantUID = $getEtudiantUID->fetch()['id'] )
$etudiantUID = (int) $etudiantUID; $etudiantUID = $etudiantUID;
else else
return 'unknown_user'; return 'unknown_user';
echo '[1]';
/*** on cherche un groupe avec ce nom ***/
// on cherche un groupe avec ce nom $getGroupeUID = $this->pdo->prepare("SELECT id_groupe as id FROM groupe WHERE nom = :nom");
$getGroupeUID = $this->pdo->prepare("SELECT `id_groupe` FROM `groupes` WHERE `nom` = :nom");
$getGroupeUID->execute(array( $getGroupeUID->execute(array(
':nom' => $groupe ':nom' => $groupe
)); ));
// si on trouve, on le définit, sinon on retourne "unknown_group" // si on trouve, on le définit, sinon on retourne "unknown_group"
if( $groupeUID = $getGroupeUID->fetch()['id_groupe'] ) if( $groupeUID = $getGroupeUID->fetch()['id'] )
$groupeUID = (int) $groupeUID; $groupeUID = (int) $groupeUID;
else else
return 'unknown_group'; return 'unknown_group';
echo '[2]'; /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee");
$getSemestreUID->execute(array(
':rang' => $semestre,
':annee' => $annee
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
if( $semestreUID = $getSemestreUID->fetch()['id'] )
$semestreUID = (int) $semestreUID;
else
return 'unknown_semestre';
// si on a l'UID utilisateur & l'UID groupe => on créé l'association // si on a l'UID utilisateur & l'UID groupe => on créé l'association
$asso = $this->pdo->prepare("INSERT INTO `association_utilisateur_groupe`(`id_utilisateur`, `id_groupe`) VALUES( (SELECT `id_utilisateur` FROM `utilisateurs` WHERE `id_utilisateur` = :utilisateur), (SELECT `id_groupe` FROM `groupes` WHERE `id_groupe` = :groupe) )"); $asso = $this->pdo->prepare("INSERT INTO appartenance(id_etudiant, id_groupe, id_semestre) ".
"VALUES( ".
"(SELECT identifiant FROM utilisateur WHERE identifiant = :etudiantUID), ".
"(SELECT id_groupe FROM groupe WHERE id_groupe = :groupeUID), ".
"(SELECT id_semestre FROM semestre WHERE id_semestre = :semestreUID) ".
" )");
$asso->execute(array( $asso->execute(array(
':utilisateur' => $etudiantUID, ':etudiantUID' => $etudiantUID,
':groupe' => $groupeUID ':groupeUID' => $groupeUID,
':semestreUID' => $semestreUID
)); ));
echo '[3]';
$getNewCount = $this->pdo->query('SELECT count(id_etudiant) as count FROM appartenance');
$newCount = (int) $getNewCount->fetch()['count'];
if( $newCount > $lastCount ) // si on a bien ajouté un entrée
return 'success'; return 'success';
else
return 'error';
} }
/******************************************************/ /******************************************************/
/*** retourne la liste des utilisateurs d'un groupe ***/ /*** retourne la liste des utilisateurs d'un groupe ***/
/******************************************************/ /******************************************************/
public function listeEtudiantsGroupe($groupe){ public function listeEtudiantsGroupe($groupe, $semestre, $annee){
// on cherche un groupe avec ce nom /*** on cherche un groupe avec ce nom ***/
$getGroupeUID = $this->pdo->prepare("SELECT `id_groupe` FROM `groupes` WHERE `nom` = :nom"); $getGroupeUID = $this->pdo->prepare("SELECT id_groupe as id FROM groupe WHERE nom = :nom");
$getGroupeUID->execute(array( $getGroupeUID->execute(array(
':nom' => $groupe ':nom' => $groupe
)); ));
// si on trouve pas le groupe, on retourne "unknown_group" // si on trouve, on le définit, sinon on retourne "unknown_group"
if( !($groupeUID = $getGroupeUID->fetch()['id_groupe']) ) if( $groupeUID = $getGroupeUID->fetch()['id'] )
$groupeUID = (int) $groupeUID;
else
return 'unknown_group'; return 'unknown_group';
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee");
$getSemestreUID->execute(array(
':rang' => $semestre,
':annee' => $annee
));
// si le groupe existe => on créé récupère ses utilisateurs // si on trouve, on le définit, sinon on retourne "unknown_group"
$asso = $this->pdo->prepare("SELECT `u`.`pseudo`, `u`.`prenom`, `u`.`nom`, `u`.`email`, `u`.`droits` ". if( $semestreUID = $getSemestreUID->fetch()['id'] )
"FROM `utilisateurs` as `u`, `groupes` as `g`, `association_utilisateur_groupe` as `asso` ". $semestreUID = (int) $semestreUID;
"WHERE `u`.`id_utilisateur` = `asso`.`id_utilisateur` ". else
"AND `g`.`id_groupe` = `asso`.`id_groupe` ". return 'unknown_semestre';
"AND `g`.`nom` = :groupe ".
"ORDER BY `u`.`prenom`, `u`.`nom`");
$asso->execute(array(
':groupe' => $groupe // si le groupe existe => on récupère ses utilisateurs
$appartenance = $this->pdo->prepare("SELECT u.identifiant, u.prenom, u.nom, u.mail, u.droits ".
"FROM utilisateur as u, groupe as g, semestre as s, appartenance as app ".
"WHERE u.identifiant = app.id_etudiant ".
"AND g.id_groupe = app.id_groupe ".
"AND s.id_semestre = app.id_semestre ". // à virer (peut-être)
"AND g.id_groupe = :groupeUID ".
"AND s.id_semestre = :semestreUID ".
"ORDER BY u.prenom, u.nom");
$appartenance->execute(array(
':groupeUID' => $groupeUID,
':semestreUID' => $semestreUID
)); ));
$userlist = $asso->fetchAll(); $userlist = $appartenance->fetchAll();
// on supprime les doublons des entrées (indice numérique) // on supprime les doublons des entrées (indice numérique)
for( $j = 0 ; $j < count($userlist) ; $j++ ) // pour tout les utilisateurs for( $i = 0 ; $i < count($userlist) ; $i++ ) // pour tout les utilisateurs
foreach($userlist[$j] as $col => $val) // pour toutes les entrées foreach($userlist[$i] as $col => $val) // pour toutes les entrées
if( is_int($col) ) // si l'indice est un entier if( is_int($col) ) // si l'indice est un entier
unset( $userlist[$j][$col] ); // on le supprime unset( $userlist[$i][$col] ); // on le supprime
return $userlist; // on retourne le liste d'utilisateurs return $userlist; // on retourne le liste d'utilisateurs
@ -183,19 +230,41 @@ class DataBase{
/******************************************************/ /******************************************************/
/*** retourne la liste des utilisateurs des groupes ***/ /*** retourne la liste des utilisateurs des groupes ***/
/******************************************************/ /******************************************************/
public function listeEtudiantsTousGroupes(){ public function listeEtudiantsTousGroupes($semestre, $annee){
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee");
$getSemestreUID->execute(array(
':rang' => $semestre,
':annee' => $annee
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
if( $semestreUID = $getSemestreUID->fetch()['id'] )
$semestreUID = (int) $semestreUID;
else
return 'unknown_semestre';
// on cherche tout les groupes du même semestre de la même année
$getGroupesUID = $this->pdo->prepare("SELECT DISTINCT g.nom ".
"FROM groupe as g, semestre as s, appartenance as app ".
"WHERE g.id_groupe = app.id_groupe ".
"AND s.id_semestre = app.id_semestre ".
"AND s.id_semestre = :semestreUID ".
"ORDER BY g.nom");
$getGroupesUID->execute(array(
':semestreUID' => $semestreUID
));
$grouplist = array(); // contiendra tout les groupes $grouplist = array(); // contiendra tout les groupes
// on cherche tout les groupes
$getGroupesUID = $this->pdo->query("SELECT `id_groupe`, `nom` FROM `groupes` ORDER BY `nom`");
// on parcourt tous les groupes // on parcourt tous les groupes
while( $groupeUID = $getGroupesUID->fetch() ){ while( $groupeUID = $getGroupesUID->fetch() ){
$groupe = new stdClass(); $groupe = new stdClass();
$groupe->nom = $groupeUID['nom']; // attribut "nom" ajouté au groupe $groupe->nom = $groupeUID['nom']; // attribut "nom" ajouté au groupe
$groupe->userlist = $this->listeEtudiantsGroupe($groupe->nom); // on charge la liste des utilisateurs de ce groupe $groupe->userlist = $this->listeEtudiantsGroupe($groupe->nom, $semestre, $annee); // on charge la liste des utilisateurs de ce groupe
array_push($grouplist, $groupe); // on l'ajoute au résultat array_push($grouplist, $groupe); // on l'ajoute au résultat
} }
@ -208,16 +277,28 @@ class DataBase{
/***********************************************/ /***********************************************/
/*** retourne le nom du groupe d'un étudiant ***/ /*** retourne le nom du groupe d'un étudiant ***/
/***********************************************/ /***********************************************/
public function getGroupeEtudiant($etudiant){ public function getGroupeEtudiant($etudiant, $semestre, $annee){
$grouplist = array(); // contiendra tout les groupes /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee");
$getSemestreUID->execute(array(
':rang' => $semestre,
':annee' => $annee
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
if( $semestreUID = $getSemestreUID->fetch()['id'] )
$semestreUID = (int) $semestreUID;
else
return 'unknown_semestre';
// on cherche le groupe associé // on cherche le groupe associé
$getNomGroupe = $this->pdo->prepare("SELECT `g`.`nom` ". $getNomGroupe = $this->pdo->prepare("SELECT g.nom ".
"FROM `utilisateurs` as `u`, `groupes` as `g`, `association_utilisateur_groupe` as `asso` ". "FROM utilisateur as u, groupe as g, appartenance as app ".
"WHERE `u`.`id_utilisateur` = `asso`.`id_utilisateur` ". "WHERE u.identifiant = app.id_etudiant ".
"AND `g`.`id_groupe` = `asso`.`id_groupe` ". "AND g.id_groupe = app.id_groupe ".
"AND `u`.`pseudo` = :etudiant ".
"ORDER BY `g`.`nom`"); "AND u.identifiant = :etudiant ".
"ORDER BY g.nom");
$getNomGroupe->execute(array( $getNomGroupe->execute(array(
':etudiant' => $etudiant ':etudiant' => $etudiant
)); ));
@ -230,6 +311,75 @@ class DataBase{
} }
/******************************************/
/*** retourne les modules d'un étudiant ***/
/******************************************/
public function getModulesEtudiant($etudiant, $semestre, $annee){
/*** on cherche un utilisateur avec cet identifiant ***/
$getEtudiantUID = $this->pdo->prepare("SELECT identifiant as id FROM utilisateur WHERE identifiant = :etudiant");
$getEtudiantUID->execute(array(
':etudiant' => $etudiant
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if( $etudiantUID = $getEtudiantUID->fetch()['id'] )
$etudiantUID = $etudiantUID;
else
return 'unknown_user';
/*** on cherche le groupe de cet utilisateur ***/
$getGroupeUID = $this->pdo->prepare("SELECT g.id_groupe as id ".
"FROM utilisateur as u, groupe as g, appartenance as app, semestre as s ".
"WHERE app.id_etudiant = u.identifiant ".
"AND app.id_groupe = g.id_groupe ".
"AND app.id_semestre = s.id_semestre ".
"AND u.identifiant = :etudiant ".
"AND s.rang = :semestre ".
"AND s.annee = :annee");
$getGroupeUID->execute(array(
':etudiant' => $etudiant,
':semestre' => $semestre,
':annee' => $annee
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if( $groupeUID = $getGroupeUID->fetch()['id'] )
$groupeUID = $groupeUID;
else
return 'unknown_group';
// si on a l'UID utilisateur & l'UID groupe => on récupère les modules
$getModuleList = $this->pdo->prepare("SELECT DISTINCT m.nom, m.libelle ".
"FROM module as m, groupe as g, semestre as s, programme as prog, ue, appartenance as app ".
"WHERE app.id_semestre = prog.id_semestre ".
"AND app.id_semestre = s.id_semestre ".
"AND app.id_groupe = g.id_groupe ".
"AND prog.id_ue = ue.id_ue ".
"AND prog.id_module = m.id_module ".
"AND g.id_groupe = :groupeUID ".
"AND s.rang = :semestre ".
"AND s.annee = :annee ".
"ORDER BY m.nom, m.libelle ASC");
$getModuleList->execute(array(
':groupeUID' => $groupeUID,
':semestre' => $semestre,
':annee' => $annee
));
$modulelist = $getModuleList->fetchAll(); // on récupère la liste des modules
// on supprime les doublons des entrées (indice numérique)
for( $i = 0 ; $i < count($modulelist) ; $i++ ) // pour tout les modules
foreach($modulelist[$i] as $col => $val) // pour toutes les entrées
if( is_int($col) ) // si l'indice est un entier
unset( $modulelist[$i][$col] ); // on le supprime
return $modulelist;
}
@ -240,7 +390,6 @@ class DataBase{
/******************************************************/ /******************************************************/
/***** déplace un étudiant d'un groupe à un autre *****/ /***** déplace un étudiant d'un groupe à un autre *****/
/******************************************************/ /******************************************************/
public function deplacerEtudiant($nomEtudiant,$nouveauGroupe) { public function deplacerEtudiant($nomEtudiant,$nouveauGroupe) {
// !!! Réfléchir à la gestion des AS, LP etc.. // !!! Réfléchir à la gestion des AS, LP etc..

View File

@ -41,7 +41,7 @@ require_once __ROOT__.'/manager/database.php';
$areSetParam = isset($request->nom) ; // l'argument existe $areSetParam = isset($request->nom) ; // l'argument existe
$typeOkParam = $areSetParam && is_string($request->nom); // si c'est une string $typeOkParam = $areSetParam && is_string($request->nom); // si c'est une string
$nEmptyParam = $typeOkParam && strlen($request->nom) > 0; // d'au moins 1 caractère $nEmptyParam = $typeOkParam && strlen($request->nom) > 0; // d'au moins 1 caractère
$nomCheck = $nEmptyParam && preg_match('/^[a-z -]{1,50}$/i', $request->nom); // nom bon format $nomCheck = $nEmptyParam && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->nom); // nom bon format
if( $nomCheck ){ // si tout les paramètres sont bons if( $nomCheck ){ // si tout les paramètres sont bons
$answer->request = DataBase::getInstance()->creerGroupe($request->nom); $answer->request = DataBase::getInstance()->creerGroupe($request->nom);
@ -53,14 +53,16 @@ require_once __ROOT__.'/manager/database.php';
/* ajout d'un étudiant à un groupe */ /* ajout d'un étudiant à un groupe */
/***********************************/ /***********************************/
case 'add': case 'add':
$areSetParam = isset($request->etudiant) && isset($request->groupe); // les arguments existent $areSetParam = isset($request->etudiant) && isset($request->groupe) && isset($request->semestre) && isset($request->annee); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->groupe); // si c'est des strings $typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->groupe) && is_numeric($request->semestre) && is_numeric($request->annee); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && strlen($request->groupe) > 0; // d'au moins 1 caractère $nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && strlen($request->groupe) > 0; // d'au moins 1 caractère
$utilisateurCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // utilisateur (username) bon format $etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format
$groupeCheck = $utilisateurCheck && preg_match('/^[a-z -]{1,50}$/i', $request->groupe); // groupe (nom) bon format $groupeCheck = $etudiantCheck && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); // groupe (nom) bon format
$semestreCheck = $groupeCheck && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format
$anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
if( $groupeCheck ){ // si tout les paramètres sont bons if( $anneeCheck ){ // si tout les paramètres sont bons
$answer->request = DataBase::getInstance()->ajouterEtudiantGroupe($request->etudiant, $request->groupe); $answer->request = DataBase::getInstance()->ajouterEtudiantGroupe($request->etudiant, $request->groupe, $request->semestre, $request->annee);
}else }else
$answer->request = 'param_error'; $answer->request = 'param_error';
break; break;
@ -69,13 +71,15 @@ require_once __ROOT__.'/manager/database.php';
/* retourne les utilisateurs d'un groupe */ /* retourne les utilisateurs d'un groupe */
/*****************************************/ /*****************************************/
case 'userlist': case 'userlist':
$areSetParam = isset($request->groupe); // l'argument existe $areSetParam = isset($request->groupe) && isset($request->semestre) && isset($request->annee); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->groupe); // si c'est une string $typeOkParam = $areSetParam && is_string($request->groupe) && is_numeric($request->semestre) && is_numeric($request->annee); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->groupe) > 0; // d'au moins 1 caractère $nEmptyParam = $typeOkParam && strlen($request->groupe) > 0; // d'au moins 1 caractère
$groupeCheck = $nEmptyParam && preg_match('/^[a-z -]{1,50}$/i', $request->groupe); // groupe (nom) bon format $groupeCheck = $nEmptyParam && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); // groupe (nom) bon format
$semestreCheck = $groupeCheck && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format
$anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
if( $groupeCheck ){ // si tout les paramètres sont bons if( $anneeCheck ){ // si tout les paramètres sont bons
$userlist = DataBase::getInstance()->listeEtudiantsGroupe($request->groupe); $userlist = DataBase::getInstance()->listeEtudiantsGroupe($request->groupe, $request->semestre, $request->annee);
if( is_array($userlist) ){ // si on a récupéré la liste des utilisateurs if( is_array($userlist) ){ // si on a récupéré la liste des utilisateurs
$answer->userlist = $userlist; $answer->userlist = $userlist;
@ -92,31 +96,43 @@ require_once __ROOT__.'/manager/database.php';
/* retourne les utilisateurs de tous les groupe */ /* retourne les utilisateurs de tous les groupe */
/************************************************/ /************************************************/
case 'grouplist': case 'grouplist':
$grouplist = DataBase::getInstance()->listeEtudiantsTousGroupes(); $areSetParam = isset($request->semestre) && isset($request->annee); // les arguments existent
$typeOkParam = $areSetParam && is_numeric($request->semestre) && is_numeric($request->annee); // si c'est des strings
$semestreCheck = $typeOkParam && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format
$anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
if( $anneeCheck ){
$grouplist = DataBase::getInstance()->listeEtudiantsTousGroupes($request->semestre, $request->annee);
if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs
$answer->grouplist = $grouplist; $answer->grouplist = $grouplist;
$answer->request = 'success'; $answer->request = 'success';
}else // si on a pas récupéré de liste, alors c'est que $grouplist est un message d'erreur }else // si on a pas récupéré de liste, alors c'est que $grouplist est un message d'erreur
$answer->answer = $grouplist; $answer->answer = $grouplist;
}else
return 'param_error';
break; break;
/**********************************************/ /**********************************************/
/* retourne le nom du groupe d'un utilisateur */ /* retourne le nom du groupe d'un utilisateur */
/**********************************************/ /**********************************************/
case 'get': case 'get':
$areSetParam = isset($request->etudiant); // l'argument existe $areSetParam = isset($request->etudiant) && isset($request->semestre) && isset($request->annee); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->etudiant); // si c'est une string $typeOkParam = $areSetParam && is_string($request->etudiant) && is_numeric($request->semestre) && is_numeric($request->annee); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0; // d'au moins 1 caractère $nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0; // d'au moins 1 caractère
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format $etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format
$semestreCheck = $etudiantCheck && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format
$anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
$groupe = DataBase::getInstance()->getGroupeEtudiant($request->etudiant); $groupe = DataBase::getInstance()->getGroupeEtudiant($request->etudiant, $request->semestre, $request->annee);
if( $groupe != 'error' ){ // si on a récupéré quelque chose if( $groupe != 'error' ){ // si on a récupéré quelque chose
$answer->groupe = $groupe; $answer->groupe = $groupe;
$answer->request = 'success'; $answer->request = 'success';
}else // si on a pas récupéré de liste, alors c'est que $grouplist est un message d'erreur }else // si on a pas "success", alors c'est que $groupe est un message d'erreur
$answer->answer = 'error'; $answer->answer = 'error';
break; break;

73
manager/modules.php Executable file
View File

@ -0,0 +1,73 @@
<?php
require_once __ROOT__.'/manager/security.php';
require_once __ROOT__.'/manager/database.php';
/***********************************************************
* *
* MANAGER DES MODULES *
* *
************************************************************
* *
* [0] Constantes *
* [1] ROUTAGE de niveau 1 *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
***********************************************************/
/* [1] ROUTAGE DE NIVEAU 1
============================================================*/
function modules_switch_level_1($request, $answer){
switch( $request->level_1 ){
/***********************************/
/* liste des modules d'un ETUDIANT */
/***********************************/
case 'getByEtudiant':
$areSetParam = isset($request->etudiant) && isset($request->semestre) && isset($request->annee); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->semestre) && is_string($request->annee); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && is_numeric($request->semestre) && is_numeric($request->annee); // des bon types
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{6,100}$/i', $request->etudiant); // nom bon format
$semestreCheck = $etudiantCheck && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format
$anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
if( $anneeCheck ){ // si tout les paramètres sont bons
$modules = DataBase::getInstance()->getModulesEtudiant($request->etudiant, $request->semestre, $request->annee);
if( is_array($modules) ){ // si on a bien un tableau
$answer->modules = $modules; // on renvoie dans answer->modules
$answer->request = 'success'; // et on renvoie success
}else // sinon si c'est pas un tableau
$answer->request = $modules; // on retourne l'erreur
}else
$answer->request = 'param_error';
break;
/***********/
/* DEFAULT */
/***********/
default:
$answer->request = 'unknown_level_1';
break;
}
}
?>

View File

@ -25,7 +25,11 @@
============================================================*/ ============================================================*/
function getPermissions(){ return array('student', 'teacher', 'master', 'admin'); } function getPermissions(){ return array('student', 'teacher', 'master', 'admin'); }
function debug(){
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
}
@ -59,22 +63,18 @@
$PERMISSIONS = getPermissions(); $PERMISSIONS = getPermissions();
// on vérifie l'intégrité des variables session // on vérifie l'intégrité des variables session
$usernameDefinedProperly = isset($_SESSION['username']) && !empty($_SESSION['username']) && gettype($_SESSION['username']) == 'string' && strlen($_SESSION['username']) > 0; $identifiantDefinedProperly = isset($_SESSION['identifiant']) && !empty($_SESSION['identifiant']) && gettype($_SESSION['identifiant']) == 'string' && strlen($_SESSION['identifiant']) > 0;
$permissionsDefinedProperly = isset($_SESSION['permissions']) && !empty($_SESSION['permissions']) && gettype($_SESSION['permissions']) == 'string' && strlen($_SESSION['permissions']) > 0; $droitsDefinedProperly = isset($_SESSION['droits']) && !empty($_SESSION['droits']) && gettype($_SESSION['droits']) == 'string' && strlen($_SESSION['droits']) > 0;
// si les variables sessions ne sont pas toutes les 2 correctes // si les variables sessions ne sont pas toutes les 2 correctes
if( !($usernameDefinedProperly && $permissionsDefinedProperly) ){ if( !($identifiantDefinedProperly && $droitsDefinedProperly) ){
$_SESSION['username'] = null; // on les initialise à NULL $_SESSION['identifiant'] = null; // on les initialise à NULL
$_SESSION['permissions'] = null; $_SESSION['droits'] = null;
} }
}session_init(); }session_init();
function debug(){
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
}

View File

@ -43,18 +43,19 @@ require_once __ROOT__.'/manager/database.php';
/* authentification (login) */ /* authentification (login) */
/****************************/ /****************************/
case 'authentification': case 'authentification':
$areSetParam = isset($request->username) && isset($request->password); // les arguments existent $areSetParam = isset($request->identifiant) && isset($request->mdp); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->username) && is_string($request->password); // ils sont tous 2 des string $typeOkParam = $areSetParam && is_string($request->identifiant) && is_string($request->mdp); // ils sont tous 2 des string
$nEmptyParam = $typeOkParam && strlen($request->username) > 0 && strlen($request->password) > 0; // d'au moins 1 caractère $nEmptyParam = $typeOkParam && strlen($request->identifiant) > 0 && strlen($request->mdp) > 0; // d'au moins 1 caractère
$usernameCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->username); // username bon format $identifiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->identifiant); // identifiant bon format
$passwordCheck = $usernameCheck && preg_match('/^[\w -]{6,100}$/i', $request->password); // password bon format $mdpCheck = $identifiantCheck && preg_match('/^[\w -]{6,100}$/i', $request->mdp); // mdp bon format
if( $passwordCheck ) // si tout les params sont ok if( $mdpCheck ) // si tout les params sont ok
$answer->request = user_authentification($request->username, $request->password); $answer->request = user_authentification($request->identifiant, $request->mdp);
else{ else{
if ( !$areSetParam ) $answer->request = 'missing_param'; if ( !$areSetParam ) $answer->request = 'missing_param';
elseif( !$typeOkParam ) $answer->request = 'wrong_type'; elseif( !$typeOkParam ) $answer->request = 'wrong_type';
else $answer->request = 'empty_param'; elseif( !$nEmptyParam ) $answer->request = 'empty_param';
else $answer->request = 'wrong password';
} }
break; break;
@ -63,8 +64,8 @@ require_once __ROOT__.'/manager/database.php';
/* déconnection */ /* déconnection */
/*****************/ /*****************/
case 'exit': case 'exit':
$_SESSION['username'] = null; // on supprime l'identifiant $_SESSION['identifiant'] = null; // on supprime l'identifiant
if( $_SESSION['username'] == null ) if( $_SESSION['identifiant'] == null )
$answer->request = 'success'; // succès $answer->request = 'success'; // succès
else else
$answer->request = 'error'; $answer->request = 'error';
@ -74,18 +75,18 @@ require_once __ROOT__.'/manager/database.php';
/* création d'utilisateur */ /* création d'utilisateur */
/**************************/ /**************************/
case 'create': case 'create':
$areSetParam = isset($request->username) && isset($request->prenom) && isset($request->nom) && isset($request->email) && isset($request->password) && isset($request->droits); // les arguments existent $areSetParam = isset($request->identifiant) && isset($request->prenom) && isset($request->nom) && isset($request->mail) && isset($request->mdp) && isset($request->droits); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->username) && is_string($request->prenom) && is_string($request->nom) && is_string($request->email) && is_string($request->password) && is_string($request->droits); // ils sont tous 2 des string $typeOkParam = $areSetParam && is_string($request->identifiant) && is_string($request->prenom) && is_string($request->nom) && is_string($request->mail) && is_string($request->mdp) && is_string($request->droits); // ils sont tous 2 des string
$nEmptyParam = $typeOkParam && strlen($request->username) > 0 && strlen($request->prenom) > 0 && is_string($request->nom) && is_string($request->email) && is_string($request->password) && is_string($request->droits); // d'au moins 1 caractère $nEmptyParam = $typeOkParam && strlen($request->identifiant) > 0 && strlen($request->prenom) > 0 && is_string($request->nom) && is_string($request->mail) && is_string($request->mdp) && is_string($request->droits); // d'au moins 1 caractère
$usernameCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->username); // username bon format $identifiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->identifiant); // identifiant bon format
$prenomCheck = $usernameCheck && preg_match('/^[a-z -]{3,50}$/i', $request->prenom); // prenom bon format $prenomCheck = $identifiantCheck && preg_match('/^[a-z -]{3,50}$/i', $request->prenom); // prenom bon format
$nomCheck = $prenomCheck && preg_match('/^[a-z -]{3,50}$/i', $request->nom); // nom bon format $nomCheck = $prenomCheck && preg_match('/^[a-z -]{3,50}$/i', $request->nom); // nom bon format
$emailCheck = $nomCheck && preg_match('/^[\w\.-]+@[\w\.-]+\.[a-z]{2,4}$/i', $request->email); // email bon format $mailCheck = $nomCheck && preg_match('/^[\w\.-]+@[\w\.-]+\.[a-z]{2,4}$/i', $request->mail); // mail bon format
$passwordCheck = $emailCheck && preg_match('/^[\w -]{6,100}$/i', $request->password); // password bon format $mdpCheck = $mailCheck && preg_match('/^[\w -]{6,100}$/i', $request->mdp); // mdp bon format
$droitsCheck = $passwordCheck && is_int(array_search($request->droits, ['student', 'teacher', 'master', 'admin'])); // droits bon format $droitsCheck = $mdpCheck && is_int(array_search($request->droits, ['student', 'teacher', 'master', 'admin'])); // droits bon format
if( $droitsCheck ){ // si tout les paramètres sont bons if( $droitsCheck ){ // si tout les paramètres sont bons
$answer->request = DataBase::getInstance()->creerUtilisateur($request->username, $request->prenom, $request->nom, $request->email, $request->password, $request->droits); $answer->request = DataBase::getInstance()->creerUtilisateur($request->identifiant, $request->prenom, $request->nom, $request->mail, $request->mdp, $request->droits);
}else }else
$answer->request = 'param_error'; $answer->request = 'param_error';
break; break;
@ -158,8 +159,8 @@ require_once __ROOT__.'/manager/database.php';
// [3] On check le mot de passe // [3] On check le mot de passe
if( $userList->{$username}->password == $password ){ if( $userList->{$username}->password == $password ){
// on définit les variables session // on définit les variables session
$_SESSION['username'] = $username; $_SESSION['identifiant'] = $username;
$_SESSION['permissions'] = $userList->{$username}->permissions; $_SESSION['droits'] = $userList->{$username}->permissions;
return 'success'; return 'success';
}else }else
return 'wrong_password'; return 'wrong_password';

View File

@ -1,80 +0,0 @@
/***********************************************************
* *
* SCRIPT LOCAL DE LA PAGE D'AUTHENTIFICATION *
* *
************************************************************
* *
* [0] Variables *
* [1] Gestion des formulaires *
* [a] Gestion des réponses *
* [b] Initialisation des formulaires *
* *
* *
* *
* *
* *
* *
* *
* *
* *
***********************************************************/
/* [0] Variables
==============================================================*/
var subSections = document.querySelectorAll('hgroup');
/* [1] Gestion des formulaires
==============================================================*/
/* [a] Gestion des réponses
==============================================================*/
/* GESTION DU COMPORTEMENT EN FONCTION DE LA REPONSE POUR LE [LOGIN]
*
* @param response
*
* Gestion de toutes les réponse possibles avec une "messageBox" ou de redirection
*
*/
function manageAuthentificationResponse(response){
switch( response.request ){
case 'success':
messageBox('Vous êtes maintenant connecté', 'success'); // on affiche le message
selectSection( document.querySelector('#MENU li:first-child') ); // on redirige vers la page d'accueil
break;
// case 'missing_param': messageBox('Un des champs requis n\'est pas présent', 'warning'); break;
// case 'empty_param': messageBox('Un des champs requis est vide', 'warning'); break;
// case 'unknown_user': messageBox('Nom d\'utilisateur inconnu', 'error'); break;
// case 'wrong_password': messageBox('Mot de passe incorrect', 'error'); break;
case 'empty_param': case 'missing_param': case 'unknown_user': case 'wrong_password':
messageBox('Identifiants incorrects', 'error');
break;
default:
messageBox('Erreur interne', 'error');
break;
}
}
/* [b] Initialisation des formulaires
==============================================================*/
initForm( // initialisation du formulaire de connection
document.querySelector('#user'), // formulaire (élément DOM)
function(request){ // handler
// ajout d'informations à la requête
request.level_0 = 'user';
request.level_1 = 'authentification';
API.send(request, function(response){ manageAuthentificationResponse(response); });
}
);

View File

@ -33,6 +33,8 @@ if( document.querySelector('#CONTAINER hgroup.active') == null )
var request = { var request = {
level_0: 'groups', level_0: 'groups',
level_1: 'grouplist', level_1: 'grouplist',
semestre: '3',
annee: '2015',
}; };
// console.log( request ); // console.log( request );
@ -55,3 +57,23 @@ function afficherCacherGroupes(e){
DOM.CONTAINER.addEventListener('click', afficherCacherGroupes, false); DOM.CONTAINER.addEventListener('click', afficherCacherGroupes, false);
/* GESTION DU DRAG N DROP */
if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ // si c'set l'admin
var dnd = new DragnDrop();
var members = document.querySelectorAll('#CONTAINER section[name=movestudents] table tr td:not(.more)');
for( var i = 0 ; i < members.length ; i++ )
dnd.setDraggable(members[i]);
var groups = document.querySelectorAll('#CONTAINER section[name=movestudents] table thead th:first-child');
for( var i = 0 ; i < groups.length ; i++ )
dnd.setDroppable(groups[i]);
dnd.init();
}

View File

@ -1,42 +0,0 @@
<?php require('../manager/security.php'); session_init();
/****************************/
/* FORMULAIRE DE CONNECTION */
/****************************/
?>
<hgroup class='active'>Connection</hgroup>
<section>
<form id='user' style='width: 20em; margin-left: calc(50% - 20em/2);'>
<input type='text' name='username' placeholder='username' class='user' style='width:calc( 100% - 2*1.8em );'>
<input type='password' name='password' placeholder='password' style='width:calc( 100% - 2*1.8em );'>
<input type='button' name='submit' value='Connection' style='width:50%;margin-left: 25%;'>
</form>
</section>
<?php
/***************************/
/* VISUALISATION DU PROFIL */
/***************************/
if( isset($_SESSION['permissions']) && $_SESSION['permissions'] != null ){ ?>
<hgroup>Mon Profil</hgroup>
<section>
username = <?php echo $_SESSION['username']; ?><br>
droits = <?php echo $_SESSION['permissions']; ?>
</section>
<?php } ?>

View File

@ -1,4 +1,5 @@
<?php define('__ROOT__', dirname(dirname(__FILE__)) ); <?php define('__ROOT__', dirname(dirname(__FILE__)) );
require_once __ROOT__.'/manager/security.php';
require_once __ROOT__.'/manager/groups.php'; require_once __ROOT__.'/manager/groups.php';
/**************************************** /****************************************
@ -19,13 +20,15 @@ require_once __ROOT__.'/manager/groups.php';
<section name='allgroups' title='tous les groupes' class='basic'> <section name='allgroups' title='tous les groupes' class='basic'>
<?php if( $_SESSION['username'] != null ){ // si connecté <?php if( $_SESSION['identifiant'] != null ){ // si connecté
$request = new stdClass(); $request = new stdClass();
$answer = new stdClass(); $answer = new stdClass();
$request->level_1 = 'grouplist'; $request->level_1 = 'grouplist';
$request->semestre = '3';
$request->annee = '2015';
groups_switch_level_1($request, $answer); groups_switch_level_1($request, $answer);
@ -90,13 +93,15 @@ require_once __ROOT__.'/manager/groups.php';
/******************/ /******************/
/*** MON GROUPE ***/ /*** MON GROUPE ***/
/******************/ /******************/
if( $_SESSION['username'] != null && $_SESSION['permissions'] == 'student' ){ // si l'utilisateur est connecté et que c'est un élève if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // si l'utilisateur est connecté et que c'est un élève
echo "<section name='mygroup' title='Mon groupe' class='basic'>"; echo "<section name='mygroup' title='Mon groupe' class='basic'>";
$request = new stdClass(); $answer = new stdClass(); $request = new stdClass(); $answer = new stdClass();
$request->level_1 = 'get'; $request->level_1 = 'get';
$request->etudiant = $_SESSION['username']; $request->etudiant = $_SESSION['identifiant'];
$request->semestre = '3';
$request->annee = '2015';
groups_switch_level_1($request, $answer); groups_switch_level_1($request, $answer);
@ -106,6 +111,8 @@ if( $_SESSION['username'] != null && $_SESSION['permissions'] == 'student' ){ //
$request = new stdClass(); $answer = new stdClass(); $request = new stdClass(); $answer = new stdClass();
$request->level_1 = 'userlist'; $request->level_1 = 'userlist';
$request->groupe = $monGroupe; $request->groupe = $monGroupe;
$request->semestre = '3';
$request->annee = '2015';
groups_switch_level_1($request, $answer); groups_switch_level_1($request, $answer);
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe
@ -149,13 +156,15 @@ if( $_SESSION['username'] != null && $_SESSION['permissions'] == 'student' ){ //
/****************************/ /****************************/
/*** DEPLACEMENT D'ELEVES ***/ /*** DEPLACEMENT D'ELEVES ***/
/****************************/ /****************************/
if( $_SESSION['username'] != null && $_SESSION['permissions'] == 'admin' ){ // si l'utilisateur est connecté et que c'est un élève if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'admin' ){ // si l'utilisateur est connecté et que c'est un élève
echo "<section name='movestudents' title=\"Déplacements\" class='basic'>"; echo "<section name='movestudents' title=\"Déplacements\" class='basic'>";
$request = new stdClass(); $request = new stdClass();
$answer = new stdClass(); $answer = new stdClass();
$request->level_1 = 'grouplist'; $request->level_1 = 'grouplist';
$request->semestre = '3';
$request->annee = '2015';
groups_switch_level_1($request, $answer); groups_switch_level_1($request, $answer);

View File

@ -1,4 +1,5 @@
<?php require('../manager/security.php'); session_init(); <?php define('__ROOT__', dirname(dirname(__FILE__)) );
require_once __ROOT__.'/manager/groups.php';
/**************************************** /****************************************
* * * *
@ -12,9 +13,9 @@
* [4] Répartir les élèves (admin) * [4] Répartir les élèves (admin)
* *
*****************************************/ *****************************************/
?> ?>
<section name='home' title='Présentation'> <section name='home' title='Présentation'>
<p data-pre='admin1'>Bienvenue sur la plateforme de gestion des étudiants de l'IUT Informatique de l'université Paul Sabatier, Toulouse 3</p> <p data-pre='admin1'>Bienvenue sur la plateforme de gestion des étudiants de l'IUT Informatique de l'université Paul Sabatier, Toulouse 3</p>
</section> </section>

View File

@ -1,4 +1,64 @@
<?php require('../manager/security.php'); session_init(); ?> <?php define('__ROOT__', dirname(dirname(__FILE__)) );
require_once __ROOT__.'/manager/security.php';
debug();
require_once __ROOT__.'/manager/groups.php';
require_once __ROOT__.'/manager/modules.php';
/****************************************
* *
* SECTION "GROUPES" *
* *
*****************************************
*
* [1] Présentation (studend + prof)
* [2] Tout les groupes (tous connecté)
* [3] Modifier les groupes (admin)
* [4] Répartir les élèves (admin)
*
*****************************************/
?>
modules.php <!-- mes modules -->
<?php
/*******************/
/*** MES MODULES ***/
/*******************/
if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // si l'utilisateur est connecté et que c'est un élève
echo "<section name='mymodules' title='Mes modules' class='basic'>";
$request = new stdClass(); $answer = new stdClass();
debug();
$request->level_1 = 'getByEtudiant';
$request->etudiant = $_SESSION['identifiant'];
$request->semestre = '3';
$request->annee = '2015';
modules_switch_level_1($request, $answer);
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe
////////////////////////////////////////////////////////////////////////////////
foreach($answer->modules as $module){
echo "<table class='basic'>";
echo "<thead class='active'><tr>";
echo '<th colspan=5>'.$module['nom'].'</th>';
echo '</tr></thead>';
echo '<tbody>';
echo '<tr><td>'.$module['libelle'].'</td></tr>';
echo '</tbody>';
echo '</table>';
}
////////////////////////////////////////////////////////////////////////////////
}else
echo "Erreur interne.";
echo '</section>';
} ?>

View File

@ -4,6 +4,11 @@
"password" : "eleve1password" "password" : "eleve1password"
}, },
"eme1913a": {
"permissions": "student",
"password" : "password"
},
"eleve2": { "eleve2": {
"permissions": "student", "permissions": "student",
"password" : "eleve2password" "password" : "eleve2password"

File diff suppressed because it is too large Load Diff

View File

@ -1,19 +1,20 @@
<?php define('__ROOT__', dirname(__FILE__) ); <?php define('__ROOT__', dirname(__FILE__) );
require_once __ROOT__.'/manager/security.php';
/*** CRÉATION D'UTILISATEUR ***/ /*** CRÉATION D'UTILISATEUR ***/
// require('manager/user.php'); // require('manager/user.php');
// debug();
// $request = new stdClass(); // $request = new stdClass();
// $answer = new stdClass(); // $answer = new stdClass();
// $request->level_1 = 'create'; // $request->level_1 = 'create';
// $request->username = 'fvg1856a'; // $request->identifiant = 'fvg1856a';
// $request->prenom = 'guillaume'; // $request->prenom = 'guillaume';
// $request->nom = 'fauvet'; // $request->nom = 'fauvet';
// $request->email = 'guillaume.fauvet@etu.iut-tlse3.fr'; // $request->mail = 'guillaume.fauvet@etu.iut-tlse3.fr';
// $request->password = ' Test_Password _'; // $request->mdp = ' Test_Password _';
// $request->droits = 'student'; // $request->droits = 'student';
@ -38,15 +39,13 @@
/*** CRÉATION GROUPE ***/ /*** CRÉATION GROUPE ***/
// require_once __ROOT__.'/manager/groups.php';
// require('manager/groups.php');
// $request = new stdClass(); // $request = new stdClass();
// $answer = new stdClass(); // $answer = new stdClass();
// $request->level_1 = 'create'; // $request->level_1 = 'create';
// $request->nom = 'F'; // $request->nom = 'S4C';
// groups_switch_level_1($request, $answer); // groups_switch_level_1($request, $answer);
@ -73,12 +72,15 @@
// require __ROOT__.'/manager/groups.php'; // require __ROOT__.'/manager/groups.php';
// $request = new stdClass(); // $request = new stdClass();
// $answer = new stdClass(); // $answer = new stdClass();
// $request->level_1 = 'add'; // $request->level_1 = 'add';
// $request->etudiant = 'fvg1856a'; // utilisateur.username // $request->etudiant = 'fvg1856a'; // utilisateur.identifiant
// $request->groupe = 'A'; // groupe.nom // $request->groupe = 'S3A'; // groupe.nom
// $request->semestre = '3'; // semestre.rang
// $request->annee = '2015'; // semestre.annee
// groups_switch_level_1($request, $answer); // groups_switch_level_1($request, $answer);
@ -100,6 +102,42 @@
/*** AFFICHER LE GROUPE D'UN ETUDIANT ***/
// require __ROOT__.'/manager/groups.php';
// $request = new stdClass();
// $answer = new stdClass();
// $request->level_1 = 'get';
// $request->etudiant = 'ihf1991a'; // utilisateur.identifiant
// $request->semestre = '3'; // groupe.nom
// $request->annee = '2015'; // groupe.nom
// groups_switch_level_1($request, $answer);
// echo var_dump( $answer );
// echo "<br><br><br><br><br><br><br>It works !";
/*** AFFICHER LES MEMBRES D'UN GROUPE ***/ /*** AFFICHER LES MEMBRES D'UN GROUPE ***/
@ -110,7 +148,9 @@
// $answer = new stdClass(); // $answer = new stdClass();
// $request->level_1 = 'userlist'; // $request->level_1 = 'userlist';
// $request->groupe = 'E'; // groupe.nom // $request->groupe = 'S3A'; // groupe.nom
// $request->semestre = '3'; // semestre.rang
// $request->annee = '2015'; // semestre.annee
// groups_switch_level_1($request, $answer); // groups_switch_level_1($request, $answer);
@ -134,25 +174,29 @@
/*** AFFICHER LES MEMBRES DE TOUS LES GROUPES ***/ /*** AFFICHER LES MEMBRES DE TOUS LES GROUPES ***/
// require('manager/groups.php'); require('manager/groups.php');
// $request = new stdClass(); $request = new stdClass();
// $answer = new stdClass(); $answer = new stdClass();
// $request->level_1 = 'grouplist'; $request->level_1 = 'grouplist';
$request->semestre = '3';
$request->annee = '2015';
// groups_switch_level_1($request, $answer); groups_switch_level_1($request, $answer);
// var_dump( $answer ); var_dump( $answer );
// echo '<br><br><br><br>'; echo '<br><br><br><br>';
// foreach($answer->grouplist as $group) foreach($answer->grouplist as $group){
// foreach($group as $userlist) echo "<br>=== GROUPE ".$group->nom."===<br>";
// foreach($userlist as $user) foreach($group as $userlist)
// foreach($user as $key=>$value) foreach($userlist as $user)
// echo $key.' = '.$value.'<br>'; foreach($user as $key=>$value)
echo $key.' = '.$value.'<br>';
}
// echo "<br><br><br><br><br><br><br>It works !"; echo "<br><br><br><br><br><br><br>It works !";

View File

@ -25,26 +25,29 @@ foreach( $sample as $user ){
foreach($user as $k=>$v) foreach($user as $k=>$v)
switch($k){ switch($k){
case 'pseudo': $request1->username = $v; break; case 'identifiant': $request1->identifiant = $v; break;
case 'prenom' : $request1->prenom = $v; break; case 'prenom' : $request1->prenom = $v; break;
case 'nom' : $request1->nom = $v; break; case 'nom' : $request1->nom = $v; break;
case 'email': $request1->email = $v; break; case 'mail' : $request1->mail = $v; break;
case 'password': $request1->password = sha1($v); break; case 'mdp' : $request1->mdp = $v; break;
case 'droits' : $request1->droits = $v; break; case 'droits' : $request1->droits = $v; break;
} }
user_switch_level_1($request1, $answer1); user_switch_level_1($request1, $answer1);
echo $request1->username; echo $request1->identifiant;
if( $answer1->request == 'success' ){ if( $answer1->request == 'success' ){
/* AJOUT A UN GROUPE */ /* AJOUT A UN GROUPE */
$request2->etudiant = $request1->username; // utilisateur.username $rang = ''.(rand(1,4));
$request2->groupe = chr(rand(65,70)); // groupe entre A - F
$request2->etudiant = $request1->identifiant; // utilisateur.identifiant
$request2->groupe ='S'.$rang.chr(rand(65,70)); // groupe entre S1A - S4F
$request2->semestre = $rang; // semestre.rang
$request2->annee = '2015'; // semestre.annee
groups_switch_level_1($request2, $answer2); groups_switch_level_1($request2, $answer2);
echo 'yeah';
if( $answer2->request == 'success' ) if( $answer2->request == 'success' )
echo '['.$request2->groupe.']<br>'; echo '['.$request2->groupe.']<br>';

141
xdoc/requêtes_sql_types.sql Normal file → Executable file
View File

@ -1,49 +1,134 @@
/*************************************************/ /*****************/
/*** AFFICHE LES LIENS ENTRE TOUTES LES TABLES ***/ /*** REFLEXION ***/
/*************************************************/ /*****************/
SELECT DISTINCT util.pseudo as pseudo, g.nom as groupe, m.identifiant as module, u.nom as UE, s.nom as semestre, s.annee as annee
FROM utilisateurs as util, groupes as g, association_utilisateur_groupe as asso1, modules as m, ue as u, semestre as s, association_module_semestre_ue as asso2
WHERE asso2.id_module = m.id_module
AND asso2.id_ue = u.id_ue
AND asso2.id_semestre = s.id_semestre
AND asso1.id_groupe = g.id_groupe /*
AND asso1.id_semestre = s.id_semestre * 1 etudiant (utilisateur) s'inscrit à un semestre
AND asso1.id_utilisateur = util.id_utilisateur * + 1 semestre pour une année scolaire particulière contient les modules d'un UE
* + un UE pour un semestre+année particuliers contient des modules
* + un module pour un groupe particulier contient des notes
*
* [ETUDIANT] est membre d'un [GROUPE] associé à un [SEMESTRE] qui contient des [UE] qui en fonction de l [ANNEE] ont certains [MODULES]
*
******************************************************************************************************************************************
*
* [ETUDIANT] || [ADMIN] || [PROF]
* + identifiant (mrd1609a)
* + prenom (adrien)
* + nom (LIGOU-MARQUES)
* + email (adrien.ligou-marques@etu.iut-tlse3.fr)
* + mdp (89N7VNIOUDJOFUJSO83YNERDLUSC)
* + droits (etu|admin|prof|saisienote|visunote|visuetu|...)
*
* [GROUPE]
* + id_groupe (++)
* + nom (S1A)
*
* [SEMESTRE]
* + id_semestre (++)
* + nom (S1)
* + rang (1,2,3 ou 4)
* + annee (2015) => année scolaire 2015-2016
*
* [MODULE]
* + id_module (++)
* + nom (M2105)
* + libelle (Algorithmique et structure de données)
*
* [UE]
* + id_ue (++)
* + nom (UE1)
* + libelle (Informatique générale)
*
* [APPARTENANCE]
* + id_etudiant (mrd1609a)
* + id_groupe (4) => A
* + id_semestre (63) => S3
*
* [PROGRAMME]
* + id_semestre (63) => S3
* + id_ue (3) => UE3
* + id_module (39) => M3305
*
* [ETUDIANT] membre d'un [GROUPE] associé à un [SEMESTRE] = appartenance_groupe [id_etudiant, id_groupe, id_semestre]
*
* [UE] contient des [MODULES] en fonction du [SEMESTRE] = programme [id_semestre, id_ue, id_module]
*
*
*/
ORDER BY g.nom, util.pseudo ASC;
/******************************************************/
/*** AFFICHE LES MODULES D'UN GROUPE POUR UNE ANNEE ***/
/******************************************************/
SELECT DISTINCT g.nom as groupe, m.nom as module, m.libelle
FROM module as m, groupe as g, semestre as s, programme as prog, ue, appartenance as app
WHERE app.id_semestre = prog.id_semestre
AND app.id_semestre = s.id_semestre
AND app.id_groupe = g.id_groupe
AND ue.id_ue = prog.id_ue
AND m.id_module = prog.id_module
AND s.annee = '2015'
AND g.nom = 'S3A'
ORDER BY g.nom, m.nom, m.libelle ASC
/**********************************/ /**********************************/
/*** AFFICHE LES MODULES PAR UE ***/ /*** AFFICHE LES MODULES PAR UE ***/
/**********************************/ /**********************************/
SELECT DISTINCT u.nom as UE, m.identifiant as module SELECT DISTINCT ue.nom as UE, m.nom as module, m.libelle
FROM modules as m, ue as u, association_module_semestre_ue as asso FROM module as m, ue, semestre as s, programme as prog
WHERE asso.id_module = m.id_module WHERE prog.id_semestre = s.id_semestre
AND asso.id_ue = u.id_ue AND prog.id_module = m.id_module
ORDER BY u.nom, m.identifiant ASC; AND prog.id_ue = ue.id_ue
AND ue.nom = 'UE1'
ORDER BY ue.nom, m.nom, m.libelle ASC
/*****************************************************/
/*** AFFICHER LES ANNES AVEC LES MODULES ET LES UE ***/
/*****************************************************/
SELECT DISTINCT semestre.annee as annee, ue.nom as UE, module.nom as module
FROM module, ue, semestre, programme as p
WHERE p.id_module = module.id_module
AND p.id_semestre = semestre.id_semestre
AND p.id_ue = ue.id_ue
ORDER BY semestre.annee DESC, ue.nom ASC;
/************************************/ /************************************/
/*** AFFICHE LES UE PAR SEMESTRES ***/ /*** AFFICHE LES UE PAR SEMESTRES ***/
/************************************/ /************************************/s
SELECT DISTINCT s.nom as semestre, u.nom as UE SELECT DISTINCT s.nom as semestre, ue.nom as UE
FROM ue as u, semestre as s, association_module_semestre_ue as asso FROM semestre as s, ue, programme as prog
WHERE asso.id_ue = u.id_ue WHERE prog.id_semestre = s.id_semestre
AND asso.id_semestre = s.id_semestre AND prog.id_ue = ue.id_ue
ORDER BY s.nom, u.nom ASC;
AND s.annee = '2015'
ORDER BY s.nom, ue.nom ASC
/****************************************/ /****************************************/
/*** AFFICHE LES MODULES PAR SEMESTRE ***/ /*** AFFICHE LES MODULES PAR SEMESTRE ***/
/****************************************/ /****************************************/
SELECT DISTINCT s.nom as semestre, m.identifiant as module SELECT DISTINCT s.annee as annee, ue.nom as UE, m.nom as module
FROM modules as m, semestre as s, association_module_semestre_ue as asso FROM module as m, semestre as s, ue, programme as prog
WHERE asso.id_module = m.id_module WHERE prog.id_semestre = s.id_semestre
AND asso.id_semestre = s.id_semestre AND prog.id_ue = ue.id_ue
ORDER BY s.nom, m.identifiant ASC; AND prog.id_module = m.id_module
ORDER BY s.annee, ue.nom, m.nom ASC
/*************************************************/
/*** AFFICHE LE NOMBRE DE MODULES PAR SEMESTRE ***/
/*************************************************/
SELECT DISTINCT s.annee as annee, ue.nom as UE, count(m.nom) as nb_modules
FROM module as m, semestre as s, ue, programme as prog
WHERE prog.id_semestre = s.id_semestre
AND prog.id_ue = ue.id_ue
AND prog.id_module = m.id_module
GROUP BY s.annee, ue.nom
ORDER BY s.annee, ue.nom, m.nom ASC
/******************************************/ /******************************************/

713
xdoc/sid.sql Normal file → Executable file
View File

@ -3,7 +3,7 @@
-- http://www.phpmyadmin.net -- http://www.phpmyadmin.net
-- --
-- Client: localhost -- Client: localhost
-- Généré le: Dim 25 Octobre 2015 à 19:39 -- Généré le: Mer 28 Octobre 2015 à 18:05
-- Version du serveur: 5.5.44-0ubuntu0.14.04.1 -- Version du serveur: 5.5.44-0ubuntu0.14.04.1
-- Version de PHP: 5.5.9-1ubuntu4.13 -- Version de PHP: 5.5.9-1ubuntu4.13
@ -17,230 +17,250 @@ SET time_zone = "+00:00";
/*!40101 SET NAMES utf8 */; /*!40101 SET NAMES utf8 */;
-- --
-- Base de données: `sid` -- Base de données: `sid2`
-- --
CREATE DATABASE IF NOT EXISTS `sid` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `sid`;
-- -------------------------------------------------------- -- --------------------------------------------------------
-- --
-- Structure de la table `association_module_semestre_ue` -- Structure de la table `appartenance`
-- --
CREATE TABLE IF NOT EXISTS `association_module_semestre_ue` ( CREATE TABLE IF NOT EXISTS `appartenance` (
`id_module` int(11) NOT NULL, `id_etudiant` varchar(8) NOT NULL,
`id_ue` int(11) NOT NULL, `id_groupe` int(11) NOT NULL,
`id_semestre` int(11) NOT NULL, `id_semestre` int(11) NOT NULL,
KEY `id_module` (`id_module`,`id_ue`,`id_semestre`), KEY `id_etudiant` (`id_etudiant`),
KEY `id_ue` (`id_ue`), KEY `id_groupe` (`id_groupe`),
KEY `id_semestre` (`id_semestre`) KEY `id_semestre` (`id_semestre`),
KEY `identifiant` (`id_etudiant`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1; ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --
-- RELATIONS POUR LA TABLE `association_module_semestre_ue`: -- RELATIONS POUR LA TABLE `appartenance`:
-- `id_etudiant`
-- `utilisateur` -> `identifiant`
-- `id_groupe`
-- `groupe` -> `id_groupe`
-- `id_semestre`
-- `semestre` -> `id_semestre`
--
--
-- Contenu de la table `appartenance`
--
INSERT INTO `appartenance` (`id_etudiant`, `id_groupe`, `id_semestre`) VALUES
('ydw1981a', 25, 3),
('ihf1991a', 26, 4),
('mma1990a', 23, 3),
('lme1952a', 9, 3),
('imf1922a', 9, 3),
('gyy1983a', 28, 4),
('otm1902a', 28, 4),
('tnx1949a', 25, 3),
('sjl1937a', 12, 2),
('anj1991a', 4, 2),
('xdh1989a', 6, 4),
('agl1956a', 11, 1),
('mhu1946a', 17, 1),
('cvv1936a', 22, 2),
('mzh1955a', 27, 4),
('pdi1904a', 13, 3),
('cuk1947a', 23, 3),
('non1968a', 7, 1),
('hmn1970a', 16, 1),
('hth1975a', 22, 2),
('liw1940a', 11, 1),
('dtg1946a', 6, 4),
('oxz1985a', 12, 2),
('ono1984a', 27, 4),
('auy1966a', 10, 4),
('dui1946a', 27, 4),
('cyw1979a', 4, 2),
('pfv1965a', 11, 1),
('oqz1937a', 13, 3),
('aft1950a', 20, 2),
('bae1943a', 22, 2),
('kul1903a', 19, 1),
('rmj1965a', 9, 3),
('yyt1926a', 16, 1),
('ktz1997a', 27, 4),
('hku1995a', 5, 3),
('zgy1948a', 7, 1),
('vau1957a', 7, 1),
('hsx1927a', 5, 3),
('eca1977a', 11, 1),
('wpa1966a', 4, 2),
('qoe1974a', 16, 1),
('tkz1955a', 7, 1),
('wnx1995a', 16, 1),
('sft1994a', 9, 3),
('vgb1979a', 22, 2),
('wbt1993a', 11, 1),
('xtb1903a', 27, 4),
('msj1985a', 25, 3),
('wvn1982a', 20, 2),
('psg1965a', 25, 3),
('hpa1908a', 24, 3),
('maq1980a', 21, 2),
('agq1929a', 28, 4),
('gwe1975a', 6, 4),
('gdb1939a', 4, 2),
('jrc1974a', 17, 1),
('jfa1965a', 10, 4),
('buz1982a', 24, 3),
('mhr1952a', 10, 4),
('pos1958a', 7, 1),
('xdi1926a', 11, 1),
('awl1901a', 25, 3),
('uix1942a', 7, 1),
('ngz1932a', 26, 4),
('kpf1942a', 26, 4),
('aiv1989a', 23, 3),
('sjw1936a', 21, 2),
('fei1944a', 8, 2),
('zge1937a', 10, 4),
('rpl1936a', 4, 2),
('hrv1902a', 12, 2),
('djo1928a', 5, 3),
('scm1996a', 13, 3),
('ylq1926a', 26, 4),
('eme1913a', 5, 3),
('otv1930a', 27, 4),
('cda1951a', 20, 2),
('eee1933a', 26, 4),
('kfx1995a', 27, 4),
('jgd1966a', 19, 1),
('rwg1909a', 21, 2),
('ngw1997a', 20, 2),
('obg1973a', 24, 3),
('hzg1935a', 14, 4),
('iyh1918a', 10, 4),
('tdc1978a', 8, 2),
('swd1951a', 5, 3),
('vdj1905a', 12, 2),
('bit1985a', 8, 2),
('iah1936a', 6, 4),
('ypt1989a', 19, 1),
('ljc1902a', 26, 4),
('hcc1997a', 24, 3),
('bky1924a', 11, 1),
('vul1953a', 12, 2),
('ssr1906a', 21, 2),
('yjh1944a', 16, 1),
('ste1994a', 21, 2),
('ypo1964a', 9, 3);
-- --------------------------------------------------------
--
-- Structure de la table `groupe`
--
CREATE TABLE IF NOT EXISTS `groupe` (
`id_groupe` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id_groupe`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=29 ;
--
-- Contenu de la table `groupe`
--
INSERT INTO `groupe` (`id_groupe`, `nom`) VALUES
(2, 'S1A'),
(4, 'S2A'),
(5, 'S3A'),
(6, 'S4A'),
(7, 'S1B'),
(8, 'S2B'),
(9, 'S3B'),
(10, 'S4B'),
(11, 'S1C'),
(12, 'S2C'),
(13, 'S3C'),
(14, 'S4C'),
(16, 'S1E'),
(17, 'S1D'),
(19, 'S1F'),
(20, 'S2D'),
(21, 'S2E'),
(22, 'S2F'),
(23, 'S3D'),
(24, 'S3E'),
(25, 'S3F'),
(26, 'S4D'),
(27, 'S4E'),
(28, 'S4F');
-- --------------------------------------------------------
--
-- Structure de la table `module`
--
CREATE TABLE IF NOT EXISTS `module` (
`id_module` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(5) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`libelle` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id_module`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
--
-- Contenu de la table `module`
--
INSERT INTO `module` (`id_module`, `nom`, `libelle`) VALUES
(1, 'M1101', 'Bases de l''algorithmique'),
(2, 'M1102', 'Programmation web'),
(3, 'M2101', 'Magazine'),
(4, 'M2102', 'Affiche'),
(5, 'M3101', 'Algorithmique et structures de données'),
(6, 'M3102', 'Programmation Orientée Objet'),
(7, 'M4101', 'Stage partie 1'),
(8, 'M4102', 'Stage partie 2');
-- --------------------------------------------------------
--
-- Structure de la table `programme`
--
CREATE TABLE IF NOT EXISTS `programme` (
`id_programme` int(11) NOT NULL AUTO_INCREMENT,
`id_module` int(11) NOT NULL,
`id_ue` int(11) NOT NULL,
`id_semestre` int(11) NOT NULL,
PRIMARY KEY (`id_programme`),
KEY `id_module` (`id_module`),
KEY `id_ue` (`id_ue`),
KEY `id_semestre` (`id_semestre`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
--
-- RELATIONS POUR LA TABLE `programme`:
-- `id_semestre` -- `id_semestre`
-- `semestre` -> `id_semestre` -- `semestre` -> `id_semestre`
-- `id_module` -- `id_module`
-- `modules` -> `id_module` -- `module` -> `id_module`
-- `id_ue` -- `id_ue`
-- `ue` -> `id_ue` -- `ue` -> `id_ue`
-- --
-- --
-- Contenu de la table `association_module_semestre_ue` -- Contenu de la table `programme`
-- --
INSERT INTO `association_module_semestre_ue` (`id_module`, `id_ue`, `id_semestre`) VALUES INSERT INTO `programme` (`id_programme`, `id_module`, `id_ue`, `id_semestre`) VALUES
(1, 1, 1), (1, 1, 1, 1),
(2, 2, 2), (2, 2, 1, 1),
(3, 3, 3), (3, 3, 2, 2),
(4, 4, 4), (4, 4, 2, 2),
(5, 1, 1); (5, 5, 3, 3),
(6, 6, 3, 3),
-- -------------------------------------------------------- (7, 7, 4, 4),
(8, 8, 4, 4);
--
-- Structure de la table `association_utilisateur_groupe`
--
CREATE TABLE IF NOT EXISTS `association_utilisateur_groupe` (
`id_utilisateur` int(11) NOT NULL,
`id_groupe` int(11) NOT NULL,
`id_semestre` int(11) NOT NULL,
PRIMARY KEY (`id_utilisateur`,`id_groupe`),
UNIQUE KEY `id_utilisateur` (`id_utilisateur`,`id_groupe`),
UNIQUE KEY `id_utilisateur_2` (`id_utilisateur`,`id_groupe`),
UNIQUE KEY `id_utilisateur_3` (`id_utilisateur`,`id_groupe`),
UNIQUE KEY `id_utilisateur_4` (`id_utilisateur`,`id_groupe`),
KEY `asso_groupe_utilisateur-foreign_groupe` (`id_groupe`),
KEY `id_semestre` (`id_semestre`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- RELATIONS POUR LA TABLE `association_utilisateur_groupe`:
-- `id_groupe`
-- `groupes` -> `id_groupe`
-- `id_utilisateur`
-- `utilisateurs` -> `id_utilisateur`
--
--
-- Contenu de la table `association_utilisateur_groupe`
--
INSERT INTO `association_utilisateur_groupe` (`id_utilisateur`, `id_groupe`, `id_semestre`) VALUES
(13, 5, 1),
(14, 5, 1),
(15, 2, 1),
(42, 2, 1),
(57, 3, 1),
(58, 7, 1),
(59, 5, 1),
(60, 4, 1),
(61, 2, 1),
(62, 7, 1),
(63, 2, 1),
(64, 2, 1),
(65, 2, 1),
(66, 4, 1),
(67, 2, 1),
(68, 1, 1),
(69, 2, 1),
(70, 1, 1),
(71, 3, 1),
(72, 5, 1),
(73, 1, 1),
(74, 5, 1),
(75, 7, 1),
(76, 4, 1),
(77, 3, 1),
(78, 4, 1),
(79, 2, 1),
(80, 7, 1),
(81, 3, 1),
(82, 4, 1),
(83, 4, 1),
(84, 5, 1),
(85, 7, 1),
(86, 4, 1),
(87, 1, 1),
(88, 2, 1),
(89, 4, 1),
(90, 7, 1),
(91, 7, 1),
(92, 5, 1),
(93, 5, 1),
(94, 2, 1),
(95, 1, 1),
(96, 7, 1),
(97, 7, 1),
(98, 3, 1),
(99, 1, 1),
(100, 2, 1),
(101, 3, 1),
(102, 4, 1),
(103, 7, 1),
(104, 3, 1),
(105, 2, 1),
(106, 5, 1),
(107, 1, 1),
(108, 5, 1),
(109, 3, 1),
(110, 2, 1),
(111, 4, 1),
(112, 7, 1),
(113, 7, 1),
(114, 2, 1),
(115, 4, 1),
(116, 5, 1),
(117, 7, 1),
(118, 4, 1),
(119, 1, 1),
(120, 3, 1),
(121, 3, 1),
(122, 1, 1),
(123, 2, 1),
(124, 2, 1),
(125, 2, 1),
(126, 2, 1),
(127, 2, 1),
(128, 2, 1),
(129, 4, 1),
(130, 3, 1),
(131, 3, 1),
(132, 7, 1),
(133, 7, 1),
(134, 2, 1),
(135, 3, 1),
(136, 2, 1),
(137, 1, 1),
(138, 3, 1),
(139, 7, 1),
(140, 3, 1),
(141, 5, 1),
(142, 4, 1),
(143, 2, 1),
(144, 4, 1),
(145, 5, 1),
(146, 7, 1),
(147, 3, 1),
(148, 4, 1),
(149, 3, 1),
(150, 3, 1),
(151, 7, 1),
(152, 7, 1),
(153, 3, 1),
(154, 1, 1),
(155, 1, 1);
-- --------------------------------------------------------
--
-- Structure de la table `groupes`
--
CREATE TABLE IF NOT EXISTS `groupes` (
`id_groupe` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(20) NOT NULL,
PRIMARY KEY (`id_groupe`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
--
-- Contenu de la table `groupes`
--
INSERT INTO `groupes` (`id_groupe`, `nom`) VALUES
(1, 'A'),
(2, 'B'),
(3, 'C'),
(4, 'D'),
(5, 'E'),
(7, 'F');
-- --------------------------------------------------------
--
-- Structure de la table `modules`
--
CREATE TABLE IF NOT EXISTS `modules` (
`id_module` int(11) NOT NULL AUTO_INCREMENT,
`identifiant` varchar(5) NOT NULL,
`nom` varchar(50) NOT NULL,
PRIMARY KEY (`id_module`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
--
-- Contenu de la table `modules`
--
INSERT INTO `modules` (`id_module`, `identifiant`, `nom`) VALUES
(1, 'M1001', 'Module S1 numéro 1'),
(2, 'M2001', 'Module S2 numéro 1'),
(3, 'M3001', 'Module S3 numéro 1'),
(4, 'M4001', 'Module S4 numéro 1'),
(5, 'M1002', 'Module S1 numéro 2');
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -250,20 +270,26 @@ INSERT INTO `modules` (`id_module`, `identifiant`, `nom`) VALUES
CREATE TABLE IF NOT EXISTS `semestre` ( CREATE TABLE IF NOT EXISTS `semestre` (
`id_semestre` int(11) NOT NULL AUTO_INCREMENT, `id_semestre` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(50) NOT NULL, `nom` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`rang` tinyint(4) NOT NULL,
`annee` year(4) NOT NULL, `annee` year(4) NOT NULL,
PRIMARY KEY (`id_semestre`) PRIMARY KEY (`id_semestre`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; UNIQUE KEY `rang` (`rang`,`annee`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
-- --
-- Contenu de la table `semestre` -- Contenu de la table `semestre`
-- --
INSERT INTO `semestre` (`id_semestre`, `nom`, `annee`) VALUES INSERT INTO `semestre` (`id_semestre`, `nom`, `rang`, `annee`) VALUES
(1, 'S1', 2015), (1, 'S1', 1, 2015),
(2, 'S2', 2015), (2, 'S2', 2, 2015),
(3, 'S3', 2015), (3, 'S3', 3, 2015),
(4, 'S4', 2015); (4, 'S4', 4, 2015),
(5, 'S1', 0, 2016),
(7, 'S2', 2, 2016),
(8, 'S3', 3, 2016),
(9, 'S4', 4, 2016);
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -273,7 +299,8 @@ INSERT INTO `semestre` (`id_semestre`, `nom`, `annee`) VALUES
CREATE TABLE IF NOT EXISTS `ue` ( CREATE TABLE IF NOT EXISTS `ue` (
`id_ue` int(11) NOT NULL AUTO_INCREMENT, `id_ue` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(50) NOT NULL, `nom` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`libelle` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id_ue`) PRIMARY KEY (`id_ue`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
@ -281,158 +308,154 @@ CREATE TABLE IF NOT EXISTS `ue` (
-- Contenu de la table `ue` -- Contenu de la table `ue`
-- --
INSERT INTO `ue` (`id_ue`, `nom`) VALUES INSERT INTO `ue` (`id_ue`, `nom`, `libelle`) VALUES
(1, 'UE1'), (1, 'UE1', 'Informatique'),
(2, 'UE2'), (2, 'UE2', 'Communication'),
(3, 'UE3'), (3, 'UE3', 'Informatique Avancée'),
(4, 'UE4'); (4, 'UE4', 'Projet Personnel et Professionnel');
-- -------------------------------------------------------- -- --------------------------------------------------------
-- --
-- Structure de la table `utilisateurs` -- Structure de la table `utilisateur`
-- --
CREATE TABLE IF NOT EXISTS `utilisateurs` ( CREATE TABLE IF NOT EXISTS `utilisateur` (
`id_utilisateur` int(11) NOT NULL AUTO_INCREMENT, `identifiant` varchar(8) NOT NULL,
`pseudo` varchar(50) NOT NULL, `prenom` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`prenom` varchar(50) NOT NULL, `nom` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`nom` varchar(50) NOT NULL, `mail` varchar(50) NOT NULL,
`email` varchar(50) NOT NULL, `mdp` varchar(40) NOT NULL,
`password` varchar(40) NOT NULL, `droits` varchar(4) NOT NULL DEFAULT '0',
`droits` varchar(20) NOT NULL DEFAULT 'student', PRIMARY KEY (`identifiant`),
PRIMARY KEY (`id_utilisateur`), UNIQUE KEY `identifiant` (`identifiant`)
UNIQUE KEY `pseudo` (`pseudo`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=356 ;
-- --
-- Contenu de la table `utilisateurs` -- Contenu de la table `utilisateur`
-- --
INSERT INTO `utilisateurs` (`id_utilisateur`, `pseudo`, `prenom`, `nom`, `email`, `password`, `droits`) VALUES INSERT INTO `utilisateur` (`identifiant`, `prenom`, `nom`, `mail`, `mdp`, `droits`) VALUES
(13, 'mrd1609a', 'Adrien', 'LIGOU MARQUES', 'adrien.marques-ligou@etu.iut-tlse3.fr', 'e9f14613d7253434a4f0939d8a38c2a60703bda2', 'student'), ('aft1950a', 'Rachel', 'DAVENPORT', 'rachel.davenport@etu.iut-tlse3.fr', '68724b2da1b628fd37116d3abae9c4233aa9fa56', 'stud'),
(14, 'clr1433a', 'Aurelien', 'CLERAC', 'aurelien.clerac@etu.iut-tlse3.fr', 'e9f14613d7253434a4f0939d8a38c2a60703bda2', 'student'), ('agl1956a', 'Cruz', 'HOWE', 'cruz.howe@etu.iut-tlse3.fr', 'c3f22ac779a9e0e276acdc9933cdcdb2f054e317', 'stud'),
(15, 'fvg1856a', 'Guillaume', 'FAUVET', 'guillaume.fauvet@etu.iut-tlse3.fr', 'e9f14613d7253434a4f0939d8a38c2a60703bda2', 'student'), ('agq1929a', 'Althea', 'POOLE', 'althea.poole@etu.iut-tlse3.fr', 'f20feea8f16e481683d420f8c97c4366d4941f4c', 'stud'),
(40, 'ydw1981a', 'Glenda', 'WILKINSON', 'glenda.wilkinson@etu.iut-tlse3.fr', '41da8fbd7d39a7d91886c197308cb4495c8fa916', 'student'), ('aiv1989a', 'Concetta', 'ROBLES', 'concetta.robles@etu.iut-tlse3.fr', 'e3e642e4b47a582f3a4b3e20c4d9bf612add1824', 'stud'),
(42, 'eleve1', 'eleve', 'eleve', 'eleve.eleve@eleve.fr', 'lksmdoekrlsidoekrldolksmdoekrlsidoekrldo', 'student'), ('anj1991a', 'Katie', 'GUTIERREZ', 'katie.gutierrez@etu.iut-tlse3.fr', '0e2a184f4a27976f6648dbad6f33ffaba193c190', 'stud'),
(57, 'ihf1991a', 'Robinson', 'MCGEE', 'robinson.mcgee@etu.iut-tlse3.fr', '735194af6966d8cd4c0351bd6f52e4bb39b3ad7b', 'student'), ('auy1966a', 'Bobbi', 'PRATT', 'bobbi.pratt@etu.iut-tlse3.fr', 'bd01c0a7d116ac61a12cddf768de4384cb2ed382', 'stud'),
(58, 'mma1990a', 'Williamson', 'HATFIELD', 'williamson.hatfield@etu.iut-tlse3.fr', 'f3a0053424f8008c9c100ade7b774e0dd3154ed6', 'student'), ('awl1901a', 'Clare', 'ROLLINS', 'clare.rollins@etu.iut-tlse3.fr', '0294ff411362354abbad41829c27b5d42cbc4388', 'stud'),
(59, 'lme1952a', 'Hollie', 'GILLIAM', 'hollie.gilliam@etu.iut-tlse3.fr', '154357811521bbe188f5bd3f96fd58f145b4d8da', 'student'), ('bae1943a', 'Shaw', 'GOFF', 'shaw.goff@etu.iut-tlse3.fr', '99636e590508ed14336cf5847dcd24302bd86908', 'stud'),
(60, 'imf1922a', 'Hawkins', 'PATTERSON', 'hawkins.patterson@etu.iut-tlse3.fr', 'f6ad3a03b22a29419cf33a0e238cb28b57a83f0c', 'student'), ('bit1985a', 'Rosalind', 'FISHER', 'rosalind.fisher@etu.iut-tlse3.fr', 'bbba4cd89896d2d6bf5c8d33ce3b4af025d6165d', 'stud'),
(61, 'gyy1983a', 'Merrill', 'WALTER', 'merrill.walter@etu.iut-tlse3.fr', '758b160c6c13cae4d576c21ed68554993cb94efb', 'student'), ('bky1924a', 'Gena', 'ENGLAND', 'gena.england@etu.iut-tlse3.fr', '89805c2213710c0f7c03954d1fb171b3aba3c107', 'stud'),
(62, 'otm1902a', 'Woods', 'DEJESUS', 'woods.dejesus@etu.iut-tlse3.fr', '37517a860171d3588647bf767755a9571d77e11e', 'student'), ('buz1982a', 'Kemp', 'JACOBS', 'kemp.jacobs@etu.iut-tlse3.fr', 'eda25de06910b9bbeeebcd81421093f1163d5a2c', 'stud'),
(63, 'tnx1949a', 'Dejesus', 'WALTON', 'dejesus.walton@etu.iut-tlse3.fr', '8f0d8b519fe392c1e4ca7be8569b7cfb041a9ea6', 'student'), ('cda1951a', 'Mcpherson', 'ANTHONY', 'mcpherson.anthony@etu.iut-tlse3.fr', '928e8e07046c74f035b0bd0f84a6463133890006', 'stud'),
(64, 'sjl1937a', 'English', 'POPE', 'english.pope@etu.iut-tlse3.fr', '8077452497ea9d5f31b4fd0baf51e65f92ccaf67', 'student'), ('cuk1947a', 'Baxter', 'HERRERA', 'baxter.herrera@etu.iut-tlse3.fr', '1e0927db69476aa8dad0e2f0b360aa142800b66c', 'stud'),
(65, 'anj1991a', 'Katie', 'GUTIERREZ', 'katie.gutierrez@etu.iut-tlse3.fr', 'e932eecdc8fd834c1627fc3b9b54b9ff74c3d583', 'student'), ('cvv1936a', 'Kayla', 'CANTRELL', 'kayla.cantrell@etu.iut-tlse3.fr', '7c9976507ec461d729f8e48ccdf5b8e8418ae6fa', 'stud'),
(66, 'xdh1989a', 'Rasmussen', 'PAGE', 'rasmussen.page@etu.iut-tlse3.fr', '91795dd76d3a44ed3796656bdd31f2142684bb29', 'student'), ('cyw1979a', 'Zamora', 'RIDDLE', 'zamora.riddle@etu.iut-tlse3.fr', '747582c758969846527f612f05ac525a82f2d67f', 'stud'),
(67, 'agl1956a', 'Cruz', 'HOWE', 'cruz.howe@etu.iut-tlse3.fr', 'e8d89188c9036cb200ebfb218e9cc4215efe0648', 'student'), ('djo1928a', 'Vaughn', 'DURHAM', 'vaughn.durham@etu.iut-tlse3.fr', 'cd6d4eb78a2f2b4228913d8ca89ab95fba17a953', 'stud'),
(68, 'mhu1946a', 'Edna', 'GREEN', 'edna.green@etu.iut-tlse3.fr', '047f218cd08bfd3652801c21d5ece2ef4b2a80f7', 'student'), ('dtg1946a', 'Ruiz', 'WILKERSON', 'ruiz.wilkerson@etu.iut-tlse3.fr', '61fa79da89021355623584247fc5597b4a811c4a', 'stud'),
(69, 'cvv1936a', 'Kayla', 'CANTRELL', 'kayla.cantrell@etu.iut-tlse3.fr', '1ff3ba4032d7712d364e0e93ec82b9a2aa4db086', 'student'), ('dui1946a', 'Burns', 'COMPTON', 'burns.compton@etu.iut-tlse3.fr', '7efa228dda0181027eff80368fe5426321ffa40e', 'stud'),
(70, 'mzh1955a', 'Leblanc', 'WHEELER', 'leblanc.wheeler@etu.iut-tlse3.fr', '35edbb44f1c626c3e505c5d0030744acd51a1f40', 'student'), ('eca1977a', 'Hope', 'WILSON', 'hope.wilson@etu.iut-tlse3.fr', 'aa9f150450bed0a9c47d6d1b412e9af032da8fa9', 'stud'),
(71, 'pdi1904a', 'Brady', 'ASHLEY', 'brady.ashley@etu.iut-tlse3.fr', '8354d3648e0720424407a104f739565c9cc3b974', 'student'), ('eee1933a', 'Stacey', 'LITTLE', 'stacey.little@etu.iut-tlse3.fr', '31b9ae5ec7027c386807ca2e8212dcc26c3b087e', 'stud'),
(72, 'cuk1947a', 'Baxter', 'HERRERA', 'baxter.herrera@etu.iut-tlse3.fr', '0cac6e0bd1a1f2a9fbe29dfacfe144d8acb0f931', 'student'), ('eme1913a', 'Booth', 'HENRY', 'booth.henry@etu.iut-tlse3.fr', '86fb4f37792e36d800265554310d21e59d624d4d', 'stud'),
(73, 'non1968a', 'Foster', 'TILLMAN', 'foster.tillman@etu.iut-tlse3.fr', '5f2f200ea6ce656ced3e436548c94af78f8d3178', 'student'), ('fei1944a', 'Esperanza', 'TERRELL', 'esperanza.terrell@etu.iut-tlse3.fr', '9800cde34ddf1e24c2b1e31f84d72f2f9de753c8', 'stud'),
(74, 'hmn1970a', 'Levy', 'ARMSTRONG', 'levy.armstrong@etu.iut-tlse3.fr', '71e9c4c4bfb0181f7b8e20794a5a82b183a08f98', 'student'), ('gdb1939a', 'Kate', 'NOEL', 'kate.noel@etu.iut-tlse3.fr', '918bcf2e3ffccb2bd18290a67bcbada6921c8ba3', 'stud'),
(75, 'hth1975a', 'Pruitt', 'FERGUSON', 'pruitt.ferguson@etu.iut-tlse3.fr', 'a19a35d82fde8270b26dbf3112e1bd911857e1e5', 'student'), ('gwe1975a', 'Helen', 'HICKS', 'helen.hicks@etu.iut-tlse3.fr', 'd5578ae52d8b9429a411fe6824f79aa2e4ba4295', 'stud'),
(76, 'liw1940a', 'Middleton', 'WATERS', 'middleton.waters@etu.iut-tlse3.fr', '7b7f1248490898c8a07f06fccf8e577fe8dea318', 'student'), ('gyy1983a', 'Merrill', 'WALTER', 'merrill.walter@etu.iut-tlse3.fr', '2d6450fb04820591c34d6e470d8d16cc129ed634', 'stud'),
(77, 'dtg1946a', 'Ruiz', 'WILKERSON', 'ruiz.wilkerson@etu.iut-tlse3.fr', '863dff5825ff3f157410c0feb4c2d260c370d114', 'student'), ('hcc1997a', 'Madeline', 'MARKS', 'madeline.marks@etu.iut-tlse3.fr', '193e0b1555ac578b13b6f02b4b2c6b8c0576a2cd', 'stud'),
(78, 'oxz1985a', 'Paul', 'GROSS', 'paul.gross@etu.iut-tlse3.fr', 'a43dd59f2c340d6c08665ba6c464099f2277a6cd', 'student'), ('hku1995a', 'Roslyn', 'MURPHY', 'roslyn.murphy@etu.iut-tlse3.fr', 'a2c17932dcc6a628601a86bd02e5e6110b774205', 'stud'),
(79, 'ono1984a', 'Kitty', 'SANFORD', 'kitty.sanford@etu.iut-tlse3.fr', '482f01aff2d2fa917acf8d4ce24d4c6f74de6186', 'student'), ('hmn1970a', 'Levy', 'ARMSTRONG', 'levy.armstrong@etu.iut-tlse3.fr', '85eed5e07ad380224e3dff9c68631436fc5e0580', 'stud'),
(80, 'auy1966a', 'Bobbi', 'PRATT', 'bobbi.pratt@etu.iut-tlse3.fr', 'e6a31236e72e4e32f0413c766c563cefd5d04823', 'student'), ('hpa1908a', 'Jacklyn', 'BYRD', 'jacklyn.byrd@etu.iut-tlse3.fr', '50c850d3d6c6e8b5277f58f59c206d7ed685b8f9', 'stud'),
(81, 'dui1946a', 'Burns', 'COMPTON', 'burns.compton@etu.iut-tlse3.fr', 'd7a161649252179dd96b3a5a94767b6386cb6d90', 'student'), ('hrv1902a', 'Irwin', 'HOUSTON', 'irwin.houston@etu.iut-tlse3.fr', '99ab47f6cce9313bb631d892d3a192420df1ba43', 'stud'),
(82, 'cyw1979a', 'Zamora', 'RIDDLE', 'zamora.riddle@etu.iut-tlse3.fr', 'c09c0be1184eda65a7f53fccc4a2bba1634acc10', 'student'), ('hsx1927a', 'Irene', 'MONROE', 'irene.monroe@etu.iut-tlse3.fr', '7fa7e7fcbb03c0be72583f2d1bfc41720f2274f1', 'stud'),
(83, 'pfv1965a', 'Francine', 'COMBS', 'francine.combs@etu.iut-tlse3.fr', '7099f8bf94d6ed46779ad913b19df106c7636c21', 'student'), ('hth1975a', 'Pruitt', 'FERGUSON', 'pruitt.ferguson@etu.iut-tlse3.fr', '562802653c96a2e3d2523fb6f38df8c42a6c70a2', 'stud'),
(84, 'oqz1937a', 'Morse', 'MICHAEL', 'morse.michael@etu.iut-tlse3.fr', '5b83cb687dd339da656a92dd8430faea2bec313c', 'student'), ('hzg1935a', 'Clarice', 'ORTEGA', 'clarice.ortega@etu.iut-tlse3.fr', '8c50183063238ec8218d0959c71f3315715102be', 'stud'),
(85, 'aft1950a', 'Rachel', 'DAVENPORT', 'rachel.davenport@etu.iut-tlse3.fr', '99ecf0de46a124b8922e3dcf02e92beda9efff5f', 'student'), ('iah1936a', 'Franklin', 'SLATER', 'franklin.slater@etu.iut-tlse3.fr', 'c4b7e3ae38056aa7b5a492b5ae4d6822bbc4f04b', 'stud'),
(86, 'bae1943a', 'Shaw', 'GOFF', 'shaw.goff@etu.iut-tlse3.fr', 'c3c8c34e1ae3509af6f75035dbcb7960a2606d31', 'student'), ('ihf1991a', 'Robinson', 'MCGEE', 'robinson.mcgee@etu.iut-tlse3.fr', '4aeeee2100e584893c71d32ebcb5b4837f3e2e1a', 'stud'),
(87, 'kul1903a', 'Magdalena', 'SIMON', 'magdalena.simon@etu.iut-tlse3.fr', '45a62b23dfa7a4951703bbd74e36fe0d1a10a06d', 'student'), ('imf1922a', 'Hawkins', 'PATTERSON', 'hawkins.patterson@etu.iut-tlse3.fr', '05ef138dfd9464af5ca7ddb1e6fc5d38a5d256dc', 'stud'),
(88, 'rmj1965a', 'Bridges', 'ROSALES', 'bridges.rosales@etu.iut-tlse3.fr', 'b2022e04ca0043cbf786beb3c6a5a0478522441b', 'student'), ('iyh1918a', 'Tucker', 'TRAN', 'tucker.tran@etu.iut-tlse3.fr', '70e3a6e9f775731a6dc43044576feb6acf4739bd', 'stud'),
(89, 'yyt1926a', 'Bryant', 'CHANEY', 'bryant.chaney@etu.iut-tlse3.fr', '65464c5994c2caf9669738029565cec80365000d', 'student'), ('jfa1965a', 'Lolita', 'FARRELL', 'lolita.farrell@etu.iut-tlse3.fr', '1a5d44889500c4f04f076836691d9ccea4c56cff', 'stud'),
(90, 'ktz1997a', 'Mcgowan', 'COHEN', 'mcgowan.cohen@etu.iut-tlse3.fr', '8410b649a5983bb33b099bacd74d15b5ea88f8f1', 'student'), ('jgd1966a', 'Janelle', 'BURKS', 'janelle.burks@etu.iut-tlse3.fr', '83cbc892278c1d7aab3214383b272a2677a39f01', 'stud'),
(91, 'hku1995a', 'Roslyn', 'MURPHY', 'roslyn.murphy@etu.iut-tlse3.fr', '505aeadd5e9889d384a964aee33f47b0752cc8a3', 'student'), ('jrc1974a', 'Pierce', 'CHURCH', 'pierce.church@etu.iut-tlse3.fr', '0bf72260769a364574bebe43a0e2d40f0b42918a', 'stud'),
(92, 'zgy1948a', 'Emily', 'ALVARADO', 'emily.alvarado@etu.iut-tlse3.fr', 'c8366542e6bac9a842613cdf7f5806c5242c00ac', 'student'), ('kfx1995a', 'Mitzi', 'SCHROEDER', 'mitzi.schroeder@etu.iut-tlse3.fr', 'ea085dda880c523b14c1d9c24bfe8479901d90bf', 'stud'),
(93, 'vau1957a', 'Kathy', 'STOUT', 'kathy.stout@etu.iut-tlse3.fr', '5508a93cf76ccc59b380e40c14351656b99452e7', 'student'), ('kpf1942a', 'Strickland', 'ROACH', 'strickland.roach@etu.iut-tlse3.fr', '49ae8a41825e039415fc5403721a08bf849675dd', 'stud'),
(94, 'hsx1927a', 'Irene', 'MONROE', 'irene.monroe@etu.iut-tlse3.fr', 'e724e611c75a7c1e1b0ed27f49c1511a853994c4', 'student'), ('ktz1997a', 'Mcgowan', 'COHEN', 'mcgowan.cohen@etu.iut-tlse3.fr', '77f2eb9b0cd9702671799b4016e115fe185b44da', 'stud'),
(95, 'eca1977a', 'Hope', 'WILSON', 'hope.wilson@etu.iut-tlse3.fr', '3bead96219d7a1cb3ed836c4f2939bfb8bafc065', 'student'), ('kul1903a', 'Magdalena', 'SIMON', 'magdalena.simon@etu.iut-tlse3.fr', 'a364c06c6bc0883322fe0b8fecf70379187e85de', 'stud'),
(96, 'wpa1966a', 'Collier', 'ENGLISH', 'collier.english@etu.iut-tlse3.fr', 'd296f52b000f47b10cef8a08bf80e68348e13d28', 'student'), ('liw1940a', 'Middleton', 'WATERS', 'middleton.waters@etu.iut-tlse3.fr', '406a96ab06f805166e3ef4809e5b8aefd3fa422a', 'stud'),
(97, 'qoe1974a', 'Raquel', 'CUNNINGHAM', 'raquel.cunningham@etu.iut-tlse3.fr', '44f9e6f9d718407affbfe0c2d79545dae767a98a', 'student'), ('ljc1902a', 'Lisa', 'CLEMENTS', 'lisa.clements@etu.iut-tlse3.fr', '8b554a1fdc6fa3c07988a523bf411c90c1b647f7', 'stud'),
(98, 'tkz1955a', 'Nora', 'BREWER', 'nora.brewer@etu.iut-tlse3.fr', 'cb070efa815f0c3f91f8174367f18a20334dcdd5', 'student'), ('lme1952a', 'Hollie', 'GILLIAM', 'hollie.gilliam@etu.iut-tlse3.fr', '3f7b0669e6d2a9df317c89d9947b8b2c724278f5', 'stud'),
(99, 'wnx1995a', 'Lorraine', 'PADILLA', 'lorraine.padilla@etu.iut-tlse3.fr', 'fd1a7371589a9b4c2130ad025b131ad454d39070', 'student'), ('maq1980a', 'Cook', 'DUNN', 'cook.dunn@etu.iut-tlse3.fr', '9a35d39268d9ba001290d4ad62de2e8d3da645dc', 'stud'),
(100, 'sft1994a', 'Norris', 'BROCK', 'norris.brock@etu.iut-tlse3.fr', '509b2a658e45d1196255c7df07eeb6a6e4e21e85', 'student'), ('mhr1952a', 'Socorro', 'BLAIR', 'socorro.blair@etu.iut-tlse3.fr', '007a09dbff0959962f7aca117f55e125d77658c4', 'stud'),
(101, 'vgb1979a', 'Baird', 'FORD', 'baird.ford@etu.iut-tlse3.fr', 'd376fee23323ba3204d8d7dac3c0ee410184dfb6', 'student'), ('mhu1946a', 'Edna', 'GREEN', 'edna.green@etu.iut-tlse3.fr', 'a2be4db796235e6ee539d8a96a692fc1936957db', 'stud'),
(102, 'wbt1993a', 'Goodman', 'PAUL', 'goodman.paul@etu.iut-tlse3.fr', 'c86544b4ad0a2a7fbbd5b822a85a1571b3850514', 'student'), ('mma1990a', 'Williamson', 'HATFIELD', 'williamson.hatfield@etu.iut-tlse3.fr', 'b00d282627610321925b6573ecf55242491e4382', 'stud'),
(103, 'xtb1903a', 'Kelly', 'FLYNN', 'kelly.flynn@etu.iut-tlse3.fr', '97e9ea2b99190ef87b050033c546fd35c36f92c4', 'student'), ('msj1985a', 'Ball', 'AVILA', 'ball.avila@etu.iut-tlse3.fr', 'a65d0ad5230a8e62f691ad1f2f95a3c65f1c03dd', 'stud'),
(104, 'msj1985a', 'Ball', 'AVILA', 'ball.avila@etu.iut-tlse3.fr', '5fefcd6d87673eeaebca18cb5830ac9881af59d1', 'student'), ('mzh1955a', 'Leblanc', 'WHEELER', 'leblanc.wheeler@etu.iut-tlse3.fr', 'd5711bb21c243770c254b30fc2fb429b06bbfaf0', 'stud'),
(105, 'wvn1982a', 'Sears', 'WELCH', 'sears.welch@etu.iut-tlse3.fr', 'cda70dd81e39eed9c594fa682b74546ef390f7f7', 'student'), ('ngw1997a', 'Booker', 'LOPEZ', 'booker.lopez@etu.iut-tlse3.fr', 'a0feaf0e9ec8f18cfc3cc8eaa0a4af131c5c91d7', 'stud'),
(106, 'psg1965a', 'Knapp', 'STEPHENS', 'knapp.stephens@etu.iut-tlse3.fr', 'd730461b6b3bba9abc291cb78a4b4e05488ac270', 'student'), ('ngz1932a', 'Faye', 'PAYNE', 'faye.payne@etu.iut-tlse3.fr', '166e4a0172787e784c6835ed07d34a550b61b986', 'stud'),
(107, 'hpa1908a', 'Jacklyn', 'BYRD', 'jacklyn.byrd@etu.iut-tlse3.fr', 'fd83a122301627c92457a41e269b573eab74425b', 'student'), ('non1968a', 'Foster', 'TILLMAN', 'foster.tillman@etu.iut-tlse3.fr', '3a3f8d8ddbf68fa1e366cd87d20357f05fa09f45', 'stud'),
(108, 'maq1980a', 'Cook', 'DUNN', 'cook.dunn@etu.iut-tlse3.fr', '19cf3de445a71cada9a741441b0c247719df7467', 'student'), ('obg1973a', 'Lynch', 'CHANDLER', 'lynch.chandler@etu.iut-tlse3.fr', 'a10d3ba3eacf95b418fe2c108492ea41ad83fc9e', 'stud'),
(109, 'agq1929a', 'Althea', 'POOLE', 'althea.poole@etu.iut-tlse3.fr', 'aee3d75da5b220f12cd5cc7f24cdaddc9ca63dd5', 'student'), ('ono1984a', 'Kitty', 'SANFORD', 'kitty.sanford@etu.iut-tlse3.fr', '2100f892c9e0c1a0ce35e444d969b2bdf9de9d6b', 'stud'),
(110, 'gwe1975a', 'Helen', 'HICKS', 'helen.hicks@etu.iut-tlse3.fr', 'e93887aa22ea3f1163393fc89dcf68927e1730ef', 'student'), ('oqz1937a', 'Morse', 'MICHAEL', 'morse.michael@etu.iut-tlse3.fr', '2edfedd459e1b63bf637184c4ee4a978f0c8e41e', 'stud'),
(111, 'gdb1939a', 'Kate', 'NOEL', 'kate.noel@etu.iut-tlse3.fr', '2b0245ab913ba8e111210e4bbcd8c48726308322', 'student'), ('otm1902a', 'Woods', 'DEJESUS', 'woods.dejesus@etu.iut-tlse3.fr', '8d3a059e7df1744e6e342dad660adeb3675d42d1', 'stud'),
(112, 'jrc1974a', 'Pierce', 'CHURCH', 'pierce.church@etu.iut-tlse3.fr', 'ee7136fef2f56592fce809efb66e930978fb7dcd', 'student'), ('otv1930a', 'Odonnell', 'BEASLEY', 'odonnell.beasley@etu.iut-tlse3.fr', 'b55e173984ef282d1bbfb1cf441b1c702533ac87', 'stud'),
(113, 'jfa1965a', 'Lolita', 'FARRELL', 'lolita.farrell@etu.iut-tlse3.fr', '30da7a6a93335a663edbed16f28f98a46711e3d5', 'student'), ('oxz1985a', 'Paul', 'GROSS', 'paul.gross@etu.iut-tlse3.fr', '5ba7159ed8bea08ff0c6b25f47c979f2e3b9e1a5', 'stud'),
(114, 'buz1982a', 'Kemp', 'JACOBS', 'kemp.jacobs@etu.iut-tlse3.fr', 'df1474b0039dfe2393cf5baae180e170f221f5c3', 'student'), ('pdi1904a', 'Brady', 'ASHLEY', 'brady.ashley@etu.iut-tlse3.fr', '48c9adaa6687ec1f896675cd7dd262c6b38c2b44', 'stud'),
(115, 'mhr1952a', 'Socorro', 'BLAIR', 'socorro.blair@etu.iut-tlse3.fr', '5b0d4e04d65c8eca304cc6aeeb48fc6a3552ccff', 'student'), ('pfv1965a', 'Francine', 'COMBS', 'francine.combs@etu.iut-tlse3.fr', 'a6ba94eec7357d691231ce8b7940d86ae2cb94a9', 'stud'),
(116, 'pos1958a', 'Juliana', 'FULLER', 'juliana.fuller@etu.iut-tlse3.fr', '9f556f1eb9cf593e4a46a686c60c6271b1e38a35', 'student'), ('pos1958a', 'Juliana', 'FULLER', 'juliana.fuller@etu.iut-tlse3.fr', 'bd4300a1779af89b2c87863384d7ab4c93d922ad', 'stud'),
(117, 'xdi1926a', 'Ferrell', 'SALAS', 'ferrell.salas@etu.iut-tlse3.fr', 'b816cc329f638c9e2eb4786c3e470f37c3cbc60e', 'student'), ('psg1965a', 'Knapp', 'STEPHENS', 'knapp.stephens@etu.iut-tlse3.fr', '4e24185809f6d19ab25469582b340d1d98d1478a', 'stud'),
(118, 'awl1901a', 'Clare', 'ROLLINS', 'clare.rollins@etu.iut-tlse3.fr', 'a75928507dadeb2b1fe51121cf899203e10187da', 'student'), ('qoe1974a', 'Raquel', 'CUNNINGHAM', 'raquel.cunningham@etu.iut-tlse3.fr', '5670da6f0a600ea148705e8dfe87921b35bc24dc', 'stud'),
(119, 'uix1942a', 'Kristen', 'GIBSON', 'kristen.gibson@etu.iut-tlse3.fr', '7f575f38feb92467196fdd2afd5fcfa1c5fe5337', 'student'), ('rmj1965a', 'Bridges', 'ROSALES', 'bridges.rosales@etu.iut-tlse3.fr', 'ffa1cf9f81059b83a1a05fe7408867027decf767', 'stud'),
(120, 'ngz1932a', 'Faye', 'PAYNE', 'faye.payne@etu.iut-tlse3.fr', '93bc9ce253abcfc90adb740c737cf711fd96f1dd', 'student'), ('rpl1936a', 'Tamera', 'MOSES', 'tamera.moses@etu.iut-tlse3.fr', 'd7f0216bd90b84f878bf562f473875e500d6ae40', 'stud'),
(121, 'kpf1942a', 'Strickland', 'ROACH', 'strickland.roach@etu.iut-tlse3.fr', '1281bd6daabadd55a50a73fc2c2d1a98fc9efe53', 'student'), ('rwg1909a', 'Kelly', 'WALLACE', 'kelly.wallace@etu.iut-tlse3.fr', '28356092e4722e7d40d761db1b2a3e4178c0e8a1', 'stud'),
(122, 'aiv1989a', 'Concetta', 'ROBLES', 'concetta.robles@etu.iut-tlse3.fr', 'aeffe013bda8b573cbf369387fbc7e4d06019511', 'student'), ('scm1996a', 'Dotson', 'SANDOVAL', 'dotson.sandoval@etu.iut-tlse3.fr', '3d2818a46340435822af94d9736bfad7ad1ecd4b', 'stud'),
(123, 'sjw1936a', 'Cross', 'MEYERS', 'cross.meyers@etu.iut-tlse3.fr', '65f3196b2f65013ae71bb1cbb2459178d8890cd8', 'student'), ('sft1994a', 'Norris', 'BROCK', 'norris.brock@etu.iut-tlse3.fr', 'fcfd756acef2869bb15d72b877ccd9eed675fd26', 'stud'),
(124, 'fei1944a', 'Esperanza', 'TERRELL', 'esperanza.terrell@etu.iut-tlse3.fr', '5a6a7b4ab11d8a74d774a0e460db89d88f852347', 'student'), ('sjl1937a', 'English', 'POPE', 'english.pope@etu.iut-tlse3.fr', 'a5536a593633b1d610e976985d3be1fc27999e4d', 'stud'),
(125, 'zge1937a', 'Ella', 'GARZA', 'ella.garza@etu.iut-tlse3.fr', '0185fea737a6a356c257bfa71048ce9376ca7bb8', 'student'), ('sjw1936a', 'Cross', 'MEYERS', 'cross.meyers@etu.iut-tlse3.fr', '8571d7564e2a196feb0841fd8474754d0032721c', 'stud'),
(126, 'rpl1936a', 'Tamera', 'MOSES', 'tamera.moses@etu.iut-tlse3.fr', '2954ffb8d0709686145664f52797d8363789d8e6', 'student'), ('ssr1906a', 'Howell', 'FAULKNER', 'howell.faulkner@etu.iut-tlse3.fr', '073de42d66740dfd2beec792e63806a7147fa087', 'stud'),
(127, 'hrv1902a', 'Irwin', 'HOUSTON', 'irwin.houston@etu.iut-tlse3.fr', 'd6b6531cd157109d996f08683725477241c33393', 'student'), ('ste1994a', 'Allison', 'CALLAHAN', 'allison.callahan@etu.iut-tlse3.fr', 'a5f1074db3275a128b57d99c8a48a557297084c9', 'stud'),
(128, 'djo1928a', 'Vaughn', 'DURHAM', 'vaughn.durham@etu.iut-tlse3.fr', '7fc120742ea9f33780c63b7a4b8f1fee02829b70', 'student'), ('swd1951a', 'Jenny', 'GRAHAM', 'jenny.graham@etu.iut-tlse3.fr', 'ae8ffe6506ca1863cee65fc4402bb5dd6e563d4b', 'stud'),
(129, 'scm1996a', 'Dotson', 'SANDOVAL', 'dotson.sandoval@etu.iut-tlse3.fr', '3dc7712b78fe2e5d4da729521979e42549907f78', 'student'), ('tdc1978a', 'Bird', 'TRAVIS', 'bird.travis@etu.iut-tlse3.fr', '4a10508dd7f87089a321fc07ff63a8269a427bcb', 'stud'),
(130, 'ylq1926a', 'Stein', 'SILVA', 'stein.silva@etu.iut-tlse3.fr', 'e3e62678d1e76b008edd7f892e40040e7b81599e', 'student'), ('tkz1955a', 'Nora', 'BREWER', 'nora.brewer@etu.iut-tlse3.fr', '6695f488b7caf712423e5f090707058b5af0798d', 'stud'),
(131, 'eme1913a', 'Booth', 'HENRY', 'booth.henry@etu.iut-tlse3.fr', '492891d212304c567331ae71b3241e95884a12cc', 'student'), ('tnx1949a', 'Dejesus', 'WALTON', 'dejesus.walton@etu.iut-tlse3.fr', '830e567e1f570e0b90ae23488e1aaa11142ec4a6', 'stud'),
(132, 'otv1930a', 'Odonnell', 'BEASLEY', 'odonnell.beasley@etu.iut-tlse3.fr', 'd305bb36dd17bcc283bc1aa0865be6dc30e46b37', 'student'), ('uix1942a', 'Kristen', 'GIBSON', 'kristen.gibson@etu.iut-tlse3.fr', '66fa9b0c1e377689bde5992b7ce9f8a88b394693', 'stud'),
(133, 'cda1951a', 'Mcpherson', 'ANTHONY', 'mcpherson.anthony@etu.iut-tlse3.fr', 'bce1c02fbdc1f02a22ade40656d4971442ac0459', 'student'), ('vau1957a', 'Kathy', 'STOUT', 'kathy.stout@etu.iut-tlse3.fr', '7149c984ea57994e5306ce3c4026064a776de1d4', 'stud'),
(134, 'eee1933a', 'Stacey', 'LITTLE', 'stacey.little@etu.iut-tlse3.fr', 'f1e95516e957d05394fdee0017aae394c9813171', 'student'), ('vdj1905a', 'Dean', 'ESPINOZA', 'dean.espinoza@etu.iut-tlse3.fr', 'fde91e6c0086ecda41e08a683eb6df56c7739371', 'stud'),
(135, 'kfx1995a', 'Mitzi', 'SCHROEDER', 'mitzi.schroeder@etu.iut-tlse3.fr', '7605f5d97a938c7ba15d174cd108b6692dd655e2', 'student'), ('vgb1979a', 'Baird', 'FORD', 'baird.ford@etu.iut-tlse3.fr', '66eb6f8e8634e210729fcf25dfa32ca17bf401c3', 'stud'),
(136, 'jgd1966a', 'Janelle', 'BURKS', 'janelle.burks@etu.iut-tlse3.fr', '5be6d9bcd3871e4de0edddb9318c4f63ac26dedf', 'student'), ('vul1953a', 'Robyn', 'BATES', 'robyn.bates@etu.iut-tlse3.fr', '6421ed3a69005e0de9ab025db4617a5a2d125682', 'stud'),
(137, 'rwg1909a', 'Kelly', 'WALLACE', 'kelly.wallace@etu.iut-tlse3.fr', '612ca130318a74ec4fe1edede6099f7d23897ff9', 'student'), ('wbt1993a', 'Goodman', 'PAUL', 'goodman.paul@etu.iut-tlse3.fr', '282c5d93f43a3960e840b410f95b4c598e8a9340', 'stud'),
(138, 'ngw1997a', 'Booker', 'LOPEZ', 'booker.lopez@etu.iut-tlse3.fr', '22045b63e4c18bf433c41ab0c306de2c352ae409', 'student'), ('wnx1995a', 'Lorraine', 'PADILLA', 'lorraine.padilla@etu.iut-tlse3.fr', '6f38a397c9c7e5b3aceab87e63da5533fa612459', 'stud'),
(139, 'obg1973a', 'Lynch', 'CHANDLER', 'lynch.chandler@etu.iut-tlse3.fr', '73448af356629fd2b66963b6e506d515eac654bc', 'student'), ('wpa1966a', 'Collier', 'ENGLISH', 'collier.english@etu.iut-tlse3.fr', 'fd63ff8eefa080cbecb52b68dc3cf264cf121fe3', 'stud'),
(140, 'hzg1935a', 'Clarice', 'ORTEGA', 'clarice.ortega@etu.iut-tlse3.fr', '8f20fa9fe75ac4158360964c19c466aeedb1b3ee', 'student'), ('wvn1982a', 'Sears', 'WELCH', 'sears.welch@etu.iut-tlse3.fr', '39b49c655ec584119306086db59253cf3a171f42', 'stud'),
(141, 'iyh1918a', 'Tucker', 'TRAN', 'tucker.tran@etu.iut-tlse3.fr', '46d9f1b05d231673d4142961d9eb73be3bdc438c', 'student'), ('xdh1989a', 'Rasmussen', 'PAGE', 'rasmussen.page@etu.iut-tlse3.fr', '51240c864a1efe510e150f5789889dd7b1173e9c', 'stud'),
(142, 'tdc1978a', 'Bird', 'TRAVIS', 'bird.travis@etu.iut-tlse3.fr', '8f2afc2fc7975cb99f0745829c3451d459e342e9', 'student'), ('xdi1926a', 'Ferrell', 'SALAS', 'ferrell.salas@etu.iut-tlse3.fr', '50a8f5265f56c9a30816379dd91d26870c9b649b', 'stud'),
(143, 'swd1951a', 'Jenny', 'GRAHAM', 'jenny.graham@etu.iut-tlse3.fr', '919979759142f8cc4e9c351c0624e40a40e1ab02', 'student'), ('xtb1903a', 'Kelly', 'FLYNN', 'kelly.flynn@etu.iut-tlse3.fr', '270b848d2e7ecb404a3816219bcfc32dafed8477', 'stud'),
(144, 'vdj1905a', 'Dean', 'ESPINOZA', 'dean.espinoza@etu.iut-tlse3.fr', '4329059ef84d124807459d52dc9b744bd4ad7604', 'student'), ('ydw1981a', 'Glenda', 'WILKINSON', 'glenda.wilkinson@etu.iut-tlse3.fr', '594ca97b532fa21cc524792f2d00a2720b010191', 'stud'),
(145, 'bit1985a', 'Rosalind', 'FISHER', 'rosalind.fisher@etu.iut-tlse3.fr', '09714ae926b68dcbf1e62c0d7cc9f9273dc4623a', 'student'), ('yjh1944a', 'Thompson', 'SOLIS', 'thompson.solis@etu.iut-tlse3.fr', '303925d37b3d505b6162bd0222bd654dc06327a9', 'stud'),
(146, 'iah1936a', 'Franklin', 'SLATER', 'franklin.slater@etu.iut-tlse3.fr', '51d71755f43045f2c96c71ce4ad7f16fe858b379', 'student'), ('ylq1926a', 'Stein', 'SILVA', 'stein.silva@etu.iut-tlse3.fr', '9d4517cb3cec7bae1957f4026db777e33ccc097d', 'stud'),
(147, 'ypt1989a', 'Simon', 'MORALES', 'simon.morales@etu.iut-tlse3.fr', '8bb7b7a41d638a6867935ba0a85b4cc4080f6288', 'student'), ('ypo1964a', 'Marylou', 'HOPKINS', 'marylou.hopkins@etu.iut-tlse3.fr', 'b72c606e9f02d46fbd29da132d96bbdbbffabf35', 'stud'),
(148, 'ljc1902a', 'Lisa', 'CLEMENTS', 'lisa.clements@etu.iut-tlse3.fr', '057cc0ba19b97b8249b080fc2efff784b45ca34a', 'student'), ('ypt1989a', 'Simon', 'MORALES', 'simon.morales@etu.iut-tlse3.fr', '552b82ca9e6d6b6f661e66d7af0a380e00d52625', 'stud'),
(149, 'hcc1997a', 'Madeline', 'MARKS', 'madeline.marks@etu.iut-tlse3.fr', '707da24b23e55e50b090147377e5e2aee6eeb1e8', 'student'), ('yyt1926a', 'Bryant', 'CHANEY', 'bryant.chaney@etu.iut-tlse3.fr', '5a962df24a9b04ed8a56c02a68d8dfc5e9435abe', 'stud'),
(150, 'bky1924a', 'Gena', 'ENGLAND', 'gena.england@etu.iut-tlse3.fr', 'c643161955167e1a7ec292ab3001b01f9aeb6d93', 'student'), ('zge1937a', 'Ella', 'GARZA', 'ella.garza@etu.iut-tlse3.fr', '927065354ae8e224f43f6eb9578b5c7c9750461b', 'stud'),
(151, 'vul1953a', 'Robyn', 'BATES', 'robyn.bates@etu.iut-tlse3.fr', '1b869180b351e5f900c4bed2c6c1781f93199822', 'student'), ('zgy1948a', 'Emily', 'ALVARADO', 'emily.alvarado@etu.iut-tlse3.fr', '34ad81180ba7cfa510101af8abe47a558e46858a', 'stud');
(152, 'ssr1906a', 'Howell', 'FAULKNER', 'howell.faulkner@etu.iut-tlse3.fr', '769b4c973e9b812386e282d375a1c5ec6f00c616', 'student'),
(153, 'yjh1944a', 'Thompson', 'SOLIS', 'thompson.solis@etu.iut-tlse3.fr', '67e91508291d3b6b155018f1736556c64e06e8f3', 'student'),
(154, 'ste1994a', 'Allison', 'CALLAHAN', 'allison.callahan@etu.iut-tlse3.fr', 'c71907802e175fcc96c8f76f24aab27382fae7f7', 'student'),
(155, 'ypo1964a', 'Marylou', 'HOPKINS', 'marylou.hopkins@etu.iut-tlse3.fr', '60eee415a1020d91db35b92e248e755a15d91a9e', 'student');
-- --
-- Contraintes pour les tables exportées -- Contraintes pour les tables exportées
-- --
-- --
-- Contraintes pour la table `association_module_semestre_ue` -- Contraintes pour la table `appartenance`
-- --
ALTER TABLE `association_module_semestre_ue` ALTER TABLE `appartenance`
ADD CONSTRAINT `association_module_semestre_ue-foreign_semestre` FOREIGN KEY (`id_semestre`) REFERENCES `semestre` (`id_semestre`), ADD CONSTRAINT `appartenance_id_etudiant` FOREIGN KEY (`id_etudiant`) REFERENCES `utilisateur` (`identifiant`),
ADD CONSTRAINT `association_module_semestre_ue-foreign_module` FOREIGN KEY (`id_module`) REFERENCES `modules` (`id_module`), ADD CONSTRAINT `appartenance_id_groupe` FOREIGN KEY (`id_groupe`) REFERENCES `groupe` (`id_groupe`),
ADD CONSTRAINT `association_module_semestre_ue-foreign_ue` FOREIGN KEY (`id_ue`) REFERENCES `ue` (`id_ue`); ADD CONSTRAINT `appartenance_id_semestre` FOREIGN KEY (`id_semestre`) REFERENCES `semestre` (`id_semestre`);
-- --
-- Contraintes pour la table `association_utilisateur_groupe` -- Contraintes pour la table `programme`
-- --
ALTER TABLE `association_utilisateur_groupe` ALTER TABLE `programme`
ADD CONSTRAINT `asso_groupe_utilisateur-foreign_groupe` FOREIGN KEY (`id_groupe`) REFERENCES `groupes` (`id_groupe`), ADD CONSTRAINT `programme_id_semestre` FOREIGN KEY (`id_semestre`) REFERENCES `semestre` (`id_semestre`),
ADD CONSTRAINT `asso_groupe_utilisateur-foreign_utilisateur` FOREIGN KEY (`id_utilisateur`) REFERENCES `utilisateurs` (`id_utilisateur`); ADD CONSTRAINT `programme_id_module` FOREIGN KEY (`id_module`) REFERENCES `module` (`id_module`),
ADD CONSTRAINT `programme_id_ue` FOREIGN KEY (`id_ue`) REFERENCES `ue` (`id_ue`);
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;