Modification empty.sql + import_multiple etape 1

This commit is contained in:
xdrm-brackets 2015-11-22 16:34:07 +01:00
parent 1272d1a4cd
commit c760d3201b
8 changed files with 159 additions and 111 deletions

2
API.js
View File

@ -51,7 +51,7 @@ APIClass.prototype = {
if( ptrAPI.xhr[i].readyState == 4 ){ // si la requête est terminée
/* DEBUG : affiche la réponse BRUTE de API.php */
// console.log('API.php => '+ptrAPI.xhr[i].responseText);
console.log('API.php => '+ptrAPI.xhr[i].responseText);
console.log( JSON.parse(ptrAPI.xhr[i].responseText) );
/* si success de requête */

View File

@ -178,15 +178,14 @@ require_once __ROOT__.'/manager/database.php';
/****************************************************/
/* saisie d'une note pour un groupe à un contrôle */
/****************************************************/
case 'saisieNoteGroupe': if( permission('teacher') ){
case 'saisieNoteMultiple': if( permission('teacher') ){
$areSetParam = isset($request->etudiant) && isset($request->controle) && isset($request->note); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->etudiant); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && is_numeric($request->controle) && is_numeric($request->note); // des bon types
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // nom bon format
$areSetParam = isset($request->notes); // les arguments existent
$typeOkParam = $areSetParam && is_array($request->notes); // si c'est des strings
$nEmptyParam = $typeOkParam && count($request->notes) > 1; // des bon types
if( $etudiantCheck ){ // si tout les paramètres sont bons
$answer->request = DataBase::getInstance()->saisieNoteGroupe($request->etudiant, $request->controle, $request->note);
if( $nEmptyParam ){ // si tout les paramètres sont bons
$answer->request = DataBase::getInstance()->saisieNoteMultiple($request->notes);
}else
$answer->request = 'param_error';

View File

@ -160,7 +160,7 @@ class DataBase{
public static function creerSemestre($codeFormation, $nomFormation, $nomSemestre, $rangSemestre, $annee){
// si on a tout créé ou que tout existe "creer" retourne l'UID du semestre,
// si on a un boolean c'est FALSE => erreur
//
if( !is_bool(semestreRepo::creer($codeFormation, $nomFormation, $nomSemestre, $rangSemestre, $annee)) )
return true;
else
@ -704,6 +704,40 @@ class DataBase{
}
/******************************/
/*** saisie notes multiples ***/
/******************************/
public function saisieNoteMultiple($notes){
if( !($controleInfo=controleRepo::info($notes[0]->controle)) ) return 'unknown_controle';
foreach($notes as $iter=>$note){
var_dump($note);
// on vérifie l'existence de l'étudiant et du contrôle, ainsi que la cohérence de la note (pas supérieure à la base)
if( !($etudiantUID=userRepo::UID($note->etudiant)) ) return 'unknown_user';
if( $note->controle != $controleInfo['id'] ) return 'unknown_controle';
$notes[$iter]->semestre = $controleInfo['id_semestre'];
// si la note > base du contrôle, on supprime la note
if( $note->note > $controleInfo['base'] ) return 'unknown_note';
unset( $notes[$iter] );
}
var_dump( $notes );
// saisie multiple des notes
$rep = noteRepo::creerMultiple($controleUID, $notes);
if( $rep )
return 'success';
else
return 'error';
}
}
?>

View File

@ -1,44 +0,0 @@
<?php
// GESTION DU FICHIER LOG
// / ! \ ACCÉS AU FICHIER LOG UNIQUEMENT POUR L'ADMIN / ! \
// ====================== IDÉE DE FONCTIONNEMENT ======================
// Ajout d'une écriture log pour les cas suivants : [ M O D U L A B L E]
// - Ajout d'un étudiant
// - Ajout d'une note
// - Modification d'une note
// - Modification d'un coefficient
// - Changement de groupe d'un élève
// - Création d'un utilisateur
// [/ M O D U L A B L E]
//
// FORMAT : [ DATE ] : [ UTILISATEUR ] : [ ACTION ]
// =====================================================================
function ecrire_log($request, $answer) {
$fichier = fopen('sys.log', 'a+');
if($fichier) {
fputs($monfichier,'[ '.date("d/m/Y G:m").' ]'.' '.'[ '.$request->utilisateur.' ]'.' '.'[ '.$request->action.' ]');
fclose($monfichier);
$answer->request = 'succes';
}
else {
$answer->request = 'echec_ouverture_fichier';
}
}
?>

View File

@ -264,4 +264,56 @@ class noteRepo extends DBAccess{
}
/* CRÉATION/MODIFICATION DE NOTES MULTIPLE
*
* @notes<Array>
* @etudiant<String> l'UID de l'étudiant en question
* @controle<int> l'UID du contrôle en question
* @semestre<int> l'UID du semestre en question
* @valeur<number> valeur de la note à saisir
*
*
* @return noteUID<int> l'UID de la note si elle a bien été créé
* @return cree<Boolean> FALSE si la note n'a pas été créé
*
*/
public static function creerMultiple($etudiant, $controle, $semestre, $valeur){
/* [1] Premier cas : il faut créer la note de cet étudiant pour ce contrôle
============================================================================*/
if( !($noteUID=noteRepo::UID($etudiant, $controle)) ){
$creationNote = DataBase::getPDO()->prepare("INSERT INTO note(id_note, id_appartenance, id_controle, valeur)
VALUES(
DEFAULT,
(SELECT id_appartenance FROM appartenance WHERE id_etudiant = :etudiant AND id_semestre = :semestre),
:controle,
:valeur
)");
$creationNote->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre, ':controle' => $controle, ':valeur' => $valeur ));
/* [2] Second cas : il faut modifier la note de cet étudiant
============================================================================*/
}else{
$modificationNote = DataBase::getPDO()->prepare("UPDATE note SET valeur = :valeur WHERE id_note = :noteUID");
$modificationNote->execute(array( ':valeur' => $valeur, ':noteUID' => $noteUID ));
}
/* [3] On vérifie que la note a bien été créé pour cet étudiant et ce contrôle
=================================================================================*/
if( !($noteUID=noteRepo::UID($etudiant, $controle)) ) return false;
/* [4] On vérifie que la note créée a bien la valeur qu'on a attribuée
=================================================================================*/
$verificationValeur = DataBase::getPDO()->prepare("SELECT valeur FROM note WHERE id_note = :noteUID");
$verificationValeur->execute(array( ':noteUID' => $noteUID ));
return ( $verificationValeur->fetch()['valeur'] == $valeur );
}
}

View File

View File

@ -191,41 +191,46 @@ if( document.querySelector('#CONTAINER section[name=controlesenseignants]') != n
}, false);
// on créé l'évènement de confirmation de la saisie de TOUTES les notes saisies ou modifiées
toutEnregistrerBtn.addEventListener('click', function(e){
addClass( toutEnregistrerBtn, 'loading' );
var nbRequest = 0;
var nbSuccess = 0;
// on sélectionne toutes les valeurs contenues dans les lignes actives
for( var i = 0 ; i < saisieObj.length ; i++ ){ if( /active/.test(saisieObj[i].inputEl.className) ){
nbRequest += 1;
var request = { // on définit la requête pour API
level_0: 'career',
level_1: 'saisieNote',
etudiant: saisieObj[i].userid,
controle: saisieObj[i].ctrlid,
note: saisieObj[i].inputEl.value.replace(',', '.'), // par précaution, on replace les virgules par des points pour le php (is_numeric)
};
API.send(request, function(response){ // on gère la réponse de API
if( response.request == 'success' ) nbSuccess += 1; // si on a une réponse positive, on incrémente le nombre de succès
// si tout est validé, on recharge la page
if( nbSuccess == nbRequest) reload();
});
}}
}, false);
}
// on créé l'évènement de confirmation de la saisie de TOUTES les notes saisies ou modifiées
toutEnregistrerBtn.addEventListener('click', function(e){
addClass( toutEnregistrerBtn, 'loading' );
var toutesNotes = [];
// on sélectionne toutes les valeurs contenues dans les lignes actives
for( var i = 0 ; i < saisieObj.length ; i++ ){ if( /active/.test(saisieObj[i].inputEl.className) ){
toutesNotes.push({
etudiant: saisieObj[i].userid,
controle: saisieObj[i].ctrlid,
note: saisieObj[i].inputEl.value.replace(',', '.') // par précaution, on replace les virgules par des points pour le php (is_numeric)
});
}}
var request = { // on définit la requête pour API
level_0: 'career',
level_1: 'saisieNoteMultiple',
notes: toutesNotes // on donne toutes les notes
};
API.send(request, function(response){ // on gère la réponse de API
if( response.request == 'success' ) // si on a une réponse positive, on incrémente le nombre de succès
reload();
});
}, false);
}

