From 954698d2b0aa008df6102be88caf88a44462c8c1 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Fri, 6 Nov 2015 14:05:14 +0100 Subject: [PATCH] =?UTF-8?q?Modification=20PHP,=20prise=20en=20compte=20cho?= =?UTF-8?q?ix=20du=20semestre=20ou=20groupe,=20=C3=A0=20faire=20JS=20qui?= =?UTF-8?q?=20modifie=20pageM.vars?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/header.css | 1 - index.php | 4 ++-- manager/database.php | 32 +++++++++++++++++++++++++++----- manager/groups.php | 29 +++++++++++++++++++++++++++-- page/career.php | 3 +++ page/groups.php | 26 ++++++++++++++++++++++++++ page/home.php | 16 +--------------- test.php | 40 +++++++++++++++++++++++++++++++++++++++- xdoc/structure.sql | 5 +++-- 9 files changed, 128 insertions(+), 28 deletions(-) diff --git a/css/header.css b/css/header.css index 5804783..a1646c8 100755 --- a/css/header.css +++ b/css/header.css @@ -190,7 +190,6 @@ } #HEADER .searchbar:focus{ - background-image: url(../src/header/search@hover.svg); color: #17232f; } diff --git a/index.php b/index.php index b584792..c4ab787 100755 --- a/index.php +++ b/index.php @@ -14,8 +14,8 @@ $notifNotifNum = 5; - - + + diff --git a/manager/database.php b/manager/database.php index 055d999..52728ce 100755 --- a/manager/database.php +++ b/manager/database.php @@ -277,7 +277,14 @@ class DataBase{ /******************************************************************/ /*** retourne la liste des utilisateurs des groupes d'une année ***/ /******************************************************************/ - public function listeEtudiantsTousGroupesAnnee($annee){ + public function listeEtudiantsTousGroupesAnnee($annee, $pSemestre, $pGroupe){ + // définition des paramètres optionnels + $semestreDeb = 1; $semestreFin = 4; + if( $pSemestre != null ){ $semestreDeb = $pSemestre; $semestreFin = $pSemestre; } // semestre donné uniquement (si param non null) + + $groupeOpt = '%'; + if( $pGroupe != null ){ $groupeOpt = $pGroupe; } // si le groupe est donné, on le définit + /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ $checkAnnee = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee"); $checkAnnee->execute(array( @@ -293,10 +300,14 @@ class DataBase{ "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 g.nom LIKE '".$groupeOpt."' ". + "AND s.rang BETWEEN :semestreDeb AND :semestreFin ". "AND s.annee = :annee ". "ORDER BY g.nom"); $getGroupesUID->execute(array( + ':semestreDeb' => $semestreDeb, + ':semestreFin' => $semestreFin, ':annee' => $annee )); @@ -321,7 +332,15 @@ class DataBase{ /******************************************************************/ /*** retourne la liste des utilisateurs des groupes d'une année ***/ /******************************************************************/ - public function listeEtudiantsTousGroupesEnseignant($annee, $enseignant){ + public function listeEtudiantsTousGroupesEnseignant($annee, $enseignant, $pSemestre, $pGroupe){ + // définition des paramètres optionnels + $semestreDeb = 1; $semestreFin = 4; + if( $pSemestre != null ){ $semestreDeb = $pSemestre; $semestreFin = $pSemestre; } // semestre donné uniquement (si param non null) + + $groupeOpt = '%'; + if( $pGroupe != null ){ $groupeOpt = $pGroupe; } // si le groupe est donné, on le définit + + /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ $checkAnnee = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee"); $checkAnnee->execute(array( @@ -345,7 +364,6 @@ class DataBase{ else return 'unknown_user'; - // on cherche tout les groupes du même semestre de la même année $getGroupesUID = $this->pdo->prepare("SELECT DISTINCT s.nom as semestre, s.rang, g.nom as nom ". "FROM module as m, utilisateur as u, utilisateur as eleve, groupe as g, enseignement as ens, mcc_ue, mcc_module as mcc_m, semestre as s, appartenance as app ". @@ -361,14 +379,18 @@ class DataBase{ "AND app.id_semestre = s.id_semestre ". "AND app.id_groupe = g.id_groupe ". + "AND g.nom LIKE '".$groupeOpt."' ". + "AND s.rang BETWEEN :semestreDeb AND :semestreFin ". "AND s.annee = :annee ". "AND u.identifiant = :enseignantUID ". "ORDER BY s.rang, g.nom"); $getGroupesUID->execute(array( + // ':groupeOpt' => $groupeOpt, + ':semestreDeb' => $semestreDeb, + ':semestreFin' => $semestreFin, ':annee' => $annee, ':enseignantUID' => $enseignantUID )); - $grouplist = array(); // contiendra tout les groupes // on parcourt tous les groupes diff --git a/manager/groups.php b/manager/groups.php index 788aaf0..f949e52 100755 --- a/manager/groups.php +++ b/manager/groups.php @@ -124,9 +124,20 @@ require_once __ROOT__.'/manager/database.php'; $anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format $enseignantCheck = $anneeCheck && preg_match('/^[\w -]{3,50}$/i', $request->enseignant); // enseignant (annee) bon format + // paramètres optionnels + $optionalSemestre = isset($request->semestre) && is_numeric($request->semestre) && preg_match('/^[1-4]{1}$/i', $request->semestre); + $optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); + + // définition (ou pas) des paramètres optionnels + if( $optionalSemestre ) $semestre = $request->semestre; + else $semestre = null; + + if( $optionalGroupe ) $groupe = $request->groupe; + else $groupe = null; + if( $enseignantCheck ){ - $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesEnseignant($request->annee, $request->enseignant); + $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesEnseignant($request->annee, $request->enseignant, $semestre, $groupe); if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs $answer->grouplist = $grouplist; @@ -146,9 +157,23 @@ require_once __ROOT__.'/manager/database.php'; $typeOkParam = $areSetParam && is_numeric($request->annee); // si c'est des strings $anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format + + // paramètres optionnels + $optionalSemestre = isset($request->semestre) && is_numeric($request->semestre) && preg_match('/^[1-4]{1}$/i', $request->semestre); + $optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); + + // définition (ou pas) des paramètres optionnels + if( $optionalSemestre ) $semestre = $request->semestre; + else $semestre = null; + + if( $optionalGroupe ) $groupe = $request->groupe; + else $groupe = null; + + + if( $anneeCheck ){ - $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee); + $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, $semestre, $groupe); if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs $answer->grouplist = $grouplist; diff --git a/page/career.php b/page/career.php index 7235b4e..feb5918 100755 --- a/page/career.php +++ b/page/career.php @@ -19,6 +19,9 @@ require_once __ROOT__.'/manager/career.php'; ?> + + + $v) + array_push($postVars, $k); + + + + /* GESTION SEMESTRE OPTIONNEL */ + if( isset($postVars[1]) && is_numeric($postVars[1]) ) + $semestreOpt = $postVars[1]; + else + $semestreOpt = null; + + echo 'semestre '.$semestreOpt; + + /* GESTION GROUPES OPTIONNEL */ + if( isset($postVars[2]) && is_string($postVars[2]) && strlen($postVars[2]) > 1 ) + $groupeOpt = $postVars[2]; + else + $groupeOpt = null; + + echo 'groupe '.$groupeOpt; + + /************************/ /*** TOUS LES GROUPES ***/ /************************/ diff --git a/page/home.php b/page/home.php index 4c03378..5731758 100755 --- a/page/home.php +++ b/page/home.php @@ -42,18 +42,4 @@ if( $_SESSION['identifiant'] != null ){ // si on est connecté ?>

