diff --git a/css/global.css b/css/global.css index 0141612..e2d1d3e 100755 --- a/css/global.css +++ b/css/global.css @@ -126,4 +126,24 @@ table.basic:nth-child(4n+3) tr:hover td{ background-color: rgba(45, 204, 112, 1) /*********************/ /*** LIENS BOUTONS ***/ -/*********************/ \ No newline at end of file +/*********************/ +span.link{ + /* position */ + padding: .3em .8em; + + /* border */ + border-radius: 5px; + border: 1px solid #ddd; + box-shadow: inset 0 0 1px #f5f5f5; + + /* background */ + background: #eee; + + /* foreground */ + color: #333; + + /* extra */ + cursor: pointer; +} + +span.link:hover{ color: #000; } \ No newline at end of file diff --git a/manager/database.php b/manager/database.php index 672b63f..e18a440 100755 --- a/manager/database.php +++ b/manager/database.php @@ -324,6 +324,96 @@ class DataBase{ return 'error'; } + /**************************************************/ + /*** retourne les modules d'un étudiant par UEs ***/ + /**************************************************/ + public function getModulesByUEByEtudiant($etudiant, $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 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 = :etudiantUID ". + "AND app.id_semestre = :semestreUID"); + $getGroupeUID->execute(array( + ':etudiantUID' => $etudiantUID, + ':semestreUID' => $semestreUID, + )); + + // si on trouve, on le définit, sinon on retourne "unknown_user" + if( $groupeUID = $getGroupeUID->fetch()['id'] ) + $groupeUID = $groupeUID; + else + return 'unknown_group'; + + $UEList = $this->getUEsEtudiant($etudiant, $semestre, $annee); // on récupère la liste des UEs + + foreach($UEList as $iter=>$UE){ + + // si on a l'UID utilisateur & l'UID groupe => on récupère les modules + $getModuleList = $this->pdo->prepare("SELECT DISTINCT m.id_module as id, m.nom as nom, m.libelle as libelle ". + "FROM module as m, groupe as g, semestre as s, ue, appartenance as app, mcc_ue, mcc_module as mcc_m ". + "WHERE app.id_semestre = s.id_semestre ". + "AND app.id_groupe = g.id_groupe ". + "AND app.id_semestre = mcc_ue.id_semestre ". + + "AND mcc_ue.id_ue = ue.id_ue ". + "AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ". + "AND mcc_m.id_module = m.id_module ". + + "AND g.id_groupe = :groupeUID ". + "AND s.id_semestre = :semestreUID ". + "AND ue.id_ue = :UEUID ". + "ORDER BY m.nom, m.libelle ASC"); + $getModuleList->execute(array( + ':groupeUID' => $groupeUID, + ':semestreUID' => $semestreUID, + ':UEUID' => $UE['id'] + )); + + $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 + + $UEList[$iter]['modules'] = $modulelist; // on ajoute la liste des mdules + } + + return $UEList; + } + /******************************************/ /*** retourne les modules d'un étudiant ***/ @@ -407,7 +497,6 @@ class DataBase{ } - /**************************************/ /*** retourne les UEs d'un étudiant ***/ /**************************************/ @@ -668,7 +757,7 @@ class DataBase{ // si on a l'UID utilisateur & l'UID groupe => on récupère les modules - $getModuleList = $this->pdo->prepare("SELECT note.intitule, note.valeur, note.base ". + $getModuleList = $this->pdo->prepare("SELECT m.nom as module, m.libelle as modulelib, note.intitule, note.valeur, note.base, note.coefficient ". "FROM note, appartenance as app, semestre as s, module as m, mcc_ue, mcc_module as mcc_m ". "WHERE note.id_appartenance = app.id_appartenance ". "AND note.id_mcc_module = mcc_m.id_mcc_module ". @@ -765,7 +854,7 @@ class DataBase{ return 'unknown_UE'; // si on a l'UID utilisateur & l'UID UE => on récupère les notes - $getUEList = $this->pdo->prepare("SELECT m.nom as module, note.intitule, note.valeur, note.base ". + $getUEList = $this->pdo->prepare("SELECT m.nom as module, m.libelle as modulelib, note.intitule, note.valeur, note.base, note.coefficient ". "FROM note, appartenance as app, semestre as s, module as m, ue, mcc_ue, mcc_module as mcc_m ". "WHERE note.id_appartenance = app.id_appartenance ". "AND note.id_mcc_module = mcc_m.id_mcc_module ". diff --git a/manager/modules.php b/manager/modules.php index 7878f84..7078346 100755 --- a/manager/modules.php +++ b/manager/modules.php @@ -36,6 +36,33 @@ require_once __ROOT__.'/manager/database.php'; /***********************************/ /* 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); + + // // STRUCTURE + // // tableau d'UES contenant un tableau de MODULES + + // 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; + + + /*******************************/ + /* liste des UES 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 @@ -45,13 +72,16 @@ require_once __ROOT__.'/manager/database.php'; $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); + $UEList = DataBase::getInstance()->getModulesByUEByEtudiant($request->etudiant, $request->semestre, $request->annee); - if( is_array($modules) ){ // si on a bien un tableau - $answer->modules = $modules; // on renvoie dans answer->modules + // STRUCTURE + // tableau d'UES contenant un tableau de MODULES + + if( is_array($UEList) ){ // si on a bien un tableau + $answer->UEs = $UEList; // on renvoie dans answer->ues $answer->request = 'success'; // et on renvoie success }else // sinon si c'est pas un tableau - $answer->request = $modules; // on retourne l'erreur + $answer->request = $UEList; // on retourne l'erreur }else $answer->request = 'param_error'; break; diff --git a/page/career.php b/page/career.php index 70c5e24..1f8adde 100755 --- a/page/career.php +++ b/page/career.php @@ -42,7 +42,7 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // s foreach($answer->notes as $module){ - echo ""; + echo "
"; echo ""; echo ''; echo ''; @@ -52,8 +52,10 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // s echo ''; foreach($module['notes'] as $note){ echo ''; + echo ""; echo ''; echo ''; + echo ''; echo ''; } echo ''; @@ -94,7 +96,7 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // s foreach($answer->notes as $UE){ - echo "
'.$module['module']['nom'].' - '.$module['module']['libelle'].'
".$note['module']." - ".$note['modulelib']."'.$note['intitule'].''.$note['valeur'].'/'.$note['base'].''.$note['coefficient'].'
"; + echo "
"; echo ""; echo ''; echo ''; @@ -104,9 +106,10 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // s echo ''; foreach($UE['notes'] as $note){ echo ''; - echo ""; + echo ""; echo ''; echo ''; + echo ''; echo ''; } echo ''; diff --git a/page/modules.php b/page/modules.php index 4a03403..908eab2 100755 --- a/page/modules.php +++ b/page/modules.php @@ -37,18 +37,21 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // s //////////////////////////////////////////////////////////////////////////////// echo "
"; - foreach($answer->modules as $module){ + foreach($answer->UEs as $UE){ echo "
'.$UE['UE']['nom'].' - '.$UE['UE']['libelle'].'
".$note['module']."".$note['module']." - ".$note['modulelib']."'.$note['intitule'].''.$note['valeur'].'/'.$note['base'].''.$note['coefficient'].'
"; echo ""; echo ''; - echo ''; + echo ''; echo ''; echo ''; echo ''; - echo ''; - echo ''; - echo ''; - echo ''; + foreach($UE['modules'] as $MODULE){ + echo ''; + echo ''; + echo ''; + echo ''; + } + echo ''; echo '
'.$module['nom'].''.$UE['nom'].' - '.$UE['libelle'].'
'.$module['nom'].''.$module['libelle'].'
'.$MODULE['nom'].''.$MODULE['libelle'].'
'; }