View File

@ -1,9 +1,9 @@
-- phpMyAdmin SQL Dump
-- phpMyAdmin SQL Dump
-- version 4.0.10deb1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Nov 20, 2015 at 05:08 PM
-- Generation Time: Nov 22, 2015 at 04:33 PM
-- Server version: 5.5.46-0ubuntu0.14.04.2
-- PHP Version: 5.5.9-1ubuntu4.14
@ -167,13 +167,14 @@ INSERT INTO `appartenance` (`id_appartenance`, `id_etudiant`, `id_groupe`, `id_s
CREATE TABLE IF NOT EXISTS `controle` (
`id_controle` int(11) NOT NULL AUTO_INCREMENT,
`id_mcc_module` int(11) NOT NULL,
`intitule` varchar(50) CHARACTER SET utf32 COLLATE utf32_unicode_ci 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,
`base` int(11) NOT NULL,
`coefficient` float NOT NULL,
`date_publication` date NOT NULL,
PRIMARY KEY (`id_controle`),
KEY `id_mcc_module` (`id_mcc_module`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=64 ;
--
-- RELATIONS FOR TABLE `controle`:
@ -195,7 +196,7 @@ CREATE TABLE IF NOT EXISTS `enseignement` (
PRIMARY KEY (`id_enseignement`),
KEY `id_enseignant` (`id_enseignant`),
KEY `id_mcc_module` (`id_mcc_module`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
--
-- RELATIONS FOR TABLE `enseignement`:
@ -214,10 +215,10 @@ CREATE TABLE IF NOT EXISTS `enseignement` (
CREATE TABLE IF NOT EXISTS `formation` (
`id_formation` int(11) NOT NULL AUTO_INCREMENT,
`code` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`nom` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`nom` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`nb_semestres` int(11) NOT NULL,
PRIMARY KEY (`id_formation`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=15 ;
--
-- Dumping data for table `formation`
@ -283,14 +284,14 @@ CREATE TABLE IF NOT EXISTS `mcc_module` (
PRIMARY KEY (`id_mcc_module`),
KEY `id_mcc_ue` (`id_mcc_ue`),
KEY `id_module` (`id_module`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=44 ;
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=40 ;
--
-- RELATIONS FOR TABLE `mcc_module`:
-- `id_module`
-- `module` -> `id_module`
-- `id_mcc_ue`
-- `mcc_ue` -> `id_mcc_ue`
-- `id_module`
-- `module` -> `id_module`
--
-- --------------------------------------------------------
@ -307,14 +308,14 @@ CREATE TABLE IF NOT EXISTS `mcc_ue` (
PRIMARY KEY (`id_mcc_ue`),
KEY `id_semestre` (`id_semestre`),
KEY `id_ue` (`id_ue`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=45458 ;
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
--
-- RELATIONS FOR TABLE `mcc_ue`:
-- `id_ue`
-- `ue` -> `id_ue`
-- `id_semestre`
-- `semestre` -> `id_semestre`
-- `id_ue`
-- `ue` -> `id_ue`
--
-- --------------------------------------------------------
@ -328,7 +329,7 @@ CREATE TABLE IF NOT EXISTS `module` (
`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_module`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2042 ;
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;
-- --------------------------------------------------------
@ -344,14 +345,14 @@ CREATE TABLE IF NOT EXISTS `note` (
PRIMARY KEY (`id_note`),
KEY `id_appartenance` (`id_appartenance`),
KEY `id_controle` (`id_controle`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
--
-- RELATIONS FOR TABLE `note`:
-- `id_controle`
-- `controle` -> `id_controle`
-- `id_appartenance`
-- `appartenance` -> `id_appartenance`
-- `id_controle`
-- `controle` -> `id_controle`
--
-- --------------------------------------------------------
@ -369,7 +370,7 @@ CREATE TABLE IF NOT EXISTS `semestre` (
PRIMARY KEY (`id_semestre`),
UNIQUE KEY `rang` (`rang`,`annee`),
KEY `id_formation` (`id_formation`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ;
--
-- RELATIONS FOR TABLE `semestre`:
@ -389,7 +390,8 @@ INSERT INTO `semestre` (`id_semestre`, `id_formation`, `nom`, `rang`, `annee`) V
(5, 1, 'S1', 1, 2016),
(6, 1, 'S2', 2, 2016),
(7, 2, 'S3', 3, 2016),
(8, 2, 'S4', 4, 2016);
(8, 2, 'S4', 4, 2016),
(15, 1, 'S1', 1, 2017);
-- --------------------------------------------------------
@ -402,7 +404,7 @@ CREATE TABLE IF NOT EXISTS `ue` (
`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`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=28 ;
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
-- --------------------------------------------------------
@ -561,22 +563,22 @@ ALTER TABLE `enseignement`
-- Constraints for table `mcc_module`
--
ALTER TABLE `mcc_module`
ADD CONSTRAINT `mcc_module_id_module` FOREIGN KEY (`id_module`) REFERENCES `module` (`id_module`) ON DELETE CASCADE,
ADD CONSTRAINT `mcc_module_id_mcc_ue` FOREIGN KEY (`id_mcc_ue`) REFERENCES `mcc_ue` (`id_mcc_ue`) ON DELETE CASCADE;
ADD CONSTRAINT `mcc_module_id_mcc_ue` FOREIGN KEY (`id_mcc_ue`) REFERENCES `mcc_ue` (`id_mcc_ue`) ON DELETE CASCADE,
ADD CONSTRAINT `mcc_module_id_module` FOREIGN KEY (`id_module`) REFERENCES `module` (`id_module`) ON DELETE CASCADE;
--
-- Constraints for table `mcc_ue`
--
ALTER TABLE `mcc_ue`
ADD CONSTRAINT `mcc_ue_id_ue` FOREIGN KEY (`id_ue`) REFERENCES `ue` (`id_ue`) ON DELETE CASCADE,
ADD CONSTRAINT `mcc_ue_id_semestre` FOREIGN KEY (`id_semestre`) REFERENCES `semestre` (`id_semestre`) ON DELETE CASCADE;
ADD CONSTRAINT `mcc_ue_id_semestre` FOREIGN KEY (`id_semestre`) REFERENCES `semestre` (`id_semestre`) ON DELETE CASCADE,
ADD CONSTRAINT `mcc_ue_id_ue` FOREIGN KEY (`id_ue`) REFERENCES `ue` (`id_ue`) ON DELETE CASCADE;
--
-- Constraints for table `note`
--
ALTER TABLE `note`
ADD CONSTRAINT `note_id_controle` FOREIGN KEY (`id_controle`) REFERENCES `controle` (`id_controle`) ON DELETE CASCADE,
ADD CONSTRAINT `note_id_appartenance` FOREIGN KEY (`id_appartenance`) REFERENCES `appartenance` (`id_appartenance`) ON DELETE CASCADE;
ADD CONSTRAINT `note_id_appartenance` FOREIGN KEY (`id_appartenance`) REFERENCES `appartenance` (`id_appartenance`) ON DELETE CASCADE,
ADD CONSTRAINT `note_id_controle` FOREIGN KEY (`id_controle`) REFERENCES `controle` (`id_controle`) ON DELETE CASCADE;
--
-- Constraints for table `semestre`