Notification 2

Notification 1

- - - - -
-

Vous pouvez consulter votre groupe ainsi que tous les groupes de votre semestre.

-
- -
-

Vous pouvez consulter votre parcours complet, c'est à dire toutes les notes que vous avez eu dans chaque module. avec un affichage par UE, ou par semestre, afin de consulter votre évolution.

-
- -
- Paramètres -
+ \ No newline at end of file diff --git a/test.php b/test.php index e573efa..57cc5f9 100755 --- a/test.php +++ b/test.php @@ -140,6 +140,45 @@ require_once __ROOT__.'/manager/security.php'; + // /*** AFFICHER LE GROUPE D'UN ENSEIGNANT ***/ + + // require __ROOT__.'/manager/groups.php'; + + // $request = new stdClass(); + // $answer = new stdClass(); + + // $request->level_1 = 'grouplistForTeacher'; + // $request->enseignant = 'lbh1609a'; // utilisateur.identifiant + // // $request->semestre = '3'; // groupe.nom + // $request->annee = '2015'; // groupe.nom + // // $request->groupe = 'S1A'; + + // groups_switch_level_1($request, $answer); + + // var_dump( $answer ); + + // echo "






It works !"; + + + + /*** AFFICHER LES GROUPES D'UNE ANNEE ***/ + + require __ROOT__.'/manager/groups.php'; + + $request = new stdClass(); + $answer = new stdClass(); + + $request->level_1 = 'grouplistForYear'; + $request->semestre = '3'; // groupe.nom // OPTIONNEL + $request->annee = '2015'; // annee + // $request->groupe = 'S3A'; // OPTIONNEL + + groups_switch_level_1($request, $answer); + + var_dump( $answer ); + + echo "






It works !"; + @@ -218,7 +257,6 @@ require_once __ROOT__.'/manager/security.php'; - phpinfo(); diff --git a/xdoc/structure.sql b/xdoc/structure.sql index bb6bdc7..6a0cd84 100755 --- a/xdoc/structure.sql +++ b/xdoc/structure.sql @@ -353,14 +353,15 @@ CREATE TABLE IF NOT EXISTS `note` ( `id_note` int(11) NOT NULL AUTO_INCREMENT, `id_appartenance` int(11) NOT NULL, `id_mcc_module` int(11) NOT NULL, - `intitule` int(11) NOT NULL, + `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `intitule` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `valeur` float NOT NULL, `base` float NOT NULL, `coefficient` float NOT NULL, PRIMARY KEY (`id_note`), KEY `id_appartenance` (`id_appartenance`), KEY `id_mcc_module` (`id_mcc_module`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ; -- -- RELATIONS POUR LA TABLE `note`: