reset fichiers git 2

master
Mehdi 5 years ago
parent 08da6d2ddd
commit 9786beb662

@ -0,0 +1,269 @@
<?php
/**
* Description of OracleDb
*
* @author Mehdi
*/
class OracleDb {
private $conn;
function __construct() {
//$this->conn = oci_connect('u_prems', '123456', 'localhost/orcl');
$this->conn = oci_connect('meelaichao', 'meelaichao', 'kirov:1521/kirov');
$this->createRandomTables();
}
function createRandomTables() {
$this->createRandomStats();
$this->createRandomJoueur();
$this->createRandomEquipe();
$this->createRandomGame();
}
function createRandomStats(){
//Creation de la table
$drop = oci_parse($this->conn, 'DROP TABLE randomstats');
oci_execute($drop);
$q = oci_parse($this->conn, 'CREATE TABLE randomstats AS SELECT * FROM stats WHERE 1=0');
oci_execute($q);
//Insertion Stats
$tabStats = oci_parse($this->conn, 'SELECT * FROM stats');
oci_execute($tabStats);
$tabDate = array();
$tabType = array();
$tabEquipeJoueur = array();
$tabLocation = array();
$tabResultat = array();
$tabPrenom = array();
$tabStatus = array();
$tabMinutes = array();
$tabNaissance = array();
$tabPoints = array();
$tabPasses = array();
$tabBallesPerdues = array();
$tabInterceptions = array();
$tabContres = array();
$tabFautes = array();
$tabTirsPris = array();
$tabTirsMarques = array();
$tabTirsPourcent = array();
$tabTirs2Pris = array();
$tabTirs2Marques = array();
$tabTirs2Pourcent = array();
$tabTirs3Pris = array();
$tabTirs3Marques = array();
$tabTirs3Pourcent = array();
$tabLfPris = array();
$tabLfMarques = array();
$tabLfPourcent = array();
$tabRebondDef = array();
$tabRebondOff = array();
$tabRebondTotal = array();
$tabEquipeAdverse = array();
while ($statsArray = oci_fetch_array($tabStats, OCI_NUM)) {
$tabDate[] = $statsArray[0];
$tabType[] = $statsArray[1];
$tabEquipeJoueur[] = $statsArray[2];
$tabLocation[] = $statsArray[3];
$tabResultat[] = $statsArray[4];
$tabPrenom[] = $statsArray[5];
$tabStatus[] = $statsArray[6];
$tabMinutes[] = $statsArray[7];
$tabNaissance[] = $statsArray[8];
$tabPoints[] = $statsArray[9];
$tabPasses[] = $statsArray[10];
$tabBallesPerdues[] = $statsArray[11];
$tabInterceptions[] = $statsArray[12];
$tabContres[] = $statsArray[13];
$tabFautes[] = $statsArray[14];
$tabTirsPris[] = $statsArray[15];
$tabTirsMarques[] = $statsArray[16];
$tabTirsPourcent[] = $statsArray[17];
$tabTirs2Pris[] = $statsArray[18];
$tabTirs2Marques[] = $statsArray[19];
$tabTirs2Pourcent[] = $statsArray[20];
$tabTirs3Pris[] = $statsArray[21];
$tabTirs3Marques[] = $statsArray[22];
$tabTirs3Pourcent[] = $statsArray[23];
$tabLfPris[] = $statsArray[24];
$tabLfMarques[] = $statsArray[25];
$tabLfPourcent[] = $statsArray[26];
$tabRebondDef[] = $statsArray[27];
$tabRebondOff[] = $statsArray[28];
$tabRebondTotal[] = $statsArray[29];
$tabEquipeAdverse[] = $statsArray[30];
}
shuffle($tabDate);
shuffle($tabType);
shuffle($tabEquipeJoueur);
shuffle($tabLocation);
shuffle($tabResultat);
shuffle($tabPrenom);
shuffle($tabStatus);
shuffle($tabMinutes);
shuffle($tabNaissance);
shuffle($tabPoints);
shuffle($tabPasses);
shuffle($tabBallesPerdues);
shuffle($tabInterceptions);
shuffle($tabContres);
shuffle($tabFautes);
shuffle($tabTirsPris);
shuffle($tabTirsMarques);
shuffle($tabTirsPourcent);
shuffle($tabTirs2Pris);
shuffle($tabTirs2Marques);
shuffle($tabTirs2Pourcent);
shuffle($tabTirs3Pris);
shuffle($tabTirs3Marques);
shuffle($tabTirs3Pourcent);
shuffle($tabLfPris);
shuffle($tabLfMarques);
shuffle($tabLfPourcent);
shuffle($tabRebondDef);
shuffle($tabRebondOff);
shuffle($tabRebondTotal);
shuffle($tabEquipeAdverse);
for ($i = 0; $i < sizeof($tabDate); $i++) {
$insert = oci_parse($this->conn, 'INSERT INTO randomstats VALUES(\'' . $tabDate[$i] . ' \' , \''.$tabType[$i].'\' ,\'' . $tabEquipeJoueur[$i] . '\' , \'' . $tabLocation[$i] . '\' , \'' . $tabResultat[$i] . '\' , \'' . $tabPrenom[$i] . '\' , \'' . $tabStatus[$i] . '\' ,' . $tabMinutes[$i] . ' , \'' . $tabNaissance[$i] . ' \' ,'.$tabPoints[$i] . ' ,'.$tabPasses[$i] . ' ,'.$tabBallesPerdues[$i] . ' ,'.$tabInterceptions[$i] . ' ,'.$tabContres[$i] . ' ,'.$tabFautes[$i] . ' ,'.$tabTirsPris[$i] . ' ,'.$tabTirsMarques[$i] . ' ,'.$tabTirsPourcent[$i] . ' ,'.$tabTirs2Pris[$i] . ' ,'.$tabTirs2Marques[$i] . ' ,'.$tabTirs2Pourcent[$i] . ' ,'.$tabTirs3Pris[$i] . ' ,'.$tabTirs3Marques[$i] . ' ,'.$tabTirs3Pourcent[$i] . ' ,'.$tabLfPris[$i] . ' ,'.$tabLfMarques[$i] . ' ,'.$tabLfPourcent[$i] . ' ,'.$tabRebondDef[$i] . ' ,'.$tabRebondOff[$i] . ' ,'.$tabRebondTotal[$i] . ' , \'' . $tabEquipeAdverse[$i] . '\' ) ');
oci_execute($insert);
}
}
function createRandomJoueur(){
//Creation de la table
$drop = oci_parse($this->conn, 'DROP TABLE randomjoueur');
oci_execute($drop);
$q = oci_parse($this->conn, 'CREATE TABLE randomjoueur AS SELECT * FROM joueur WHERE 1=0');
oci_execute($q);
//Insertion Joueur
$tabJoueur = oci_parse($this->conn, 'SELECT * FROM joueur');
oci_execute($tabJoueur);
$tabPrenomnomj = array();
$tabAnneedebut = array();
$tabAnneefin = array();
$tabPoste = array();
$tabTaille = array();
$tabPoids = array();
$tabDateNaissanceJ = array();
while ($joueurArray = oci_fetch_array($tabJoueur, OCI_NUM)) {
$tabPrenomnomj[] = $joueurArray[0];
$tabAnneedebut[] = $joueurArray[1];
$tabAnneefin[] = $joueurArray[2];
$tabPoste[] = $joueurArray[3];
$tabTaille[] = $joueurArray[4];
$tabPoids[] = $joueurArray[5];
$tabDateNaissanceJ[] = $joueurArray[6];
}
shuffle($tabPrenomnomj);
shuffle($tabAnneedebut);
shuffle($tabAnneefin);
shuffle($tabPoste);
shuffle($tabTaille);
shuffle($tabPoids);
shuffle($tabDateNaissanceJ);
for ($i = 0; $i < sizeof($tabPrenomnomj); $i++) {
$insert = oci_parse($this->conn, 'INSERT INTO randomJoueur VALUES(\'' . $tabPrenomnomj[$i] . ' \' ,' . $tabAnneedebut[$i] . ' ,'.$tabAnneefin[$i] . ' , \'' . $tabPoste[$i] . '\', '.$tabTaille[$i] . ','.$tabPoids[$i] . ',\'' . $tabDateNaissanceJ[$i] . '\' ) ');
oci_execute($insert);
}
}
function createRandomEquipe(){
//Creation de la table
$drop = oci_parse($this->conn, 'DROP TABLE randomequipe');
oci_execute($drop);
$q = oci_parse($this->conn, 'CREATE TABLE randomequipe AS SELECT * FROM equipe WHERE 1=0');
oci_execute($q);
//Insertion Joueur
$tabEquipe = oci_parse($this->conn, 'SELECT * FROM equipe');
oci_execute($tabEquipe);
$tabId = array();
$tabVille = array();
$tabNom = array();
$tabConference = array();
while ($equipeArray = oci_fetch_array($tabEquipe, OCI_NUM)) {
$tabId[] = $equipeArray[0];
$tabVille[] = $equipeArray[1];
$tabNom[] = $equipeArray[2];
$tabConference[] = $equipeArray[3];
}
shuffle($tabId);
shuffle($tabVille);
shuffle($tabNom);
shuffle($tabConference);
for ($i = 0; $i < sizeof($tabId); $i++) {
$insert = oci_parse($this->conn, 'INSERT INTO randomequipe VALUES(\'' . $tabId[$i] . '\' ,\'' . $tabVille[$i] . '\', \'' . $tabNom[$i] . '\', \'' . $tabConference[$i] . '\' ) ');
oci_execute($insert);
}
}
function createRandomGame(){
//Creation de la table
$drop = oci_parse($this->conn, 'DROP TABLE randomgame');
oci_execute($drop);
$q = oci_parse($this->conn, 'CREATE TABLE randomgame AS SELECT * FROM game WHERE 1=0');
oci_execute($q);
//Insertion Joueur
$tabGame = oci_parse($this->conn, 'SELECT * FROM game');
oci_execute($tabGame);
$tabDate = array();
$tabHoraire = array();
$tabIdDomicile = array();
$tabIdExterieur = array();
$tabResultatDomicile = array();
$tabResultatExterieur = array();
$tabScoreDomicile = array();
$tabScoreExterieur = array();
while ($gameArray = oci_fetch_array($tabGame, OCI_NUM)) {
$tabDate[] = $gameArray[0];
$tabHoraire[] = $gameArray[1];
$tabIdDomicile[] = $gameArray[2];
$tabResultatDomicile[] = $gameArray[3];
$tabScoreDomicile[] = $gameArray[4];
$tabIdExterieur[] = $gameArray[5];
$tabResultatExterieur[] = $gameArray[6];
$tabScoreExterieur[] = $gameArray[7];
}
shuffle($tabDate);
shuffle($tabHoraire);
shuffle($tabIdDomicile);
shuffle($tabResultatDomicile);
shuffle($tabScoreDomicile);
shuffle($tabIdExterieur);
shuffle($tabResultatExterieur);
shuffle($tabScoreExterieur);
for ($i = 0; $i < sizeof($tabDate); $i++) {
$insert = oci_parse($this->conn, 'INSERT INTO randomgame VALUES(\'' . $tabDate[$i] . '\' ,' . $tabHoraire[$i] . ', \'' . $tabIdDomicile[$i] . '\', \''.$tabResultatDomicile[$i].'\', \''.$tabScoreDomicile[$i].'\', \''.$tabIdExterieur[$i].'\', \''.$tabResultatExterieur[$i].'\',' .$tabScoreExterieur[$i].' ) ');
oci_execute($insert);
}
}
public function getConn(){
return $this->conn;
}
}

@ -0,0 +1,314 @@
<?php
//header('Content-type: text/plain');
require_once('OracleDb.php');
class SqliteDb extends SQLite3
{
private $conn;
function __construct($o = 'n')
{
$odb = new OracleDb();
$this->conn = $odb->getConn();
if($o == 'n')
$this->open('Traitement/test2.db');
else $this->open('test2.db');
/*$this->createLogin();
$this->createTable();
$this->createDemonstration();
$this->createQCM();*/
}
function createTable(){
//Création De La Table
$this->exec('DROP TABLE Correct');
$this->exec('CREATE TABLE Correct ( bddConcernee STRING,numTp NUMBER, numquestion NUMBER,question STRING, reponse STRING,points NUMBER,aleatoire CHAR)');
$this->exec('DROP TABLE FunctionCorrect');
$this->exec('CREATE TABLE FunctionCorrect (bddConcernee STRING,numTp NUMBER, numquestion NUMBER, question STRING, reponse STRING, fonctionCorrect STRING,testUser STRING, points NUMBER)');
$this->exec('DROP TABLE TriggerCorrect');
$this->exec('CREATE TABLE TriggerCorrect ( bddConcernee STRING,numTp NUMBER, numquestion NUMBER,question STRING, reponse STRING,fonctionCorrect STRING,testUser STRING)');
$this->exec('DROP TABLE Type');
$this->exec('CREATE TABLE Type ( numTp NUMBER,numQuestion NUMBER,type STRING)');
$this->exec("INSERT INTO Type VALUES(2,1,'query')");
$this->exec("INSERT INTO Type VALUES(2,2,'query')");
$this->exec("INSERT INTO Type VALUES(2,3,'query')");
$this->exec("INSERT INTO Type VALUES(2,4,'query')");
$this->exec("INSERT INTO Type VALUES(2,5,'functionCorrect')");
//Question 1
$type = 'query';
$points =1;
$reponse = 'SELECT count(*) FROM STATS WHERE prenomnoms=\'Kevin Durant\' ';
$q = "INSERT INTO Correct VALUES ('NBA',2,1,'Trouver le nombre de matchs joués par Kevin Durant', ? ,?,'o')";
$stmt = $this->prepare($q);
$stmt->bindParam(1,$reponse);
$stmt->bindParam(2,$points);
$stmt->execute();
//Question 2
$type = 'query';
$points =1;
$reponse = ' SELECT prenomnoms,datematch,points,equipeadverse FROM STATS WHERE points = (SELECT max(points) FROM STATS)';
$q = "INSERT INTO Correct VALUES ('NBA',2,2,'Lister le(s) joueur(s) ayant marqué le plus de points dans la saison en indiquant son nom, la date du match, le nombre de points, l équipe adverse et le nombre de points marqués ', ? ,?,'o')";
$stmt = $this->prepare($q);
$stmt->bindParam(1,$reponse);
$stmt->bindParam(2,$points);
$stmt->execute();
//Question 3
$type = 'query';
$points =1;
$reponse = ' SELECT prenomnoms, COUNT(*) FROM STATS GROUP BY prenomnoms HAVING count(*) = (SELECT MAX(c) FROM (SELECT COUNT(*) AS c FROM STATS GROUP BY prenomnoms))';
$q = "INSERT INTO Correct VALUES ('NBA',2,3,'Lister le(s) joueur(s) ayant joué le plus de match pendant la saison', ? ,?,'o')";
$stmt = $this->prepare($q);
$stmt->bindParam(1,$reponse);
$stmt->bindParam(2,$points);
$stmt->execute();
//Question 4
$type = 'query';
$points =1;
$reponse = 'SELECT nom FROM EQUIPE, STATS WHERE datematch = \'30-OCT-17\' AND prenomnoms = \'Kevin Durant\' AND idequipe = CASE WHEN locationjoueur = \'Away\' THEN equipeadverse WHEN locationjoueur = \'Home\' THEN equipejoueur END ';
$q = "INSERT INTO Correct VALUES ('NBA',2,4,'Déterminer pour Kevin Durant pour le match du 30-oct-17 quelle est l équipe qui joue à domicile', ?,?,'n' )";
$stmt = $this->prepare($q);
$stmt->bindParam(1,$reponse);
$stmt->bindParam(2,$points);
$stmt->execute();
//Question 5
$this->joueurEtDateRandom($joueurRandom, $dateRandom);
$type = 'fonction';
$fonctionCorrect = 'CREATE OR REPLACE FUNCTION fpointsmarques(date_match IN VARCHAR2, joueur IN VARCHAR2 ) RETURN NUMBER IS nbPoints NUMBER ; BEGIN SELECT points INTO nbPoints FROM STATS WHERE datematch = date_match AND prenomnoms=joueur; RETURN nbPoints; END;' ;
$reponse = 'SELECT fpointsmarques(\''.$dateRandom.'\', \''.$joueurRandom.'\') FROM DUAL';
$testU = 'SELECT pointsmarques(\''.$dateRandom.'\', \''.$joueurRandom.'\') FROM DUAL' ;
$points =1;
$q = "INSERT INTO FunctionCorrect VALUES ('NBA',2,5,'Ecrire une fonction pointsmarques qui détermine pour une date de match et un joueur donnés quelle est le nombre de points marqués par ce joueur', ?,?,?,? )";
$stmt = $this->prepare($q);
$stmt->bindParam(1,$reponse);
$stmt->bindParam(2,$fonctionCorrect);
$stmt->bindParam(3,$testU);
$stmt->bindParam(4,$points);
$stmt->execute();
/* //Question 9
$type = 'tablemodification';
$fonctionCorrect = 'IDJOUEUR';
$testU = null;
$testP = 'SELECT data_type FROM all_TAB_COLUMNS WHERE table_name = \'JOUEUR\' '; //pour vérifier l
$reponse = 'SELECT column_name FROM all_TAB_COLUMNS WHERE table_name = \'TEST\' ';
$q = "INSERT INTO Correct VALUES (6,'Modifier la table JOUEUR pour ajouter un champ idjoueur', ?,?,?,? )";
$stmt = $this->prepare($q);
$stmt->bindParam(1,$reponse);
$stmt->bindParam(2,$type);
$stmt->bindParam(3,$fonctionCorrect);
$stmt->bindParam(4,$testU);
//Question 10
$type = 'query';
$fonctionCorrect = null;
$testU = null;
$testP = null;
$reponse = 'SELECT id_joueur FROM STATS WHERE table_name = \'TEST\' ';
$q = "INSERT INTO Correct VALUES (7,'Modifier la table JOUEUR pour ajouter un champ idjoueur', ?,?,?,? )";
$stmt = $this->prepare($q);
$stmt->bindParam(1,$reponse);
$stmt->bindParam(2,$type);
$stmt->bindParam(3,$fonctionCorrect);
$stmt->bindParam(4,$testU);
$stmt->execute();*/
//QUESITION 1 TP2
$type='trigger';
$fonctionCorrect = 'CREATE OR REPLACE TRIGGER supprJ BEFORE DELETE ON joueur FOR EACH ROW DECLARE duser varchar2(30); ddate date; BEGIN SELECT user,sysdate INTO duser,ddate FROM DUAL; INSERT INTO TRACE VALUES(ddate, duser,\'Suppression de \' || :old.prenomnomj); END;' ;
//
}
function createDemonstration(){
$this->exec('DROP TABLE Demonstration');
$this->exec('CREATE TABLE Demonstration ( bddconcernee STRING ,chapitre NUMBER, numDemo NUMBER, description STRING,reponse STRING)');
$this->exec("INSERT INTO Demonstration VALUES('NBA',1,1,'Exemple de requête pour selectionner les 2 premières lignes de la table JOUEUR','SELECT * FROM JOUEUR WHERE rownum<3')");
$this->exec("INSERT INTO Demonstration VALUES('NBA',1,2,'Exemple de requête pour selectionner les 2 premières lignes de la table STATS','SELECT * FROM STATS WHERE rownum<3')");
}
function createQCM(){
$this->exec('DROP TABLE QcmQuestion');
$this->exec('CREATE TABLE QcmQuestion ( numQuestion NUMBER, question STRING)');
$this->exec('DROP TABLE QcmReponse');
$this->exec('CREATE TABLE QcmReponse ( numReponse NUMBER, reponse STRING, numQuestion NUMBER)');
$this->exec('DROP TABLE QcmCorrection');
$this->exec('CREATE TABLE QcmCorrection ( numQuestion NUMBER, numReponse NUMBER)');
//Question 1
$this->exec("INSERT INTO QcmQuestion VALUES(1,'Ceci est la question 1')");
$this->exec("INSERT INTO QcmReponse VALUES(1,'Ceci est la reponse 1 de la question 1(fausse)',1)");
$this->exec("INSERT INTO QcmReponse VALUES(2,'Ceci est la reponse 2 de la question 1(Vraie)',1)");
$this->exec("INSERT INTO QcmReponse VALUES(3,'Ceci est la reponse 3 de la question 1(fausse)',1)");
$this->exec("INSERT INTO QcmCorrection VALUES(1,2)");
//Question 2
$this->exec("INSERT INTO QcmQuestion VALUES(2,'Ceci est la question 2')");
$this->exec("INSERT INTO QcmReponse VALUES(1,'Ceci est la reponse 1 de la question 2(Vraie)',2)");
$this->exec("INSERT INTO QcmReponse VALUES(2,'Ceci est la reponse 2 de la question 2(fausse)',2)");
$this->exec("INSERT INTO QcmReponse VALUES(3,'Ceci est la reponse 3 de la question 2(fausse)',2)");
$this->exec("INSERT INTO QcmCorrection VALUES(2,1)");
}
function createLogin(){
$mdp = password_hash('mdptest', PASSWORD_DEFAULT);
$username = 'test';
$this->exec('DROP TABLE login');
$this->exec('CREATE TABLE login ( username STRING, password STRING)');
$stmt = $this->prepare("INSERT INTO login VALUES(? , ?)");
$stmt->bindParam(1, $username);
$stmt->bindParam(2, $mdp);
$stmt->execute();
}
function joueurEtDateRandom(&$nomRandom, &$dateRandom){
$listeJoueurQuery = oci_parse($this->conn, 'SELECT prenomnoms,datematch FROM STATS INTERSECT SELECT prenomnoms,datematch FROM randomstats ');
oci_execute($listeJoueurQuery);
$listeJoueurRows = oci_fetch_all($listeJoueurQuery, $listeJoueurArray);
//print_r($listeJoueurArray);
$rand_keys = array_rand($listeJoueurArray['PRENOMNOMS'], 1);
$nomRandom = $listeJoueurArray['PRENOMNOMS'][$rand_keys];
$dateRandom = $listeJoueurArray['DATEMATCH'][$rand_keys];
}
function joueurEtDateRandom2(&$nomRandom, &$dateRandom){
$listeJoueurQuery = oci_parse($this->conn, 'SELECT prenomnoms,datematch FROM STATS');
oci_execute($listeJoueurQuery);
$listeJoueurRows = oci_fetch_all($listeJoueurQuery, $listeJoueurArray);
//print_r($listeJoueurArray);
$rand_keys = array_rand($listeJoueurArray['PRENOMNOMS'], 1);
$nomRandom = $listeJoueurArray['PRENOMNOMS'][$rand_keys];
$dateRandom = $listeJoueurArray['DATEMATCH'][$rand_keys];
}
function ajouterRequete($contexte,$tp,$numQuestion,$consigne,$requete,$points){
if($this->verificationExistenceQuestion($tp, $numQuestion)) return false;
$qt = "INSERT INTO Type VALUES(?,?,'query')";
$prp=$this->prepare($qt);
$prp->bindParam(1, $tp);
$prp->bindParam(2, $numQuestion);
$prp->execute();
$q = "INSERT INTO Correct VALUES (?,?,?,?,? ,?,?)";
$stmt = $this->prepare($q);
$stmt->bindParam(1,$contexte);
$stmt->bindParam(2,$tp);
$stmt->bindParam(3,$numQuestion);
$stmt->bindParam(4,$consigne);
$stmt->bindParam(5,$requete);
$stmt->bindParam(6,$points);
$stmt->bindParam(7,$contexte);
$stmt->execute();
return true;
}
function ajouterFonction($contexte,$tp,$numQuestion,$consigne,$requete,$fonction,$requeteUser,$points){
if($this->verificationExistenceQuestion($tp, $numQuestion)) return false;
$qt = "INSERT INTO Type VALUES(?,?,'functionCorrect')";
$prp=$this->prepare($qt);
$prp->bindParam(1, $tp);
$prp->bindParam(2, $numQuestion);
$prp->execute();
$q = "INSERT INTO FunctionCorrect VALUES (?,?,?,?,?,?,? ,?)";
$stmt = $this->prepare($q);
$stmt->bindParam(1,$contexte);
$stmt->bindParam(2,$tp);
$stmt->bindParam(3,$numQuestion);
$stmt->bindParam(4,$consigne);
$stmt->bindParam(5,$requete);
$stmt->bindParam(6,$fonction);
$stmt->bindParam(7,$requeteUser);
$stmt->bindParam(8,$points);
$stmt->execute();
return true;
}
function verificationExistenceQuestion($tp,$numQuestion){
$q = "SELECT count(*) FROM Type WHERE numTp = ? AND numQuestion = ? ";
$prp=$this->prepare($q);
$prp->bindParam(1, $tp);
$prp->bindParam(2, $numQuestion);
$result = $prp->execute();
$row = $result->fetchArray();
if($row['count(*)'] == 0) return false;
return true;
}
function ajouterDemonstration($contexte,$chapitre,$num,$intitule,$requete){
if($this->verificationExistenceDemo($chapitre, $num)) return false;
$q = "INSERT INTO Demonstration VALUES (?,?,?,?,?)";
$stmt = $this->prepare($q);
$stmt->bindParam(1,$contexte);
$stmt->bindParam(2,$chapitre);
$stmt->bindParam(3,$num);
$stmt->bindParam(4,$intitule);
$stmt->bindParam(5,$requete);
$stmt->execute();
return true;
}
function verificationExistenceDemo($chapitre,$numDemo){
$q = "SELECT count(*) FROM Demonstration WHERE chapitre = ? AND numDemo = ? ";
$prp=$this->prepare($q);
$prp->bindParam(1, $chapitre);
$prp->bindParam(2, $numDemo);
$result = $prp->execute();
$row = $result->fetchArray();
if($row['count(*)'] == 0) return false;
return true;
}
function supprimerRequete($numQuestion,$numTp){
$qt = "DELETE FROM Type WHERE numTp=? AND numQuestion=? ";
$prp=$this->prepare($qt);
$prp->bindParam(1, $numTp);
$prp->bindParam(2, $numQuestion);
$prp->execute();
$qt = "DELETE FROM Correct WHERE numTp=? AND numQuestion=? ";
$prp=$this->prepare($qt);
$prp->bindParam(1, $numTp);
$prp->bindParam(2, $numQuestion);
$prp->execute();
}
function supprimerFonction($numQuestion,$numTp){
$qt = "DELETE FROM Type WHERE numTp=? AND numQuestion=? ";
$prp=$this->prepare($qt);
$prp->bindParam(1, $numTp);
$prp->bindParam(2, $numQuestion);
$prp->execute();
$qt = "DELETE FROM FunctionCorrect WHERE numTp=? AND numQuestion=? ";
$prp=$this->prepare($qt);
$prp->bindParam(1, $numTp);
$prp->bindParam(2, $numQuestion);
$prp->execute();
}
}

@ -0,0 +1,41 @@
<?php
//require_once ('Question.php');
class QCMGateway {
private $db;
function __construct(SqliteDb $db) {
$this->db=$db;
}
public function afficherQCM() {
$i = 0;
$query = 'SELECT * FROM QcmQuestion';
$query = $this->db->prepare($query);
$result = $query->execute();
$tabQuestions = array();
//$resultats = $this->db->query('SELECT found_rows()');
while($q = $result->fetchArray()){
$i= $i+1;
$reponseQuery = 'SELECT * FROM QcmReponse WHERE numQuestion=?';
$stmt = $this->db->prepare($reponseQuery);
$stmt->bindParam(1, $q['numQuestion']);
$reponseResult = $stmt->execute();
$i=0;
$tabReponses =array();
while ($r = $reponseResult->fetchArray()){
$i++;
$tabReponses[] = new ReponseQCM($r['numReponse'], $r['reponse'], $r['numQuestion']) ;
}
//die(print_r($i, true ));
$tabQuestions[] = new QCM($q['numQuestion'],$q['question'],$tabReponses);
}
//die(print_r($tabQuestions, true ));
return $tabQuestions;
}
}

@ -0,0 +1,36 @@
<?php
//require_once ('Question.php');
class QuestionsGateway {
private $db;
function __construct(SqliteDb $db) {
$this->db=$db;
}
public function afficherQuestions() {
$i = 0;
$query = 'SELECT numTp,numquestion,question,reponse FROM Correct UNION SELECT numTp,numquestion,question,reponse FROM FunctionCorrect';
$query = $this->db->prepare($query);
$result = $query->execute();
//$resultats = $this->db->query('SELECT found_rows()');
while($q = $result->fetchArray()){
$i= $i+1;
$tabQuestions[] = new Question($q['numTp'],$q['numquestion'],$q['question'],$q['reponse']);
}
return $tabQuestions;
}
public function afficherDemonstrations() {
$i = 0;
$query = 'SELECT * FROM Demonstration ORDER BY numDemo ASC';
$query = $this->db->prepare($query);
$result = $query->execute();
//$resultats = $this->db->query('SELECT found_rows()');
while($q = $result->fetchArray()){
$i= $i+1;
$tabDemo[] = new Question(1,$q['numDemo'],$q['description'],$q['reponse']);
}
return $tabDemo;
}
}

@ -0,0 +1,19 @@
<?php
class UserGateway {
private $db;
public function __construct(SqliteDb $sd) {
$this->db = $sd;
}
public function getPassword($identifiant){
$q = "SELECT password FROM login WHERE username= ";
$stmt = $this->db->prepare("SELECT * FROM login WHERE username= ?");
$stmt->bindParam(1, $identifiant);
$result = $stmt->execute();
$passArray = $result->fetcharray();
return $passArray['password'];
}
}

@ -0,0 +1,24 @@
<?php
session_start();
require_once('../BDD/SqliteDb.php');
require_once('../BDD/OracleDb.php');
header('Content-type: text/plain');
$db = new SqliteDb('o');
$n = new OracleDb();
//$conn = oci_connect('u_prems', '123456','localhost/orcl');
//$conn = oci_connect('meelaichao', 'meelaichao', 'kirov:1521/kirov');
$conn = $n->getConn();
$textbox = $_GET['textbox'];
$UserQuery = oci_parse($conn, $textbox);
$reponseUser = oci_execute($UserQuery);
$numLigne = 0;
while( ($oracleRow = oci_fetch_array($UserQuery, OCI_NUM))) {
$numLigne++;
echo '<strong> Ligne '.$numLigne.' : </strong>';
for($i=0 ; $i< sizeof($oracleRow) ; $i++){
echo $oracleRow[$i].' ; ';
}
echo '</br>';
}

@ -0,0 +1,41 @@
<?php
require_once('../BDD/SqliteDb.php');
require_once('../controleur/Controleur.php');
$db = new SqliteDb('o');
if (empty($_GET['chapitre']) || empty($_GET['bdd']) || empty($_GET['numDemo']) || empty($_GET['description']) || empty($_GET['reponse']) ) {
echo '<strong>ERREUR : Veuillez remplir tous les champs </strong>';
}
else if(!is_numeric($_GET['chapitre']))
echo '<strong>ERREUR : une valeur non numérique à été détectée dans le champ \'Chapitre n° :\' </strong>';
else if(!is_numeric($_GET['numDemo']))
echo '<strong>ERREUR : une valeur non numérique à été détectée dans le champ \'Numéro de démonstration :\' </strong>';
else {
if(isset($_GET['modif'])){
if ($_GET["type"] == 'fonction')
$db->supprimerFonction ($_GET['num'], $_GET['tp']);
else if ($_GET["type"] == 'requete')
$db->supprimerRequete($_GET['num'], $_GET['tp']);
}
$isAdd = $db->ajouterDemonstration($_GET['bdd'],$_GET['chapitre'],$_GET['numDemo'],$_GET['description'], $_GET['reponse']);
if(!$isAdd){
echo '<strong>ERREUR : la combinaison (numéro de chapitre, numéro de démonstration) existe déjà dans la bdd</strong>';
}
else echo '<strong>AJOUT Démonstration avec succès</strong>';
}
//require_once('index.php');
//header("Location: ../index.php");

@ -0,0 +1,71 @@
<?php
require_once('../BDD/SqliteDb.php');
require_once('../controleur/Controleur.php');
$db = new SqliteDb('o');
if (empty($_GET['tp']) || empty($_GET['bdd']) || empty($_GET['num']) || empty($_GET['consigne']) || empty($_GET['reponse']) || empty($_GET['points']) || empty($_GET['aleatoire']) || empty($_GET['type'])) {
echo '<strong>ERREUR : Veuillez remplir tous les champs </strong>';
}
else if(!is_numeric($_GET['tp']))
echo '<strong>ERREUR : une valeur non numérique à été détectée dans le champ \'Numéro de question :\' </strong>';
else if(!is_numeric($_GET['num']))
echo '<strong>ERREUR : une valeur non numérique à été détectée dans le champ \'TP n° :\' </strong>';
else {
if(isset($_GET['modif'])){
if ($_GET["type"] == 'fonction')
$db->supprimerFonction ($_GET['num'], $_GET['tp']);
else if ($_GET["type"] == 'requete')
$db->supprimerRequete($_GET['num'], $_GET['tp']);
}
if ($_GET["type"] == 'requete'){
$isAdd = $db->ajouterRequete($_GET['bdd'],$_GET['tp'],$_GET['num'],$_GET['consigne'], $_GET['reponse'],$_GET['points']);
if(!$isAdd){
echo '<strong>ERREUR : la combinaison (numéro de tp, numéro de question) existe déjà dans la bdd</strong>';
}
else echo '<strong>AJOUT Requete avec succès</strong>';
}
else if ($_GET["type"] == 'fonction'){
if(empty($_GET['fonction']))
echo 'ERREUR : Veuillez remplir tous les champs ';
else {
if(isset($_GET['modif'])){
$reponse = $_GET['reponse'];
$re = '/^\s*SELECT\s*([a-z0-9]*)/i';
preg_match($re, $reponse, $matches, PREG_OFFSET_CAPTURE);
$string = 'f'.$matches[1][0];
$freponse = str_replace($matches[1][0],$string, $reponse);
$fonction = $_GET['fonction'];
$re = '/^\s*CREATE OR REPLACE FUNCTION\s*([a-z0-9]*)/i';
preg_match($re, $fonction, $matches2, PREG_OFFSET_CAPTURE);
$string2 = 'f'.$matches2[1][0];
$ffonction = str_replace($matches2[1][0],$string2, $fonction);
}
else {
$freponse = $reponse;
$ffonction = $fonction;
}
$isAdd = $db->ajouterFonction($_GET['bdd'],$_GET['tp'],$_GET['num'],$_GET['consigne'], $freponse,$ffonction,$reponse,$_GET['points']);
if(!$isAdd){
echo '<strong>ERREUR : la combinaison (numéro de tp, numéro de question) existe déjà dans la bdd</strong>';
}
else echo '<strong>AJOUT Fonction avec succès</strong>';
}
}
}
//require_once('index.php');
//header("Location: ../index.php");

@ -0,0 +1,349 @@
<?php
ob_start();
session_start();
require_once('../BDD/SqliteDb.php');
require_once('../BDD/OracleDb.php');
header('Content-type: text/plain');
$db = new SqliteDb('o');
$n = new OracleDb();
//$conn = oci_connect('u_prems', '123456','localhost/orcl');
//$conn = oci_connect('meelaichao', 'meelaichao', 'kirov:1521/kirov');
$conn = $n->getConn();
$_SESSION['fi'] = array();
$cmpt = 0;
$numDemo = 0;
header("Cache-Control: no cache");
$textbox = $_GET['textbox'];
/*$numQuestion++;
$ic = "$numQuestion";*/
$numDemo = $_GET['numQuestion'];
$numChapitre = $_GET['numTp'];
$_SESSION['fi'][$numDemo] = $textbox;
$UserQuery = oci_parse($conn, $textbox);
$reponseUser = oci_execute($UserQuery);
$typeQuery = $db->prepare('SELECT type FROM Type WHERE numQuestion = ? AND numTp= ?');
$typeQuery->bindParam(1, $numDemo);
$typeQuery->bindParam(2, $numChapitre);
$resultType = $typeQuery->execute();
$typeRow = $resultType->fetchArray();
$err = 0;
$verif =0;
//si la question attend un SELECT
if($typeRow['type'] == 'query'){
// <editor-fold desc="vérification avec la vraie BDD">
$sqliteQuery = $db->prepare('SELECT reponse FROM Correct WHERE numquestion= ? AND numTp= ? ');
$sqliteQuery->bindParam(1, $numDemo);
$sqliteQuery->bindParam(2, $numChapitre);
$result = $sqliteQuery->execute();
$sqliteRow = $result->fetchArray();
$vraiReponse = oci_parse($conn, $sqliteRow['reponse']);
$enAttente = oci_execute($vraiReponse);
if(oci_num_rows($UserQuery) != oci_num_rows($vraiReponse)){
$err=-3;
}
while( ($oracleRow = oci_fetch_array($UserQuery, OCI_NUM)) && $err == 0 ){
$vraiReponseRow = oci_fetch_array($vraiReponse,OCI_NUM );
$verif = 1;
if(sizeof($oracleRow) == sizeof($vraiReponseRow)){
for($i=0 ; $i< sizeof($vraiReponseRow) ; $i++){
if($oracleRow[$i] != $vraiReponseRow[$i]){
$err = -1;
break;
}
}
}
else {
$err = -2;
break;
}
}
//echo nl2br("\n ------------test : ".$err." test2 : ".$verif."\n");
// </editor-fold>
$aleatoireQuery = $db->prepare('SELECT aleatoire FROM Correct WHERE numQuestion = ? AND numTp= ?');
$aleatoireQuery->bindParam(1, $numDemo);
$aleatoireQuery->bindParam(2, $numChapitre);
$resultAleatoire = $aleatoireQuery->execute();
$aleatoireRow = $resultAleatoire->fetchArray();
if($aleatoireRow['aleatoire'] == 'o'){
// <editor-fold desc="vérification avec bdd aléatoire">
$nv= $sqliteRow['reponse'];
$txt = $textbox;
if(strpos($sqliteRow['reponse'],"GAME")){
$nv = str_replace('GAME', ' randomgame ', $nv);
$txt = str_replace('GAME', 'randomgame', $txt);
}
if (strpos($sqliteRow['reponse'],"EQUIPE")){
$nv= str_replace('EQUIP', ' randomequipe ', $nv);
$txt = str_replace('EQUIPE', 'randomequipe', $txt);
}
if (strpos($sqliteRow['reponse'],"STATS")){
$nv= str_replace('STATS' , ' randomstats ', $nv);
$txt = str_replace('STATS', ' randomstats ', $txt);
}
if (strpos($sqliteRow['reponse'],"JOUEUR")) {
$nv = str_replace('JOUEUR', 'randomjoueur', $nv);
$txt = str_replace('JOUEUR', 'randomjoueur', $txt);
}
$UserQueryRandom = oci_parse($conn, $txt);
$reponseUser = oci_execute($UserQueryRandom);
$vraiReponseRandom = oci_parse($conn, $nv);
$enAttente = oci_execute($vraiReponseRandom);
if(oci_num_rows($UserQueryRandom) != oci_num_rows($vraiReponseRandom)){
$err=-3;
}
$verif = 0;
while( ($oracleRowRandom = oci_fetch_array($UserQueryRandom, OCI_NUM)) && $err == 0 ){
$vraiReponseRowRandom = oci_fetch_array($vraiReponseRandom,OCI_NUM );
$verif = 1;
if(sizeof($oracleRowRandom) == sizeof($vraiReponseRowRandom)){
for($i=0 ; $i< sizeof($vraiReponseRowRandom) ; $i++){
if($oracleRowRandom[$i] != $vraiReponseRowRandom[$i]){
$err = -1;
break;
}
}
}
else {
$err = -2;
break;
}
}
// </editor-fold>
//echo nl2br("\n ------------testerr : ".$err." test2verif : ".$verif."\n");
}
// <editor-fold desc="Résultat">
if($err == 0 && $verif==1){
echo "<strong>La réponse à la question " .$numDemo. " est JUSTE ! \n</strong>";
$cmpt++;
}
else echo "<strong>La réponse à la question " .$numDemo. " est FAUSSE ! \n</strong>";
//</editor-fold>
}
//si la question attend une modification
else if($typeRow['type'] == 'tablemodification'){
$sqliteQuery = $db->prepare('SELECT reponse FROM Correct WHERE numquestion= ? AND numTp= ? ');
$sqliteQuery->bindParam(1, $numDemo);
$sqliteQuery->bindParam(2, $numChapitre);
$result = $sqliteQuery->execute();
$sqliteRow = $result->fetchArray();
$vraiReponse = oci_parse($conn, $sqliteRow['reponse']);
$enAttente = oci_execute($vraiReponse);
$sqliteQuery = $db->prepare('SELECT fonctioncorrect FROM Correct WHERE numquestion= ? AND numTp= ?');
$sqliteQuery->bindParam(1, $numDemo);
$sqliteQuery->bindParam(2, $numChapitre);
$result = $sqliteQuery->execute();
$sqliteRow = $result->fetchArray();
$t = oci_fetch_all($vraiReponse, $vraiReponseRow);
print_r($vraiReponseRow);
$err = 1;
foreach ($vraiReponseRow as $v){
for($i = 0 ; $i < sizeof($v, OCI_NUM) ; $i++){
if($v[$i] == $sqliteRow[0]){
$err = 0;
}
}
}
if($err == 0 ){
echo "La réponse à la question " .$numDemo. " est JUSTE ! \n";
$cmpt++;
}
else echo "La réponse à la question " .$numDemo. " est FAUSSE ! \n";
}
//si la question attend un CREATE FUNCTION
else{
$fonctionQuery = $db->prepare('SELECT * FROM FunctionCorrect WHERE numquestion= ? AND numTp= ? ');
$fonctionQuery->bindParam(1, $numDemo);
$fonctionQuery->bindParam(2, $numChapitre);
$result = $fonctionQuery->execute();
$fonctionRow = $result->fetchArray();
$creationFonction = oci_parse($conn, $fonctionRow['fonctionCorrect']);
$creatF = oci_execute($creationFonction);
$testUser = oci_parse($conn, $fonctionRow['testUser']);
$testu = oci_execute($testUser);
$testF = oci_parse($conn, $fonctionRow['reponse']);
$testf = oci_execute($testF);
if(oci_num_rows($testUser) != oci_num_rows($testF)){
$err=-3;
}
while( ($reponseRow = oci_fetch_array($testUser,OCI_NUM)) && $err == 0){
$vraiReponseRow = oci_fetch_array($testF,OCI_NUM );
$verif=1;
if(sizeof($reponseRow) == sizeof($vraiReponseRow)){
for($i=0 ; $i< sizeof($vraiReponseRow) ; $i++){
//echo nl2br('reponse : '.$reponseRow[$i].'question : '.$vraiReponseRow[$i]);
if($reponseRow[$i] != $vraiReponseRow[$i]){
$err = -1;
break;
}
}
}
else {
$err = -2;
break;
}
}
// <editor-fold desc="vérification avec bdd aléatoire">
$nv = $fonctionRow['fonctionCorrect'];
$txt = $textbox;
if(strpos($fonctionRow['fonctionCorrect'],"GAME")){
$nv = str_replace('GAME', ' randomgame ', $nv);
$txt = str_replace('GAME', 'randomgame', $txt);
}
if (strpos($fonctionRow['fonctionCorrect'],"EQUIPE")){
$nv= str_replace('EQUIPE', ' randomequipe ', $nv);
$txt = str_replace('EQUIPE', 'randomequipe', $txt);
}
if (strpos($fonctionRow['fonctionCorrect'],"STATS")){
$nv= str_replace('STATS' , ' randomstats ', $nv);
$txt = str_replace('STATS', ' randomstats ', $txt);
}
if (strpos($fonctionRow['fonctionCorrect'],"JOUEUR")) {
$nv = str_replace('JOUEUR', 'randomjoueur', $nv);
$txt = str_replace('JOUEUR', 'randomjoueur', $txt);
}
$UserFonctionRandom = oci_parse($conn, $txt);
$reponseUserRandom = oci_execute($UserFonctionRandom);
//echo 'bbbb'.$txt;
$creationFonctionRandom = oci_parse($conn, $nv);
$creatFRandom = oci_execute($creationFonctionRandom);
//echo '154789'.$nv;
$testUserRandom = oci_parse($conn, $fonctionRow['testUser']);
$testuR = oci_execute($testUserRandom);
//echo 'aaa'.$fonctionRow['testUser'];
$testFR = oci_parse($conn, $fonctionRow['reponse']);
$testfR = oci_execute($testFR);
if(oci_num_rows($testUserRandom) != oci_num_rows($testFR)){
$err=-3;
}
$verif=0;
while( ($reponseRowRandom = oci_fetch_array($testUserRandom,OCI_NUM)) && $err == 0){
$vraiReponseRowRandom = oci_fetch_array($testFR,OCI_NUM );
$verif=1;
if(sizeof($reponseRowRandom) == sizeof($vraiReponseRowRandom)){
for($i=0 ; $i< sizeof($vraiReponseRowRandom)-1 ; $i++){
if($reponseRowRandom[$i] != $vraiReponseRowRandom[$i]){
$err = -1;
break;
}
}
}
else {
$err = -2;
break;
}
}
//echo '.....'.$verif;
// </editor-fold>
if($err == 0 && $verif==1 ){
echo "La réponse à la question " .$numDemo. " est JUSTE ! \n";
$cmpt++;
}
else echo "La réponse à la question " .$numDemo. " est FAUSSE ! \n";
}
// Eléments d'authentification LDAP
/*$ldaprdn = 'cn=web_bind,OU=DSI,dc=iut,dc=local'; // DN ou RDN LDAP
$ldappass = 'ldap'; // Mot de passe associé
// Connexion au serveur LDAP
$ldapconn = ldap_connect("ldap://192.168.105.5",389)
or die("Impossible de se connecter au serveur LDAP.");
if ($ldapconn) {
// Connexion au serveur LDAP
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
// Vérification de l'authentification
if ($ldapbind) {
// echo "Connexion LDAP réussie...";
} else {
// echo "Connexion LDAP échouée...";
}
}
$dn="OU=ITC,OU=uca,OU=etudiants,OU=utilisateurs,DC=iut,
DC=local";
$filter = "cn=".$_SERVER['REMOTE_USER'];
$sr = ldap_search($ldapconn, $dn, $filter);
/* echo 'Le résultat de la recherche est ' . $sr . '<br />';
echo 'Le nombre d\'entrées retournées est ' . ldap_count_entries($ldapconn,$sr)
. '<br />';
echo 'Lecture des entrées ...<br />';
echo 'Données pour ' . $info["count"] . ' entrées:<br />';
for ($i=0; $i<$info["count"]; $i++) {
echo 'dn est : ' . $info[$i]["dn"] . '<br />';
echo 'premiere entree cn : ' . $info[$i]["cn"][0] . '<br />';
echo 'premier date de naissance : ' . $info[$i]["postofficebox"][0] . '<br />';
}
$info = ldap_get_entries($ldapconn, $sr);
$_SESSION["sn"] = $info[0]["sn"][0];
$txt = 'Résultat de '.$info[0]["sn"][0] .' : '. $cmpt . '/' . $numQuestion;
echo $txt;
//file_put_contents('resultat.html', ob_get_contents());
$fic = fopen("result.txt", "w");
fwrite($fic, $txt);
fclose($fic);*/
?>

@ -0,0 +1,29 @@
<?php
session_start();
require_once('../BDD/SqliteDb.php');
require_once('../BDD/OracleDb.php');
$db = new SqliteDb('o');
$oracleDb = new OracleDb();
$conn = $oracleDb->getConn();
$query = $db->prepare('SELECT numReponse FROM QcmCorrection WHERE numQuestion=?');
$query->bindParam(1, $_GET['numQuestion']);
$result = $query->execute();
$numReponseRow = $result->fetchArray();
$reponseQuery = $db->prepare('SELECT reponse FROM QcmReponse WHERE numReponse=? AND numQuestion=?');
$reponseQuery->bindParam(1, $numReponseRow['numReponse']);
$reponseQuery->bindParam(2, $_GET['numQuestion']);
$reponseResult = $reponseQuery->execute();
$reponseRow = $reponseResult->fetchArray();
if($_GET['textbox'] == $reponseRow['reponse']){
echo 'Bonne réponse !';
}
else echo $reponseRow['reponse'].'Mauvaise Réponse.';

@ -0,0 +1,17 @@
<?php
session_start();
require_once('../BDD/SqliteDb.php');
require_once('../BDD/OracleDb.php');
header('Content-type: text/plain');
$db = new SqliteDb();
$n = new OracleDb();
//$conn = oci_connect('u_prems', '123456','localhost/orcl');
//$conn = oci_connect('meelaichao', 'meelaichao', 'kirov:1521/kirov');
$conn = $n->getConn();
$textbox = $_GET['textbox'];
$UserQuery = oci_parse($conn, $textbox);
$reponseUser = oci_execute($UserQuery);
echo 'Table créee';

@ -0,0 +1,130 @@
<link rel="stylesheet" href="css/VueAdmin.css">
<?php require_once('../BDD/SqliteDb.php');
require_once('../BDD/OracleDb.php');
$db = new SqliteDb('o');
$typeQuery = $db->prepare('SELECT type FROM Type WHERE numQuestion = ? AND numTp= ?');
$typeQuery->bindParam(1, $_GET['numQuestion']);
$typeQuery->bindParam(2, $_GET['numTp']);
$resultType = $typeQuery->execute();
$typeRow = $resultType->fetchArray();
if($typeRow['type']== 'query')
$stmt = $db->prepare('SELECT question,reponse,points FROM Correct WHERE numQuestion= ? AND numTp = ?');
else if($typeRow['type']== 'functionCorrect')
$stmt = $db->prepare('SELECT question,reponse,fonctionCorrect,points FROM FunctionCorrect WHERE numQuestion= ? AND numTp = ?');
$stmt->bindParam(1, $_GET['numQuestion']);
$stmt->bindParam(2, $_GET['numTp']);
$resultQuestion = $stmt->execute();
$questionRow = $resultQuestion->fetchArray();
?>
<form style="border:1px solid #ccc" method="GET" >
<div class="container">
<h1>Modifier une question</h1>
<hr>
<label><b>TP n° : </b></label>
<input type="text" placeholder="Numéro du TP" id="tp" value="<?php echo $_GET['numTp']; ?>" required>
<label><b>Numéro de question : </b></label>
<input type="text" placeholder="Saisir le numéro de question..." id="num" value="<?php echo $_GET['numQuestion']; ?>" required>
<label><b>Barème : </b></label>
<input type="text" placeholder="Barème..." id="points" value="<?php echo $questionRow['points']; ?>" required>
<label><b>Consigne : </b></label>
<input type="text" placeholder="Ecrire la consigne..." id="consigne" value="<?php echo $questionRow['question']; ?>" required>
<label><b>Réponse : </b></label>
<input type="text" placeholder="SELECT ..." id="reponse" value="<?php echo $questionRow['reponse']; ?>" required>
<label> <b>Choisir le type de la question : </b><br/>
<input type="radio" name="type" value="requete" style="margin-bottom:15px" <?php if($typeRow['type']== 'query') echo 'checked'; ?>> requête simple
<input type="radio" name="type" value="fonction" id="btn-fonction" style="margin-bottom:15px" <?php if($typeRow['type']== 'functionCorrect') echo 'checked'; ?>> fonction
</label><br/>
<div id='show-me' style='display:none'>
<label ><b>Fonction : </b></label>
<input type="text" placeholder="CREATE OR REPLACE FUNCTION ..." id="fonction" value="<?php if(isset($questionRow['fonctionCorrect'])) echo $questionRow['fonctionCorrect']; ?> " required>
</div>
<label><b>Verification avec BDD aléatoire? </b><br/>
<input type="radio" name="aleatoire" value="o" style="margin-bottom:15px" > oui
<input type="radio" name="aleatoire" value="n" style="margin-bottom:15px" checked> non
</label><br/>
<label><b>Base de données conçernée </b><br/>
<input type="radio" name="bdd" value="NBA" style="margin-bottom:15px" checked> NBA
</label>
<input type="hidden" id="modif" value="modif" >
<div class="clearfix">
<input type="button" value="Modifier" onclick="SubmitModifierQuestion()" />
</div>
</div>
</form>
<div id="erreur">
</div>
<input type="button" value="Afficher les Questions" onclick="AfficherQuestions()">
<script>
$(document).ready(function() {
$('input[type="radio"]').click(function() {
if($(this).attr('id') == 'btn-fonction') {
$('#show-me').show();
}
else {
$('#show-me').hide();
}
});
if ($("#btn-fonction").prop("checked")) {
$('#show-me').show();
}
});
function SubmitModifierQuestion() {
//document.write($('#demo'+numQuestion).val());
var tp = $('#tp').val() ;
var num = $('#num').val() ;
var points = $('#points').val() ;
var consigne = $('#consigne').val() ;
var reponse = $('#reponse').val() ;
var type = $("input[name='type']:checked").val();
var aleatoire= $("input[name='aleatoire']:checked").val();
var bdd = $("input[name='bdd']:checked").val();
var fonction = $('#fonction').val() ;
var modif = $('#modif').val();
$.get("Traitement/AjoutQuestion.php", { modif: modif, tp: tp,num: num,points: points,consigne: consigne,reponse: reponse,type: type,aleatoire: aleatoire,bdd: bdd, fonction : fonction},
function(data) {
$('#erreur').html(data);
//$('#demoForm')[0].reset();
});
}
function AfficherQuestions(){
location.reload();
}
</script>

@ -0,0 +1,112 @@
<?php
require_once('../BDD/SqliteDb.php');
$db = new SqliteDb('o');
$numDemo = $_GET['numQuestion'];
$numChapitre = $_GET['numTp'];
$numDemoPrec = $numDemo-1;
$test = 999;
$Correct = 'Correct';
$function = 'functionCorrect';
if($numDemo!=1){
$typeQuery = $db->prepare('SELECT type FROM Type WHERE numQuestion = ? AND numTp= ?');
$typeQuery->bindParam(1, $numDemo);
$typeQuery->bindParam(2, $numChapitre);
$resultType = $typeQuery->execute();
$typeRow = $resultType->fetchArray();
$typeQuery = $db->prepare('SELECT type FROM Type WHERE numQuestion = ? AND numTp= ?');
$typeQuery->bindParam(1, $numDemoPrec);
$typeQuery->bindParam(2, $numChapitre);
$resultType = $typeQuery->execute();
$type2Row = $resultType->fetchArray();
//----------
if($typeRow['type'] == 'query'){
$table = 'Correct';
$type = 'query';
}
else{
$table = 'FunctionCorrect';
$type = 'functionCorrect';
}
$sqliteQuery = $db->prepare('UPDATE '.$table.' SET numQuestion=? WHERE numQuestion=? AND numTp=?');
$sqliteQuery->bindParam(1, $test);
$sqliteQuery->bindParam(2, $numDemo);
$sqliteQuery->bindParam(3, $numChapitre);
$result = $sqliteQuery->execute();
//---------
if($type2Row['type'] == 'query'){
$table2 = 'Correct';
$type2 = 'query';
}
else{
$table2 = 'FunctionCorrect';
$type2 = 'functionCorrect';
}
$sqliteQuery = $db->prepare('UPDATE '.$table2.' SET numQuestion=? WHERE numQuestion=? AND numTp=?');
$sqliteQuery->bindParam(1, $numDemo);
$sqliteQuery->bindParam(2, $numDemoPrec);
$sqliteQuery->bindParam(3, $numChapitre);
$resulti = $sqliteQuery->execute();
$sqliteQuery = $db->prepare('UPDATE Type SET type=? WHERE numQuestion=? AND numTp=?');
$sqliteQuery->bindParam(1, $type2);
$sqliteQuery->bindParam(2, $numDemo);
$sqliteQuery->bindParam(3, $numChapitre);
$resulti = $sqliteQuery->execute();
//---------
$sqliteQuery = $db->prepare('UPDATE '.$table.' SET numQuestion=? WHERE numQuestion=? AND numTp=?');
$sqliteQuery->bindParam(1, $numDemoPrec);
$sqliteQuery->bindParam(2, $test);
$sqliteQuery->bindParam(3, $numChapitre);
$resultp = $sqliteQuery->execute();
$sqliteQuery = $db->prepare('UPDATE Type SET type=? WHERE numQuestion=? AND numTp=?');
$sqliteQuery->bindParam(1, $type);
$sqliteQuery->bindParam(2, $numDemoPrec);
$sqliteQuery->bindParam(3, $numChapitre);
$resulti = $sqliteQuery->execute();
////---------------------------------------------------------
/*$sqliteQuery = $db->prepare('UPDATE Type SET numQuestion=? WHERE numQuestion=? AND numTp=?');
$sqliteQuery->bindParam(1, $test);
$sqliteQuery->bindParam(2, $numQuestion);
$sqliteQuery->bindParam(3, $numTp);
$result = $sqliteQuery->execute();
$sqliteQuery = $db->prepare('UPDATE Type SET numQuestion=? WHERE numQuestion=? AND numTp=?');
$sqliteQuery->bindParam(1, $numQuestion);
$sqliteQuery->bindParam(2, $numQuestionPrec);
$sqliteQuery->bindParam(3, $numTp);
$resulti = $sqliteQuery->execute();
$sqliteQuery = $db->prepare('UPDATE Type SET numQuestion=? WHERE numQuestion=? AND numTp=?');
$sqliteQuery->bindParam(1, $numQuestionPrec);
$sqliteQuery->bindParam(2, $test);
$sqliteQuery->bindParam(3, $numTp);
$resultp = $sqliteQuery->execute();*/
}
//header("Location: index.php");

@ -0,0 +1,40 @@
<?php
require_once('../BDD/SqliteDb.php');
$db = new SqliteDb('o');
$numDemo = $_GET['numDemo'];
$numChapitre = $_GET['numChapitre'];
$numDemoPrec = $numDemo-1;
$test = 999;
if($numDemo!=1){
$sqliteQuery = $db->prepare('UPDATE Demonstration SET numDemo=? WHERE numDemo=? AND chapitre=?');
$sqliteQuery->bindParam(1, $test);
$sqliteQuery->bindParam(2, $numDemo);
$sqliteQuery->bindParam(3, $numChapitre);
$result = $sqliteQuery->execute();
$sqliteQuery = $db->prepare('UPDATE Demonstration SET numDemo=? WHERE numDemo=? AND chapitre=?');
$sqliteQuery->bindParam(1, $numDemo);
$sqliteQuery->bindParam(2, $numDemoPrec);
$sqliteQuery->bindParam(3, $numChapitre);
$resulti = $sqliteQuery->execute();
$sqliteQuery = $db->prepare('UPDATE Demonstration SET numDemo=? WHERE numDemo=? AND chapitre=?');
$sqliteQuery->bindParam(1, $numDemoPrec);
$sqliteQuery->bindParam(2, $test);
$sqliteQuery->bindParam(3, $numChapitre);
$resultp = $sqliteQuery->execute();
}
//header("Location: index.php");

@ -0,0 +1,30 @@
<?php
require_once('../BDD/SqliteDb.php');
$db = new SqliteDb('o');
$sqliteQuery = $db->prepare('SELECT type FROM Type WHERE numQuestion=? AND numTp = ?');
$sqliteQuery->bindParam(1, $_GET['numQuestion']);
$sqliteQuery->bindParam(2, $_GET['numTp']);
$result = $sqliteQuery->execute();
$typeRow = $result->fetchArray();
if($typeRow['type'] == 'query'){
$sqliteQuery = $db->prepare('DELETE FROM Correct WHERE numquestion= ? AND numTp=? ');
$sqliteQuery->bindParam(1, $_GET['numQuestion']);
$sqliteQuery->bindParam(2, $_GET['numTp']);
$result = $sqliteQuery->execute();
}
else {
$sqliteQueryF = $db->prepare('DELETE FROM FunctionCorrect WHERE numquestion= ? AND numTp=?');
$sqliteQueryF->bindParam(1, $_GET['numQuestion']);
$sqliteQueryF->bindParam(2, $_GET['numTp']);
$result = $sqliteQueryF->execute();
}
$sqliteQuery = $db->prepare('DELETE FROM Type WHERE numquestion= ? AND numTp=? ');
$sqliteQuery->bindParam(1, $_GET['numQuestion']);
$sqliteQuery->bindParam(2, $_GET['numTp']);
$result = $sqliteQuery->execute();

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,55 @@
<?php
class Autoload
{
private static $_instance = null;
public static $limite=3;
public static function setLimite($valeur){
Autoload::$limite=$valeur;
}
public static function getLimite(){
return Autoload::$limite;
}
public static function charger()
{
if(null !== self::$_instance) {
throw new RuntimeException(sprintf('%s is already started', __CLASS__));
}
self::$_instance = new self();
if(!spl_autoload_register(array(self::$_instance, '_autoload'), false)) {
throw RuntimeException(sprintf('%s : Could not start the autoload', __CLASS__));
}
}
public static function shutDown()
{
if(null !== self::$_instance) {
if(!spl_autoload_unregister(array(self::$_instance, '_autoload'))) {
throw new RuntimeException('Could not stop the autoload');
}
self::$_instance = null;
}
}
private static function _autoload($class)
{
global $rep;
$filename = $class.'.php';
$dir =array('modeles/','./','config/','controleur/','DAL/','metier/','css/','BDD/','Traitement/');
foreach ($dir as $d){
$file=$rep.$d.$filename;
//echo $file;
if (file_exists($file))
{
include $file;
}
}
}
}

@ -0,0 +1,16 @@
<?php
//gen
$rep=__DIR__.'/../';
//Vues
$vues['vuePrincipale']='vues/VuePrincipale.php';
$vues['vueLogin']='vues/vueLogin.php';
$vues['vueSupression']='vues/VueSupression.php';
$vues['vueNbQuestions']='vues/VueNbQuestions.php';
$vues['vueDemonstration']='vues/VueDemonstration.php';
$vues['vueQCM']='vues/VueQCM.php';
$vues['vueBoo']='css/bootstrap.min.css';
$css['vuePrincipale']='css/VuePrincipale.php';
$css['bootstrap']='css/bootstrap.min.css';

@ -0,0 +1,136 @@
<?php
class Controleur {
function __construct() {
global $rep,$vues;
session_start();
$dVueEreur = array ();
try{
$action=$_REQUEST['action'];
echo $action;
switch($action) {
case NULL:
//require ($rep.$vues['vueLogin']);
$this->afficherQuestions();
break;
case 'Afficher les questions':
//require ($rep.$vues['vueLogin']);
$this->afficherQuestions();
break;
case 'login' :
//$this->verificationConnexion();
require ($rep.$vues['vueLogin']);
break;
case 'Valider' :
//$this->verificationConnexion();
$this->Correction();
break;
case 'Afficher les demonstrations' :
//$this->verificationConnexion();
$this->afficherDemonstrations();
break;
case 'Générer Base de données aléatoire':
$this->resetRandomBdd();
break;
case 'ok' :
//$this->verificationConnexion();
$this->afficherDemonstrations();
break;
case 'Reintiliser les demonstrations' :
$this->resetDemonstrations();
break;
case 'Afficher les QCM' :
$this->afficherQCM();
break;
default:
$dVueEreur[] ="Erreur d'appel php";
require ($rep.$vues['erreur']);
break;
}
} catch (PDOException $e)
{
$dVueEreur[] = "Erreur inattendue!!! ";
//require ($rep.$vues['erreur']);
}
//$this->afficherQuestions();
}
function resetRandomBdd(){
require_once('BDD/OracleDb.php');
$oraDb = new OracleDb();
$oraDb->createRandomTables();
$this->afficherQuestions();
}
function resetDemonstrations(){
$db = new SqliteDb();
$db->createDemonstration();
$this->afficherDemonstrations();
}
function afficherQuestions(){
global $rep,$vues,$css;
$model = new Modele();
$dVueQuestions = $model->afficherQuestions();
$_SESSION['array']=$dVueQuestions;
//require ($rep.$vues['vueSupression']);
require ($rep.$vues['vuePrincipale']);
//require ($rep.$vues['vueNbQuestions']);
//session_destroy();
}
function afficherDemonstrations(){
global $rep,$vues;
$model = new Modele();
$dVueDemonstrations = $model->afficherDemonstrations();
$_SESSION['arrayDemo']=$dVueDemonstrations;
//require ($rep.$vues['vueSupression']);
//require ($rep.$vues['vuePrincipale']);
require ($rep.$vues['vueDemonstration']);
//session_destroy();
}
function afficherQCM(){
global $rep,$vues;
$model = new Modele();
$tabQCM = $model->afficherQCM();
$_SESSION['arrayQCM']=$tabQCM;
require ($rep.$vues['vueQCM']);
//session_destroy();
}
function verificationConnexion(){
global $rep,$vues;
$id = $_POST['identifiant'];
$mdp = $_POST['motdepasse'];
$modele = new Modele();
if($modele->connection($id,$mdp)==null){
require($rep.$vues['vueLogin']);
}
else $this->afficherQuestions();
}
function Correction(){
require('Correcteur.php');
}
}

@ -0,0 +1,66 @@
* {box-sizing: border-box}
input[type=text] {
width: 100%;
padding: 15px;
margin: 5px 0 22px 0;
display: inline-block;
border: none;
background: #f1f1f1;
}
input[type=text]:focus {
background-color: #ddd;
outline: none;
}
hr {
border: 1px solid #f1f1f1;
margin-bottom: 25px;
}
button {
background-color: #4CAF50;
color: white;
padding: 14px 20px;
margin: 8px 0;
border: none;
cursor: pointer;
width: 100%;
opacity: 0.9;
}
button:hover {
opacity:1;
}
.btnvalider {
float: left;
width: 25%;
margin-left: auto;
margin-right: auto;
text-align: center;
}
.container {
padding: 16px;
}
.clearfix::after {
content: "";
clear: both;
display: table;
margin-left: auto;
margin-right: auto;}
@media screen and (max-width: 300px) {
.btnvalider {
width: 100%;
margin-left: auto;
margin-right: auto;
}
}

@ -0,0 +1,14 @@
/*
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
*/
/*
Created on : Jun 26, 2020, 10:36:40 AM
Author : Mehdi
*/
.frm{
text-align: right;
margin: 10px;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,325 @@
/*!
* Bootstrap Reboot v4.5.0 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
display: block;
}
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
text-align: left;
background-color: #fff;
}
[tabindex="-1"]:focus:not(:focus-visible) {
outline: 0 !important;
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
margin-bottom: 0.5rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-original-title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: .5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -.25em;
}
sup {
top: -.5em;
}
a {
color: #007bff;
text-decoration: none;
background-color: transparent;
}
a:hover {
color: #0056b3;
text-decoration: underline;
}
a:not([href]) {
color: inherit;
text-decoration: none;
}
a:not([href]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
font-size: 1em;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
-ms-overflow-style: scrollbar;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
border-style: none;
}
svg {
overflow: hidden;
vertical-align: middle;
}
table {
border-collapse: collapse;
}
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
color: #6c757d;
text-align: left;
caption-side: bottom;
}
th {
text-align: inherit;
}
label {
display: inline-block;
margin-bottom: 0.5rem;
}
button {
border-radius: 0;
}
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
[role="button"] {
cursor: pointer;
}
select {
word-wrap: normal;
}
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button:not(:disabled),
[type="button"]:not(:disabled),
[type="reset"]:not(:disabled),
[type="submit"]:not(:disabled) {
cursor: pointer;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}
input[type="radio"],
input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
textarea {
overflow: auto;
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: .5rem;
font-size: 1.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}
progress {
vertical-align: baseline;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
outline-offset: -2px;
-webkit-appearance: none;
}
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
summary {
display: list-item;
cursor: pointer;
}
template {
display: none;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */

File diff suppressed because one or more lines are too long

@ -0,0 +1,8 @@
/*!
* Bootstrap Reboot v4.5.0 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -0,0 +1,51 @@
.form-signin {
max-width: 330px;
padding: 15px;
margin: 0 auto;
color: #017572;
}
.form-signin .form-signin-heading,
.form-signin .checkbox {
margin-bottom: 10px;
}
.form-signin .checkbox {
font-weight: normal;
}
.form-signin .form-control {
position: relative;
height: auto;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 10px;
font-size: 16px;
}
.form-signin .form-control:focus {
z-index: 2;
}
.form-signin input[type="email"] {
margin-bottom: -1px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
border-color:#017572;
}
.form-signin input[type="password"] {
margin-bottom: 10px;
border-top-left-radius: 0;
border-top-right-radius: 0;
border-color:#017572;
}
h2{
text-align: right;
color: blue;
}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,52 @@
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<?php //chargement config
//phpinfo();
/*$remote_user = $_SERVER['REMOTE_USER'];
echo $remote_user;*/
// Eléments d'authentification LDAP
/* $ldaprdn = 'cn=web_bind,OU=DSI,dc=iut,dc=local'; // DN ou RDN LDAP
$ldappass = 'ldap'; // Mot de passe associé
// Connexion au serveur LDAP
$ldapconn = ldap_connect("ldap://192.168.105.5",389)
or die("Impossible de se connecter au serveur LDAP.");
if ($ldapconn) {
// Connexion au serveur LDAP
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
// Vérification de l'authentification
if ($ldapbind) {
echo "Connexion LDAP réussie...";
} else {
echo "Connexion LDAP échouée...";
}
}*/
require_once(__DIR__.'/config/config.php');
//chargement autoloader pour autochargement des classes
require_once(__DIR__.'/config/Autoload.php');
Autoload::charger();
//$oraDb = new OracleDb;
$cont = new Controleur();
//phpinfo();*/
?>
</body>
</html>

@ -0,0 +1,45 @@
<?php
class QCM {
private $numQuestion;
private $question;
private $reponse = array();
function __construct($numQuestion,$question,$reponse){
$this->numQuestion = $numQuestion;
$this->question = $question;
$this->reponse = $reponse;
}
// Getters
function getNumQuestion() {
return $this->numQuestion;
}
function getQuestion() {
return $this->question;
}
function getReponse() {
return $this->reponse;
}
// Setters
function setNumQuestion($numQuestion) {
$this->numQuestion = $numQuestion;
}
function setQuestion($question) {
$this->question = $question;
}
function setReponse($reponse) {
$this->reponse = $reponse;
}
}

@ -0,0 +1,50 @@
<?php
class Question {
private $numQuestion;
private $question;
private $reponse;
private $numTp;
function __construct($numTp,$numQuestion,$question,$reponse){
$this->numQuestion = $numQuestion;
$this->question = $question;
$this->reponse = $reponse;
$this->numTp = $numTp ;
}
// Getters
function getNumQuestion() {
return $this->numQuestion;
}
function getQuestion() {
return $this->question;
}
function getReponse() {
return $this->reponse;
}
function getNumTp() {
return $this->numTp;
}
// Setters
function setNumQuestion($numQuestion) {
$this->numQuestion = $numQuestion;
}
function setQuestion($question) {
$this->question = $question;
}
function setReponse($reponse) {
$this->reponse = $reponse;
}
}

@ -0,0 +1,37 @@
<?php
class ReponseQCM {
private $numReponse;
private $reponse;
private $numQuestion;
function __construct($numReponse,$reponse,$numQuestion){
$this->numReponse = $numReponse;
$this->reponse = $reponse;
$this->numQuestion = $numQuestion;
}
function getNumReponse() {
return $this->numReponse;
}
function getReponse() {
return $this->reponse;
}
function getNumQuestion() {
return $this->numQuestion;
}
public function __toString(){
$output = ''.$this->getReponse();
return $output;
}
}

@ -0,0 +1,45 @@
<?php
class Modele {
function afficherQuestions(){
$db = new SqliteDb();
//$db->createTable();
$qg = new QuestionsGateway($db);
die("test");
$tabQuestions = $qg->afficherQuestions();
return $tabQuestions;
}
function afficherDemonstrations(){
$db = new SqliteDb();
//$db->createTable();
$qg = new QuestionsGateway($db);
$tabDemo = $qg->afficherDemonstrations();
return $tabDemo;
}
function afficherQCM(){
$db = new SqliteDb();
//$db->createTable();
$qg = new QCMGateway($db);
$tabQCM = $qg->afficherQCM();
//die(print_r($tabQCM, true ));
return $tabQCM;
}
function connection($id, $mdp){
$ug = new UserGateway(new SqliteDb());
$vraiMdp = $ug->getPassword($id);
if(!password_verify($mdp, $vraiMdp)){
return null;
}
return 1;
}
}

@ -0,0 +1,9 @@
auxiliary.org-netbeans-modules-php-editor.fluent_2e_setter_2e_project_2e_property=false
auxiliary.org-netbeans-modules-php-editor.getter_2e_setter_2e_method_2e_name_2e_generation=AS_JAVA
auxiliary.org-netbeans-modules-php-editor.public_2e_modifier_2e_project_2e_property=false
copy.src.files=false
copy.src.on.open=false
copy.src.target=C:\\xampp\\htdocs\\PhpProject1
index.file=index.php
run.as=LOCAL
url=http://localhost/BddCorrect/

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group>
<file>file:/C:/xampp/htdocs/BddCorrect/vues/VueAdmin.php</file>
<file>file:/C:/xampp/htdocs/BddCorrect/Traitement/AjoutQuestion.php</file>
<file>file:/C:/xampp/htdocs/BddCorrect/BDD/SqliteDb.php</file>
<file>file:/C:/xampp/htdocs/BddCorrect/Traitement/Suppression.php</file>
<file>file:/C:/xampp/htdocs/BddCorrect/Traitement/Ordre.php</file>
<file>file:/C:/xampp/htdocs/BddCorrect/Traitement/Modification.php</file>
<file>file:/C:/xampp/htdocs/BddCorrect/BDD/OracleDb.php</file>
<file>file:/C:/xampp/htdocs/BddCorrect/Traitement/Correcteur.php</file>
</group>
</open-files>
</project-private>

@ -0,0 +1,7 @@
include.path=${php.global.include.path}
php.version=PHP_70
source.encoding=UTF-8
src.dir=.
tags.asp=false
tags.short=false
web.root=.

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.php.project</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/php-project/1">
<name>BddCorrect</name>
</data>
</configuration>
</project>

@ -0,0 +1,30 @@
La réponse à la question 1 est JUSTE !
<br />
<b>Warning</b>: oci_execute(): ORA-00900: invalid SQL statement in <b>C:\xampp\htdocs\BddCorrect\Correcteur.php</b> on line <b>35</b><br />
<br />
<b>Warning</b>: oci_fetch_array(): ORA-24374: define not done before fetch or execute and fetch in <b>C:\xampp\htdocs\BddCorrect\Correcteur.php</b> on line <b>62</b><br />
<br />
<b>Warning</b>: oci_execute(): ORA-00900: invalid SQL statement in <b>C:\xampp\htdocs\BddCorrect\Correcteur.php</b> on line <b>110</b><br />
<br />
<b>Warning</b>: oci_fetch_array(): ORA-24374: define not done before fetch or execute and fetch in <b>C:\xampp\htdocs\BddCorrect\Correcteur.php</b> on line <b>119</b><br />
La réponse à la question 2 est FAUSSE !
<br />
<b>Warning</b>: oci_execute(): ORA-00900: invalid SQL statement in <b>C:\xampp\htdocs\BddCorrect\Correcteur.php</b> on line <b>35</b><br />
<br />
<b>Warning</b>: oci_fetch_array(): ORA-24374: define not done before fetch or execute and fetch in <b>C:\xampp\htdocs\BddCorrect\Correcteur.php</b> on line <b>62</b><br />
<br />
<b>Warning</b>: oci_execute(): ORA-00900: invalid SQL statement in <b>C:\xampp\htdocs\BddCorrect\Correcteur.php</b> on line <b>110</b><br />
<br />
<b>Warning</b>: oci_fetch_array(): ORA-24374: define not done before fetch or execute and fetch in <b>C:\xampp\htdocs\BddCorrect\Correcteur.php</b> on line <b>119</b><br />
La réponse à la question 3 est FAUSSE !
<br />
<b>Warning</b>: oci_execute(): ORA-00900: invalid SQL statement in <b>C:\xampp\htdocs\BddCorrect\Correcteur.php</b> on line <b>35</b><br />
<br />
<b>Warning</b>: oci_fetch_array(): ORA-24374: define not done before fetch or execute and fetch in <b>C:\xampp\htdocs\BddCorrect\Correcteur.php</b> on line <b>62</b><br />
La réponse à la question 4 est FAUSSE !
<br />
<b>Warning</b>: oci_execute(): ORA-00900: invalid SQL statement in <b>C:\xampp\htdocs\BddCorrect\Correcteur.php</b> on line <b>35</b><br />
qdsdqdsqdqsreponse : 1question : 5<br />
<b>Warning</b>: oci_execute(): ORA-00900: invalid SQL statement in <b>C:\xampp\htdocs\BddCorrect\Correcteur.php</b> on line <b>244</b><br />
La réponse à la question 5 est FAUSSE !
Résultat : 1/5

Binary file not shown.

@ -0,0 +1,101 @@
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="../css/jquery-3.5.1.js"></script>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="../css/VueAdmin.css">
</head>
<body>
<form style="border:1px solid #ccc" method="GET" action="../Traitement/AjoutQuestion.php">
<div class="container">
<h1>Ajouter une question</h1>
<hr>
<label><b>TP n° : </b></label>
<input type="text" placeholder="Numéro du TP" id="tp" name='tp' required>
<label><b>Numéro de question : </b></label>
<input type="text" placeholder="Saisir le numéro de question..." id="num" required>
<label><b>Barème : </b></label>
<input type="text" placeholder="Barème..." id="points" required>
<label><b>Consigne : </b></label>
<input type="text" placeholder="Ecrire la consigne..." id="consigne" required>
<label><b>Réponse : </b></label>
<input type="text" placeholder="SELECT ..." id="reponse" required>
<label> <b>Choisir le type de la question : </b><br/>
<input type="radio" name="type" value="requete" style="margin-bottom:15px" checked> requête simple
<input type="radio" name="type" value="fonction" id="btn-fonction" style="margin-bottom:15px"> fonction
</label><br/>
<div id='show-me' style='display:none'>
<label ><b>Fonction : </b></label>
<input type="text" placeholder="CREATE OR REPLACE FUNCTION ..." id="fonction" required>
</div>
<label><b>Verification avec BDD aléatoire? </b><br/>
<input type="radio" name="aleatoire" value="o" style="margin-bottom:15px" checked> oui
<input type="radio" name="aleatoire" value="n" style="margin-bottom:15px"> non
</label><br/>
<label><b>Base de données conçernée </b><br/>
<input type="radio" name="bdd" value="NBA" style="margin-bottom:15px" checked> NBA
</label>
<div >
<input type="button" value="Ajouter" onclick="SubmitAjoutQuestion()" />
</div>
</div>
</form>
<div id="erreur">
</div>
</body>
<script>
$(document).ready(function() {
$('input[type="radio"]').click(function() {
if($(this).attr('id') == 'btn-fonction') {
$('#show-me').show();
}
else {
$('#show-me').hide();
}
});
});
function SubmitAjoutQuestion() {
//document.write($('#demo'+numQuestion).val());
var tp = $('#tp').val() ;
var num = $('#num').val() ;
var points = $('#points').val() ;
var consigne = $('#consigne').val() ;
var reponse = $('#reponse').val() ;
var type = $("input[name='type']:checked").val();
var aleatoire= $("input[name='aleatoire']:checked").val();
var bdd = $("input[name='bdd']:checked").val();
var fonction = $('#fonction').val() ;
$.get("../Traitement/AjoutQuestion.php", { tp: tp,num: num,points: points,consigne: consigne,reponse: reponse,type: type,aleatoire: aleatoire,bdd: bdd, fonction : fonction},
function(data) {
$('#erreur').html(data);
//$('#demoForm')[0].reset();
});
}
</script>
</html>

@ -0,0 +1,67 @@
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="../css/jquery-3.5.1.js"></script>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="../css/VueAdmin.css">
</head>
<body>
<form style="border:1px solid #ccc" method="GET" action="../Traitement/AjoutQuestion.php">
<div class="container">
<h1>Ajouter une question</h1>
<hr>
<label><b>Chapitre n° : </b></label>
<input type="text" placeholder="Numéro du chapitre" id="chapitre" name='chapitre' required>
<label><b>Numéro de démonstration : </b></label>
<input type="text" placeholder="Saisir le numéro de la démonstration..." id="numDemo" required>
<label><b>Description : </b></label>
<input type="text" placeholder="Ecrire l'intitulé de la démonstration..." id="description" required>
<label><b>Réponse : </b></label>
<input type="text" placeholder="SELECT ..." id="reponse" required>
<label><b>Base de données conçernée </b><br/>
<input type="radio" name="bdd" value="NBA" style="margin-bottom:15px" checked> NBA
</label>
<div >
<input type="button" value="Ajouter" onclick="SubmitAjoutDemo()" />
</div>
</div>
</form>
<div id="erreur">
</div>
</body>
<script>
function SubmitAjoutDemo() {
var chapitre = $('#chapitre').val() ;
var numDemo = $('#numDemo').val() ;
var description = $('#description').val() ;
var reponse = $('#reponse').val() ;
var bdd = $("input[name='bdd']:checked").val();
$.get("../Traitement/AjoutDemonstration.php", { chapitre: chapitre,numDemo: numDemo,description: description,reponse: reponse,bdd: bdd},
function(data) {
$('#erreur').html(data);
//$('#demoForm')[0].reset();
});
}
</script>
</html>

@ -0,0 +1,132 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="css/jquery-3.5.1.js"></script>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/VuePrincipale.css">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top" id="mainNav">
<div class="container">
<a class="navbar-brand js-scroll-trigger" href="#page-top">TP de Base De Données</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP2">TP2</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP3">TP3</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP4">TP4</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP5">TP5</a>
</li>
</ul>
</div>
</div>
</nav>
<header class="bg-primary text-white">
<div class="container text-center">
<h1>Demonstrations</h1>
<p class="lead">TEST</p>
</div>
</header>
<div style="font-weight: bold" id="Temps-Restant"></div>
<section id="TP2">
<div class="container">
<div class="row">
<div class="col-lg-8 mx-auto">
<h2>TP 2</h2>
<form id="demoForm" method="get" >
<?php $i=0;
foreach ($dVueDemonstrations as $q) {
?>
<?php $i++; echo $q->getNumQuestion() .'.'.$q->getQuestion(); $_SESSION['num']=array(); $_SESSION['num'][$i] =$q->getNumQuestion(); ?> <br/>
<textarea rows="5" cols="70" name="demo<?php echo $q->getNumQuestion(); ?>" id="demo<?php echo $q->getNumQuestion(); ?>" >
<?php echo $q->getReponse(); ?>
</textarea>
<input class="monterDemonstration" type="button" value="Monter" onclick="MonterDemonstration(<?php echo $q->getNumQuestion(); ?>,<?php echo $q->getNumTp(); ?>)" ></p>
<p><input class="submitDemoData" type="button" value="Exécuter" onclick="SubmitDemoData(<?php echo $q->getNumQuestion(); ?>);" ></p>
<div id="results<?php echo $q->getNumQuestion(); ?>">
<!-- les résultats s'affichent içi -->
</div><br/>
<?php $i++; } //fin foreach ?>
</form>
</div>
</div>
</div>
</section>
<form method="get" >
<input type="submit" name="action" id="regenererDemo" value="Reintiliser les demonstrations" /><br/>
</form>
<a href="vues/VueAjoutDemo.php"><button>Ajouter Une Démonstration</button></a>
<a href="vues/VueLibre.php"><button>Creation table</button></a>
<form method="get" role="form">
<input type="submit" name="action" value="Afficher les questions" /><br/>
<input type="submit" name="action" value="Afficher les QCM" ><br/>
<input type="submit" name="action" id="afficher-demo" value="Afficher les demonstrations" style='display:none'>
</form>
<div id="erreur">
</div>
<script>
function SubmitDemoData(numQuestion) {
//document.write($('#demo'+numQuestion).val());
var txt = $('#demo'+numQuestion).val() ;
$.get("Traitement/AffichageDemo.php", { textbox: txt},
function(data) {
$('#results'+numQuestion).html(data);
//$('#demoForm')[0].reset();
});
}
function MonterDemonstration(numDemo, numChapitre) {
if(numDemo > 1){
$.get("Traitement/OrdreDemo.php", { numDemo : numDemo, numChapitre : numChapitre },
function(data) {
//$('#questionsForm')[0].reset();
//$('#erreur').html(data);
$("#afficher-demo").trigger("click");
//window.location.replace("index.php");
});
}
}
</script>
<!-- Footer -->
<footer class="py-5 bg-dark">
<div class="container">
<p class="m-0 text-center text-white">IUT Clermont-Ferrand 2020</p>
</div>
<!-- /.container -->
</footer>
<!-- Bootstrap core JavaScript -->
<script src="vendor/jquery/jquery.min.js"></script>
<script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- Plugin JavaScript -->
<script src="vendor/jquery-easing/jquery.easing.min.js"></script>
<!-- Custom JavaScript for this theme -->
<script src="js/scrolling-nav.js"></script>
</body>
</html>

@ -0,0 +1,134 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/VuePrincipale.css">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top" id="mainNav">
<div class="container">
<a class="navbar-brand js-scroll-trigger" href="#page-top">TP de Base De Données</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP2">TP2</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP3">TP3</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP4">TP4</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP5">TP5</a>
</li>
</ul>
</div>
</div>
</nav>
<header class="bg-primary text-white">
<div class="container text-center">
<h1>test</h1>
<p class="lead">TEST</p>
</div>
</header>
<div style="font-weight: bold" id="Temps-Restant"></div>
<section id="TP2">
<div class="container">
<div class="row">
<div class="col-lg-8 mx-auto">
<h2>TP 2</h2>
<form method="post" action="Correcteur.php" name="Exam">
<?php $i=0;
foreach ($dVueQuestions as $q) { ?>
<p><?php $i++; echo $q->getNumQuestion() .'.'.$q->getQuestion(); $_SESSION['num']=array(); $_SESSION['num'][$i] =$q->getNumQuestion(); ?> <br/>
<textarea rows="5" cols="70" name="textbox[]" >
<?php echo (isset($_SESSION['fi'][$i]) ? $_SESSION['fi'][$i] : '') ?>
</textarea>
<input>
<strong>TEST</strong>
</p>
<?php } //fin foreach ?>
<p><input type="submit" ></p>
</form>
</div>
</div>
</div>
</section>
<form method="post" class="frm">
<input type="submit" name="test" id="test" value="Générer Base de données aléatoire" /><br/>
<input type="submit" name="regenerer" id="test" value="Réintiliser les questions" /><br/>
</form>
<a href="vues/VueAdmin.php"><button>Ajouter Une Question</button></a>
<?php
if(array_key_exists('test',$_POST)){
$oraDb = new OracleDb;
}
if(array_key_exists('regenerer',$_POST)){
$db = new SqliteDb();
$db->createTable();
$URL="index.php";
echo '<META HTTP-EQUIV="refresh" content="0;URL=' . $URL . '">';
}
?>
<script type="text/javascript">
var tempsMin =50 ;
var total_secondes =60*tempsMin;
tempsMin = parseInt(total_secondes/60);
secondes = parseInt(total_secondes%60);
document.getElementById("Temps-Restant").innerHTML='Temps restant: ' + tempsMin + ' minutes ' + secondes + ' secondes';
function init(){
document.getElementById("Temps-Restant").innerHTML='Temps restant: ' + tempsMin + ' minutes ' + secondes + ' secondes';
setTimeout("TempsRestant()",999);
}
function TempsRestant(){
document.getElementById("Temps-Restant").innerHTML='Temps restant: ' + tempsMin + ' minutes ' + secondes + ' secondes' ;
if(total_secondes <=0){
setTimeout('document.Exam.submit()',1);
}
else {
total_secondes = total_secondes -1;
tempsMin = parseInt(total_secondes/60);
secondes = parseInt(total_secondes%60);
setTimeout("TempsRestant()",999);
}
}
init();
</script>
<!-- Footer -->
<footer class="py-5 bg-dark">
<div class="container">
<p class="m-0 text-center text-white">IUT Clermont-Ferrand 2020</p>
</div>
<!-- /.container -->
</footer>
<!-- Bootstrap core JavaScript -->
<script src="vendor/jquery/jquery.min.js"></script>
<script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- Plugin JavaScript -->
<script src="vendor/jquery-easing/jquery.easing.min.js"></script>
<!-- Custom JavaScript for this theme -->
<script src="js/scrolling-nav.js"></script>
</body>
</html>

@ -0,0 +1,8 @@
<form method="get" action="../Traitement/ExecOracle.php">
<textarea rows="5" cols="70" name="textbox" >
</textarea>
<p><input type="submit" ></p>
</form>

@ -0,0 +1,15 @@
<form method="post" class="frmnmbre" >
Choisir le nombre de questions à afficher <br/>
<input type="text" name="nmbre" id="nmbre" /><br/>
<p><input type="submit" ></p>
</form>
<?php
if(array_key_exists('nmbre',$_POST)){
$test =2;
$_SESSION['nbQuestions']=$_POST['nmbre'];
if($_POST['nmbre'] == 0) $_SESSION['nbQuestions']='10';
require ($rep.$vues['vuePrincipale']);
}

@ -0,0 +1,204 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"><style><?php global $rep,$vues,$css; include $rep.$css['bootstrap']; ?></style>
<title></title>
<script src="css/jquery-3.5.1.js"></script>
<link rel="stylesheet" href="css/VuePrincipale.css">
</head>
<body id="vuep">
<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top" id="mainNav">
<div class="container">
<a class="navbar-brand js-scroll-trigger" href="#page-top">TP de Base De Données</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP2">TP2</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP3">TP3</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP4">TP4</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP5">TP5</a>
</li>
</ul>
</div>
</div>
</nav>
<header class="bg-primary text-white">
<div class="container text-center">
<h1>test</h1>
<p class="lead">TEST</p>
</div>
</header>
<div id='allp'>
<div style="font-weight: bold" id="Temps-Restant"></div>
<section id="TP2">
<div class="container">
<div class="row">
<div class="col-lg-8 mx-auto">
<h2>TP 2</h2>
<form id="questionsForm" method="get" name="Exam">
<?php $i=0; //shuffle($dVueQuestions);
foreach ($dVueQuestions as $q) {
/*if($nbQ > $_SESSION['nbQuestions'])
break; */ ?>
<p><?php $i++; echo $q->getNumQuestion() .'.'.$q->getQuestion(); $_SESSION['num']=array(); $_SESSION['num'][$i] =$q->getNumQuestion(); ?> <br/>
<textarea name="question<?php echo $q->getNumQuestion(); ?>" id="question<?php echo $q->getNumQuestion(); ?>" rows="5" cols="70">
<?php echo (isset($_SESSION['fi'][$i]) ? $_SESSION['fi'][$i] : '') ?>
</textarea>
<p><input class="submitQuestionData" type="button" value="Valider" onclick="SubmitQuestionData(<?php echo $q->getNumQuestion(); ?>,<?php echo $q->getNumTp(); ?>);" >
<input class="supprimerQuestion" type="button" value="Supprimer" onclick="SupprimerQuestion(<?php echo $q->getNumQuestion(); ?>,<?php echo $q->getNumTp(); ?>);" >
<input class="modifierQuestion" type="button" value="Modifier" onclick="ModifierQuestion(<?php echo $q->getNumQuestion(); ?>,<?php echo $q->getNumTp(); ?>)" >
<input class="monterQuestion" type="button" value="Monter" onclick="MonterQuestion(<?php echo $q->getNumQuestion(); ?>,<?php echo $q->getNumTp(); ?>)" ></p>
</p>
<div id="resultatsQuestions<?php echo $q->getNumQuestion(); ?>">
<!-- les résultats s'affichent içi -->
</div><br/>
<?php $i++; } //fin foreach ?>
</form>
</div>
</div>
</div>
</section>
<form method="get" class="frm">
<input type="submit" name="action" id="test" value="Générer Base de données aléatoire" />
<input type="submit" name="regenerer" id="test" value="Réintiliser les questions" /><br/>
</form>
<a href="vues/VueAdmin.php"><button>Ajouter Une Question</button></a>
<a href="vues/VueLibre.php"><button>Creation table</button></a>
<form method="get" role="form">
<input type="submit" name="action" value="Afficher les demonstrations" >
<input type="submit" name="action" value="Afficher les QCM" ><br/>
</form>
<?php
if(array_key_exists('regenerer',$_GET)){
$db = new SqliteDb();
$db->createTable();
$URL="index.php";
echo '<META HTTP-EQUIV="refresh" content="0;URL=' . $URL . '">';
}
?>
<div id="resultats">
<!-- les résultats s'affichent içi -->
</div><br/>
</div>
<script type="text/javascript">
var tempsMin =50 ;
var total_secondes =60*tempsMin;
tempsMin = parseInt(total_secondes/60);
secondes = parseInt(total_secondes%60);
document.getElementById("Temps-Restant").innerHTML='Temps restant: ' + tempsMin + ' minutes ' + secondes + ' secondes';
function init(){
document.getElementById("Temps-Restant").innerHTML='Temps restant: ' + tempsMin + ' minutes ' + secondes + ' secondes';
setTimeout("TempsRestant()",999);
}
function TempsRestant(){
document.getElementById("Temps-Restant").innerHTML='Temps restant: ' + tempsMin + ' minutes ' + secondes + ' secondes' ;
if(total_secondes <=0){
setTimeout('document.Exam.submit()',1);
}
else {
total_secondes = total_secondes -1;
tempsMin = parseInt(total_secondes/60);
secondes = parseInt(total_secondes%60);
setTimeout("TempsRestant()",999);
}
}
init();
function SubmitQuestionData(numQuestion, numTp) {
//document.write($('#demo'+numQuestion).val());
var txt = $('#question'+numQuestion).val() ;
$.get("Traitement/Correcteur.php", { textbox : txt, numQuestion : numQuestion, numTp : numTp},
function(data) {
$('#resultatsQuestions'+numQuestion).html(data);
//$('#questionsForm')[0].reset();
});
}
function SupprimerQuestion(numQuestion,numTp) {
$.get("Traitement/Suppression.php", { numQuestion : numQuestion, numTp : numTp},
function(data) {
$('#resultatsQuestions'+numQuestion).html(data);
//$('#questionsForm')[0].reset();
location.reload();
});
}
function ModifierQuestion(numQuestion, numTp) {
$.get("Traitement/Modification.php", { numQuestion : numQuestion, numTp : numTp },
function(data) {
$('#vuep').empty();
$('#vuep').html(data);
//$('#questionsForm')[0].reset();
//location.reload();
});
}
function MonterQuestion(numQuestion, numTp) {
if(numQuestion > 1){
$.get("Traitement/Ordre.php", { numQuestion : numQuestion, numTp : numTp },
function(data) {
//$('#questionsForm')[0].reset();
window.location.replace("index.php");
});
}
}
window.addEventListener('scroll',function() {
localStorage.setItem('scrollPosition',window.scrollY);
},false);
window.addEventListener('load',function() {
if(localStorage.getItem('scrollPosition') !== null)
window.scrollTo(0, localStorage.getItem('scrollPosition'));
},false);
</script>
<!-- Footer -->
<footer class="py-5 bg-dark">
<div class="container">
<p class="m-0 text-center text-white">IUT Clermont-Ferrand 2020</p>
</div>
<!-- /.container -->
</footer>
<!-- Bootstrap core JavaScript -->
<script src="vendor/jquery/jquery.min.js"></script>
<script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- Plugin JavaScript -->
<script src="vendor/jquery-easing/jquery.easing.min.js"></script>
<!-- Custom JavaScript for this theme -->
<script src="js/scrolling-nav.js"></script>
</body>
</html>

@ -0,0 +1,121 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="css/jquery-3.5.1.min.js"></script>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/VuePrincipale.css">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top" id="mainNav">
<div class="container">
<a class="navbar-brand js-scroll-trigger" href="#page-top">TP de Base De Données</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP2">TP2</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP3">TP3</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP4">TP4</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP5">TP5</a>
</li>
</ul>
</div>
</div>
</nav>
<header class="bg-primary text-white">
<div class="container text-center">
<h1>test</h1>
<p class="lead">TEST</p>
</div>
</header>
<div style="font-weight: bold" id="Temps-Restant"></div>
<section id="TP2">
<div class="container">
<div class="row">
<div class="col-lg-8 mx-auto">
<h2>TP 2</h2>
<form id="QCMForm" method="get" >
<?php $i=0; //shuffle($dVueQuestions);
foreach ($tabQCM as $qcm) {
?>
<p><?php $i++; echo $qcm->getNumQuestion() .'.'.$qcm->getQuestion(); ?> <br/>
<?php
foreach ($qcm->getReponse() as $r ) { ?>
<input type="radio" id="textbox<?php echo $r->getNumReponse(); ?>" name="radiobox<?php echo $qcm->getNumQuestion();?>" value="<?php echo $r->getReponse();?>" style="margin-bottom:15px"> <?php echo $r->getNumReponse().'.'.$r->getReponse(); ?> <br/>
<?php
}
?>
<p><input class="SubmitQCMData" type="button" value="Valider" onclick="SubmitQCMData(<?php echo $qcm->getNumQuestion(); ?>)" ></p>
<div id="results<?php echo $qcm->getNumQuestion(); ?>">
<!-- les résultats s'affichent içi -->
</div><br/>
<?php } //fin foreach ?>
</form>
</div>
</div>
</div>
</section>
<a href="vues/VueAdmin.php"><button>Ajouter Une Question</button></a>
<a href="vues/VueLibre.php"><button>Creation table</button></a>
<form method="get" role="form">
<input type="submit" name="action" value="Afficher les demonstrations" ><br/>
<input type="submit" name="action" value="Afficher les questions" ><br/>
</form>
<script>
function SubmitQCMData(numQuestion) {
//document.write($('#textbox'+numQuestion).val());
var name = "radiobox"+numQuestion;
var txt = $("input[name="+name+"]:checked").val();
$.get("Traitement/CorrectionQCM.php", { textbox: txt , numQuestion: numQuestion},
function(data) {
$('#results'+numQuestion).html(data);
//$('#QCMForm')[0].reset();
});
}
</script>
<!-- Footer -->
<footer class="py-5 bg-dark">
<div class="container">
<p class="m-0 text-center text-white">IUT Clermont-Ferrand 2020</p>
</div>
<!-- /.container -->
</footer>
<!-- Bootstrap core JavaScript -->
<script src="vendor/jquery/jquery.min.js"></script>
<script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- Plugin JavaScript -->
<script src="vendor/jquery-easing/jquery.easing.min.js"></script>
<!-- Custom JavaScript for this theme -->
<script src="js/scrolling-nav.js"></script>
</body>
</html>

@ -0,0 +1,85 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>f</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/bootstrap.min.css"/>
<link rel="stylesheet" type="style/css" href="css/main.css"/>
<style>
body {
padding-top: 40px;
padding-bottom: 40px;
background-color: #ADABAB;
}
.form-signin {
max-width: 330px;
padding: 15px;
margin: 0 auto;
color: #017572;
}
.form-signin .form-signin-heading,
.form-signin .checkbox {
margin-bottom: 10px;
}
.form-signin .checkbox {
font-weight: normal;
}
.form-signin .form-control {
position: relative;
height: auto;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 10px;
font-size: 16px;
}
.form-signin .form-control:focus {
z-index: 2;
}
.form-signin input[type="email"] {
margin-bottom: -1px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
border-color:#017572;
}
.form-signin input[type="password"] {
margin-bottom: 10px;
border-top-left-radius: 0;
border-top-right-radius: 0;
border-color:#017572;
}
h2{
text-align: center;
color: #017572;
}
</style>
</head>
<body>
<h2>Connexion</h2>
<div class = "container form-signin">
</div>
<div class = "container">
<form class = "form-signin" role = "form" method = "post">
<h4 class = "form-signin-heading"></h4>
<input type = "text" class = "form-control"
name = "identifiant" placeholder = "test"
required autofocus></br>
<input type = "password" class = "form-control"
name = "motdepasse" placeholder = "mdptest" required>
<input type="submit" name="action" value="login"/>
</form>
</div>
</body>
</html>

@ -0,0 +1,133 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/VuePrincipale.css">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top" id="mainNav">
<div class="container">
<a class="navbar-brand js-scroll-trigger" href="#page-top">TP de Base De Données</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP2">TP2</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP3">TP3</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP4">TP4</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#TP5">TP5</a>
</li>
</ul>
</div>
</div>
</nav>
<header class="bg-primary text-white">
<div class="container text-center">
<h1>test</h1>
<p class="lead">TEST</p>
</div>
</header>
<div style="font-weight: bold" id="Temps-Restant"></div>
<section id="TP2">
<div class="container">
<div class="row">
<div class="col-lg-8 mx-auto">
<h2>TP 2</h2>
<form method="post" action="Correcteur.php" name="Exam">
<?php $i=0;
foreach ($dVueQuestions as $q) { ?>
<p><?php $i++; echo $q->getNumQuestion() .'.'.$q->getQuestion(); $_SESSION['num']=array(); $_SESSION['num'][$i] =$q->getNumQuestion(); ?> <br/>
<textarea rows="5" cols="70" name="textbox[]" >
<?php echo (isset($_SESSION['fi'][$i]) ? $_SESSION['fi'][$i] : '') ?>
</textarea>
<strong>TEST</strong>
</p>
<?php } //fin foreach ?>
<p><input type="submit" ></p>
</form>
</div>
</div>
</div>
</section>
<form method="post" class="frm">
<input type="submit" name="test" id="test" value="Générer Base de données aléatoire" /><br/>
<input type="submit" name="regenerer" id="test" value="Réintiliser les questions" /><br/>
</form>
<a href="vues/VueAdmin.php"><button>Ajouter Une Question</button></a>
<a href="vues/VueLibre.php"><button>Creation table</button></a>
<?php
if(array_key_exists('test',$_POST)){
$oraDb = new OracleDb;
}
if(array_key_exists('regenerer',$_POST)){
$db = new SqliteDb();
$db->createTable();
$URL="index.php";
echo '<META HTTP-EQUIV="refresh" content="0;URL=' . $URL . '">';
}
?>
<script type="text/javascript">
var tempsMin =50 ;
var total_secondes =60*tempsMin;
tempsMin = parseInt(total_secondes/60);
secondes = parseInt(total_secondes%60);
document.getElementById("Temps-Restant").innerHTML='Temps restant: ' + tempsMin + ' minutes ' + secondes + ' secondes';
function init(){
document.getElementById("Temps-Restant").innerHTML='Temps restant: ' + tempsMin + ' minutes ' + secondes + ' secondes';
setTimeout("TempsRestant()",999);
}
function TempsRestant(){
document.getElementById("Temps-Restant").innerHTML='Temps restant: ' + tempsMin + ' minutes ' + secondes + ' secondes' ;
if(total_secondes <=0){
setTimeout('document.Exam.submit()',1);
}
else {
total_secondes = total_secondes -1;
tempsMin = parseInt(total_secondes/60);
secondes = parseInt(total_secondes%60);
setTimeout("TempsRestant()",999);
}
}
init();
</script>
<!-- Footer -->
<footer class="py-5 bg-dark">
<div class="container">
<p class="m-0 text-center text-white">IUT Clermont-Ferrand 2020</p>
</div>
<!-- /.container -->
</footer>
<!-- Bootstrap core JavaScript -->
<script src="vendor/jquery/jquery.min.js"></script>
<script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- Plugin JavaScript -->
<script src="vendor/jquery-easing/jquery.easing.min.js"></script>
<!-- Custom JavaScript for this theme -->
<script src="js/scrolling-nav.js"></script>
</body>
</html>
Loading…
Cancel
Save