diff --git a/BD2A/BDD/OracleDb.php b/BD2A/BDD/OracleDb.php new file mode 100755 index 0000000..da8bb4f --- /dev/null +++ b/BD2A/BDD/OracleDb.php @@ -0,0 +1,270 @@ +conn = oci_connect('u_prems', '123456', 'localhost/orcl'); + //$this->conn = oci_connect('meelaichao', 'meelaichao', 'kirov:1521/kirov'); + $this->conn = oci_connect('palafour2', 'palafour2', '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; + } +} diff --git a/BD2A/BDD/SqliteDb.php b/BD2A/BDD/SqliteDb.php new file mode 100755 index 0000000..6eab19c --- /dev/null +++ b/BD2A/BDD/SqliteDb.php @@ -0,0 +1,583 @@ +conn = $odb->getConn(); + if($o == 'n') + $this->open('Traitement/test2.db'); + else if($o == 'save'){ + $this->open('../test2.db'); + } + else $this->open('test2.db'); + //$this->createNotes(); + //$this->createLogin(); + // $this->createTable(); + //$this->createDemonstration(); + //$this->createQCM(); + // $this->createDateTp(); + //$this->creerSauvegardeQcm(); + //$this->creerSauvegardeTp(); + //$this->createNotesTp(); + } + + function creerSauvegardeQcm(){ + $this->exec('DROP TABLE QcmSauvegarde'); + $this->exec('CREATE TABLE QcmSauvegarde ( idEtudiant STRING,numQcm NUMBER, numQuestion NUMBER, numReponse NUMBER, UNIQUE(idEtudiant,numQcm,numQuestion,numReponse))'); + } + + function createNotes(){ + $this->exec('DROP TABLE Notes'); + //$this->exec('CREATE TABLE Notes ( nomExercice STRING, nomPrenom STRING,numEtudiant NUMBER, note NUMBER, UNIQUE(numEtudiant))'); + $this->exec('CREATE TABLE Notes ( idEtudiant STRING,numQcm NUMBER, note NUMBER, UNIQUE(idEtudiant,numQcm))'); + + $this->exec('DROP TABLE NotesParQuestion'); + $this->exec('CREATE TABLE NotesParQuestion ( idEtudiant STRING, numQcm NUMBER, numQuestion NUMBER, note NUMBER, UNIQUE(idEtudiant,numQuestion,numQcm))'); + + } + + function creerSauvegardeTp(){ + $this->exec('DROP TABLE TpSauvegarde'); + $this->exec('CREATE TABLE TpSauvegarde ( idEtudiant STRING,numTp NUMBER, numQuestion NUMBER, reponse NUMBER, UNIQUE(idEtudiant,numTp,numQuestion))'); + } + + function createNotesTp(){ + $this->exec('DROP TABLE NotesTp'); + //$this->exec('CREATE TABLE Notes ( nomExercice STRING, nomPrenom STRING,numEtudiant NUMBER, note NUMBER, UNIQUE(numEtudiant))'); + $this->exec('CREATE TABLE NotesTp( idEtudiant STRING,numTp NUMBER, note NUMBER, UNIQUE(idEtudiant,numTp))'); + + $this->exec('DROP TABLE NotesParQuestionTp'); + $this->exec('CREATE TABLE NotesParQuestionTp ( idEtudiant STRING, numTp NUMBER, numQuestion NUMBER, note NUMBER, UNIQUE(idEtudiant,numQuestion,numTp))'); + } + + function ecrireFichierNotes($numQcm,$save = 'o',$type){ + + // 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"; + $info = ldap_get_entries($ldapconn, $sr); + if($type == 'vraifaux'){ + $query = $this->prepare('SELECT * FROM Qcm WHERE numQcm=?'); + $query->bindParam(1,$numQcm); + $result = $query->execute(); + $nomResult = $result->fetchArray(); + if(!$nomResult['nom']) exit(); + if($save != 'o'){ + $file = fopen("..".DIRECTORY_SEPARATOR."..".DIRECTORY_SEPARATOR."Notes".DIRECTORY_SEPARATOR."QCM".DIRECTORY_SEPARATOR."notes_".$nomResult['nom'].".txt", "w"); + $fileDetail = fopen("..".DIRECTORY_SEPARATOR."..".DIRECTORY_SEPARATOR."Notes".DIRECTORY_SEPARATOR."QCM".DIRECTORY_SEPARATOR."notesDetaillees_".$nomResult['nom'].".txt", "w"); + } + else { + $file = fopen("..".DIRECTORY_SEPARATOR."Notes".DIRECTORY_SEPARATOR."QCM".DIRECTORY_SEPARATOR."notes_".$nomResult['nom'].".txt", "w"); + $fileDetail = fopen("..".DIRECTORY_SEPARATOR."..".DIRECTORY_SEPARATOR."Notes".DIRECTORY_SEPARATOR."QCM".DIRECTORY_SEPARATOR."notesDetaillees_".$nomResult['nom'].".txt", "w"); + } + $query = $this->prepare('SELECT * FROM Notes WHERE numQcm=?'); + $query->bindParam(1,$numQcm); + $result = $query->execute(); + + $query = $this->prepare('SELECT count(*) FROM QcmQuestion WHERE numQcm=?'); + $query->bindParam(1,$numQcm); + $resultCount = $query->execute(); + $nbQuestion = $resultCount->fetchArray(); + + while($r = $result->fetchArray()){ + $filter = "cn=".$r['idEtudiant']; + $sr = ldap_search($ldapconn, $dn, $filter); + $info = ldap_get_entries($ldapconn, $sr); + + $ligne = $r['idEtudiant'].','.$info[0]["givenname"][0].','.$info[0]["sn"][0].",".$info[0]["postalcode"][0]; + for($i = 1 ; $i<= $nbQuestion['count(*)'] ; $i++){ + $query = $this->prepare('SELECT * FROM NotesParQuestion WHERE numQcm=? AND numQuestion=? AND idEtudiant=?'); + $query->bindParam(1,$numQcm); + $query->bindParam(2,$i); + $query->bindParam(3,$r['idEtudiant']); + $resultNoteQuestions = $query->execute(); + $noteQuestionRow = $resultNoteQuestions->fetchArray(); + $ligne = $ligne.','.$noteQuestionRow['note']; + } + $ligne = $ligne.','.$r['note']; + fwrite($fileDetail,$ligne."\n"); + //echo $info[0]["givenname"][0].','.$info[0]["postalcode"][0].",".$r['note']."\n"; + fwrite($file, $r['idEtudiant'].','.$info[0]["givenname"][0].','.$info[0]["sn"][0].",".$info[0]["postalcode"][0].",".$r['note']."\n"); + } + } + else{ + // numqcm = numtp !! + if($save != 'o'){ + $file = fopen("..".DIRECTORY_SEPARATOR."..".DIRECTORY_SEPARATOR."Notes".DIRECTORY_SEPARATOR."tp".DIRECTORY_SEPARATOR."notesTp_".$numQcm.".txt", "w"); + $fileDetail = fopen("..".DIRECTORY_SEPARATOR."..".DIRECTORY_SEPARATOR."Notes".DIRECTORY_SEPARATOR."tp".DIRECTORY_SEPARATOR."notesTpDetaillees_".$numQcm.".txt", "w"); + } + else { + $file = fopen("..".DIRECTORY_SEPARATOR."Notes".DIRECTORY_SEPARATOR."tp".DIRECTORY_SEPARATOR."notesTp_".$numQcm.".txt", "w"); + $fileDetail = fopen("..".DIRECTORY_SEPARATOR."..".DIRECTORY_SEPARATOR."Notes".DIRECTORY_SEPARATOR."tp".DIRECTORY_SEPARATOR."notesTpDetaillees_".$numQcm.".txt", "w"); + } + if(!$file) echo 'erreur'; + $query = $this->prepare('SELECT * FROM NotesTp WHERE numTp=?'); + $query->bindParam(1,$numQcm); + $result = $query->execute(); + + $query = $this->prepare('SELECT count(*) FROM type WHERE numTp=?'); + $query->bindParam(1,$numQcm); + $resultCount = $query->execute(); + $nbQuestion = $resultCount->fetchArray(); + + while($r = $result->fetchArray()){ + $filter = "cn=".$r['idEtudiant']; + $sr = ldap_search($ldapconn, $dn, $filter); + $info = ldap_get_entries($ldapconn, $sr); + + $ligne = $r['idEtudiant'].','.$info[0]["givenname"][0].','.$info[0]["sn"][0].",".$info[0]["postalcode"][0]; + for($i = 1 ; $i<= $nbQuestion['count(*)'] ; $i++){ + $query = $this->prepare('SELECT * FROM NotesParQuestionTp WHERE numTp=? AND numQuestion=? AND idEtudiant=?'); + $query->bindParam(1,$numQcm); + $query->bindParam(2,$i); + $query->bindParam(3,$r['idEtudiant']); + $resultNoteQuestions = $query->execute(); + $noteQuestionRow = $resultNoteQuestions->fetchArray(); + $ligne = $ligne.','.$noteQuestionRow['note']; + } + $ligne = $ligne.','.$r['note']; + fwrite($fileDetail,$ligne."\n"); + //echo $info[0]["givenname"][0].','.$info[0]["postalcode"][0].",".$r['note']."\n"; + fwrite($file, $r['idEtudiant'].','.$info[0]["givenname"][0].','.$info[0]["sn"][0].",".$info[0]["postalcode"][0].",".$r['note']."\n"); + } + fclose($file); + fclose($fileDetail); + } + } + + 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')"); + + + $this->createDateTp(); + + //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();*/ + + + } + + 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')"); + $this->exec("INSERT INTO Demonstration VALUES('NBA',2,1,'Exemple de requête pour selectionner les 2 premières lignes de la table GAME','SELECT * FROM GAME WHERE rownum<3')"); + } + + function createQCM(){ + $this->exec('DROP TABLE Qcm'); + $this->exec('CREATE TABLE Qcm ( numQcm NUMBER, nom STRING,type STRING,introduction STRING)'); + + $this->exec('DROP TABLE QcmQuestion'); + $this->exec('CREATE TABLE QcmQuestion ( numQuestion NUMBER,numQcm NUMBER, question STRING,bareme NUMBER)'); + + $this->exec('DROP TABLE QcmReponse'); + $this->exec('CREATE TABLE QcmReponse ( numQcm NUMBER, numReponse NUMBER, reponse STRING, numQuestion NUMBER, points NUMBER)'); + + $this->exec('DROP TABLE QcmCorrection'); + $this->exec('CREATE TABLE QcmCorrection (numQcm NUMBER, numQuestion NUMBER, numReponse NUMBER)'); + + //------QCM sql --------------// + /*$this->exec("INSERT INTO Qcm VALUES(1,'sql','vraifaux','intro sql')"); + + //Question 1 + $this->exec("INSERT INTO QcmQuestion VALUES(1,1,'Ceci est la question 1',10)"); + + $this->exec("INSERT INTO QcmReponse(numQcm,numReponse,reponse,numQuestion) VALUES(1,1,'Ceci est la reponse 1 de la question 1(fausse)',1)"); + $this->exec("INSERT INTO QcmReponse(numQcm,numReponse,reponse,numQuestion) VALUES(1,2,'Ceci est la reponse 2 de la question 1(Vraie)',1)"); + $this->exec("INSERT INTO QcmReponse(numQcm,numReponse,reponse,numQuestion) VALUES(1,3,'Ceci est la reponse 3 de la question 1(Vraie)',1)"); + + $this->exec("INSERT INTO QcmCorrection VALUES(1,1,2)"); + $this->exec("INSERT INTO QcmCorrection VALUES(1,1,3)"); + + //Question 2 + $this->exec("INSERT INTO QcmQuestion VALUES(2,1,'Ceci est la question 2',9)"); + + $this->exec("INSERT INTO QcmReponse(numQcm,numReponse,reponse,numQuestion) VALUES(1,1,'Ceci est la reponse 1 de la question 2(Vraie)',2)"); + $this->exec("INSERT INTO QcmReponse(numQcm,numReponse,reponse,numQuestion) VALUES(1,2,'Ceci est la reponse 2 de la question 2(fausse)',2)"); + $this->exec("INSERT INTO QcmReponse(numQcm,numReponse,reponse,numQuestion) VALUES(1,3,'Ceci est la reponse 3 de la question 2(fausse)',2)"); + $this->exec("INSERT INTO QcmReponse(numQcm,numReponse,reponse,numQuestion) VALUES(1,4,'Ceci est la reponse 4 de la question 2(fausse)',2)"); + + $this->exec("INSERT INTO QcmCorrection VALUES(1,2,1)"); + + //------QCM EPSWORTH --------------// + $this->exec("INSERT INTO Qcm VALUES(2,'EPSWORTH','test','intro epsworth')"); + + //Question 1 + $this->exec("INSERT INTO QcmQuestion(numQuestion,numQcm,question) VALUES(1,2,'Ceci est la question 1')"); + + $this->exec("INSERT INTO QcmReponse VALUES(2,1,'Ceci est la reponse 1 de la question 1(5)',1,5)"); + $this->exec("INSERT INTO QcmReponse VALUES(2,2,'Ceci est la reponse 2 de la question 1(11)',1,11)"); + $this->exec("INSERT INTO QcmReponse VALUES(2,3,'Ceci est la reponse 3 de la question 1(12)',1,12)"); + + + //Question 2 + $this->exec("INSERT INTO QcmQuestion(numQuestion,numQcm,question) VALUES(2,2,'Ceci est la question 2')"); + + $this->exec("INSERT INTO QcmReponse VALUES(2,1,'Ceci est la reponse 1 de la question 2(5)',2,5)"); + $this->exec("INSERT INTO QcmReponse VALUES(2,2,'Ceci est la reponse 2 de la question 2(11)',2,11)"); + $this->exec("INSERT INTO QcmReponse VALUES(2,3,'Ceci est la reponse 3 de la question 2(12)',2,12)");*/ + + } + + 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 createDateTp(){ + $this->exec('DROP TABLE dateTp'); + $this->exec('CREATE TABLE dateTp ( numTp NUMBER, dateDebut STRING, dateFin STRING)'); + + $this->exec("INSERT INTO dateTp VALUES(2,'20200101','20200814')"); + } + + 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,$aleatoire){ + 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,$aleatoire); + + $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 ajouterQCM($numQcm,$numQuestion,$consigne,$choix,$reponses,$bareme){ + if($this->verificationExistenceQCM($numQcm,$numQuestion)) return false; + $qt = "INSERT INTO QcmQuestion VALUES(?,?,?,?)"; + $prp=$this->prepare($qt); + $prp->bindParam(1, $numQuestion); + $prp->bindParam(2, $numQcm); + $prp->bindParam(3, $consigne); + $prp->bindParam(4, $bareme); + $prp->execute(); + + $i=1; + foreach($choix as $c){ + $q = "INSERT INTO QcmReponse(numQcm,numReponse,reponse,numQuestion) VALUES (?,?,?,?)"; + $stmt = $this->prepare($q); + $stmt->bindParam(1,$numQcm); + $stmt->bindParam(2,$i); + $stmt->bindParam(3,$c); + $stmt->bindParam(4,$numQuestion); + $stmt->execute(); + $i++; + } + + foreach($reponses as $numReponse){ + $qt = "INSERT INTO QcmCorrection VALUES(?,?,?)"; + $prp=$this->prepare($qt); + $prp->bindParam(1,$numQcm); + $prp->bindParam(2, $numQuestion); + $prp->bindParam(3, $numReponse); + $prp->execute(); + } + return true; + } + + function ajouterQCMTest($numQcm,$numQuestion,$consigne,$choixEtPoints){ + if($this->verificationExistenceQCM($numQcm,$numQuestion)) return false; + $qt = "INSERT INTO QcmQuestion(numQuestion,numQcm,question) VALUES(?,?,?)"; + $prp=$this->prepare($qt); + $prp->bindParam(1, $numQuestion); + $prp->bindParam(2, $numQcm); + $prp->bindParam(3, $consigne); + $prp->execute(); + $i=1; + foreach($choixEtPoints as $c ){ + + $res = explode("---",$c); + $q = "INSERT INTO QcmReponse VALUES (?,?,?,?,?)"; + $stmt = $this->prepare($q); + $stmt->bindParam(1,$numQcm); + $stmt->bindParam(2,$i); + $stmt->bindParam(3,$res[0]); + $stmt->bindParam(4,$numQuestion); + $stmt->bindParam(5,$res[1]); + $stmt->execute(); + $i++; + } + return true; + + } + function verificationExistenceQCM($numQcm,$numQuestion){ + $q = "SELECT count(*) FROM QcmQuestion WHERE numQuestion = ? AND numQcm=?"; + $prp=$this->prepare($q); + $prp->bindParam(1, $numQuestion); + $prp->bindParam(2, $numQcm); + $result = $prp->execute(); + $row = $result->fetchArray(); + if($row['count(*)'] == 0) return false; + 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){ + $q = "SELECT count(*) FROM Type WHERE numTp = ?"; + $prp=$this->prepare($q); + $prp->bindParam(1, $tp); + $result = $prp->execute(); + $row = $result->fetchArray(); + if($row['count(*)'] == 0){ + date_default_timezone_set('Europe/Paris'); + $dateD = date('Ymd'); + $dateF = date('Ymd',strtotime('+9 months')); + $q = "INSERT INTO DateTp VALUES(?,?,?)"; + $prp=$this->prepare($q); + $prp->bindParam(1, $tp); + $prp->bindParam(2, $dateD); + $prp->bindParam(3, $dateF); + $result = $prp->execute(); + } + 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(); + } + + function supprimerDemonstration($chapitre, $numDemo){ + $qt = "DELETE FROM Demonstration WHERE chapitre=? AND numDemo=? "; + $prp=$this->prepare($qt); + $prp->bindParam(1, $chapitre); + $prp->bindParam(2, $numDemo); + $prp->execute(); + } + + function supprimerQCM($numQcm,$numQuestion,$type){ + $qt = "DELETE FROM QcmQuestion WHERE numQuestion=? AND numQcm = ?"; + $prp=$this->prepare($qt); + $prp->bindParam(1, $numQuestion); + $prp->bindParam(2, $numQcm); + $prp->execute(); + + $qt = "DELETE FROM QcmReponse WHERE numQuestion=? AND numQcm = ?"; + $prp=$this->prepare($qt); + $prp->bindParam(1, $numQuestion); + $prp->bindParam(2, $numQcm); + $prp->execute(); + + if($type == 'test') return; + $qt = "DELETE FROM QcmCorrection WHERE numQuestion=? AND numQcm = ?"; + $prp=$this->prepare($qt); + $prp->bindParam(1, $numQuestion); + $prp->bindParam(2, $numQcm); + $prp->execute(); + } +} + diff --git a/BD2A/DAL/QCMGateway.php b/BD2A/DAL/QCMGateway.php new file mode 100755 index 0000000..a9fb672 --- /dev/null +++ b/BD2A/DAL/QCMGateway.php @@ -0,0 +1,48 @@ +db=$db; + } + + public function afficherQCM() { + + $query = 'SELECT * FROM Qcm ORDER BY numQcm'; + $query = $this->db->prepare($query); + $resultqcm = $query->execute(); + while($qcm = $resultqcm->fetchArray()){ + $query = 'SELECT * FROM QcmQuestion WHERE numQcm = ? ORDER BY numQuestion '; + $query = $this->db->prepare($query); + $query->bindParam(1, $qcm['numQcm']); + $result = $query->execute(); + $tabQuestions = array(); + //$resultats = $this->db->query('SELECT found_rows()'); + while($q = $result->fetchArray()){ + $reponseQuery = 'SELECT * FROM QcmReponse WHERE numQuestion=? AND numQcm = ? ORDER BY numReponse'; + $stmt = $this->db->prepare($reponseQuery); + $stmt->bindParam(1, $q['numQuestion']); + $stmt->bindParam(2, $qcm['numQcm']); + $reponseResult = $stmt->execute(); + $tabReponses =array(); + while ($r = $reponseResult->fetchArray()){ + $tabReponses[] = new ReponseQCM($r['numReponse'], $r['reponse'], $r['numQuestion']) ; + } + + $tabQuestions[] = new QuestionQCM($q['numQuestion'],$q['question'],$tabReponses,$q['bareme']); + } + $tabQcm[] = new QCM($qcm['numQcm'], $qcm['nom'], $qcm['type'], $tabQuestions, $qcm['introduction']) ; + + } + //die(print_r($tabQcm, true )); + //+die(print_r($tabQuestions, true )); + return $tabQcm; + //die('ook'); + } + +} + + diff --git a/BD2A/DAL/QuestionsGateway.php b/BD2A/DAL/QuestionsGateway.php new file mode 100755 index 0000000..5a2ee34 --- /dev/null +++ b/BD2A/DAL/QuestionsGateway.php @@ -0,0 +1,61 @@ +db=$db; + } + + public function afficherQuestions() { + $tabQuestions=array(); + $query = 'SELECT numTp FROM Correct UNION SELECT numTp FROM FunctionCorrect'; + $query = $this->db->prepare($query); + $result = $query->execute(); + //$nbTpRow = $result->fetchArray(SQLITE3_NUM); + $i = 0; + while ($tp = $result->fetchArray(SQLITE3_NUM)){ + $questionQuery = 'SELECT numTp,numquestion,question,reponse,points FROM Correct WHERE numTp = ? UNION SELECT numTp,numquestion,question,reponse,points FROM FunctionCorrect WHERE numTp = ? '; + $questionQuery = $this->db->prepare($questionQuery); + $questionQuery->bindParam(1, $tp[0]); + $questionQuery->bindParam(2, $tp[0]); + $questionResult = $questionQuery->execute(); + while($q = $questionResult->fetchArray()){ + $tabQuestions[] = new QuestionNote($q['numTp'],$q['numquestion'],$q['question'],$q['reponse'],$q['points']); + } + $tabTp['tp'.$tp[0]] = $tabQuestions ; + unset($tabQuestions); + $tabQuestions = array(); + } + + //die("
".print_r($tabTp)."db->prepare($query); + $result = $query->execute(); + //$nbTpRow = $result->fetchArray(SQLITE3_NUM); + $i = 0; + while ($chapitre = $result->fetchArray(SQLITE3_NUM)){ + $questionQuery = 'SELECT chapitre,numDemo,description,reponse FROM Demonstration WHERE chapitre = ? ORDER BY numDemo'; + $questionQuery = $this->db->prepare($questionQuery); + $questionQuery->bindParam(1, $chapitre[0]); + $questionResult = $questionQuery->execute(); + while($q = $questionResult->fetchArray()){ + $tabQuestions[] = new Question($q['chapitre'],$q['numDemo'],$q['description'],$q['reponse']); + } + $tabChapitre['chapitre'.$chapitre[0]] = $tabQuestions ; + unset($tabQuestions); + $tabQuestions = array(); + } + + //die("
".print_r($tabTp)."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']; + } + } + diff --git a/BD2A/Notes/QCM/notesDetaillees_Accro.txt b/BD2A/Notes/QCM/notesDetaillees_Accro.txt new file mode 100755 index 0000000..e69de29 diff --git a/BD2A/Notes/QCM/notesDetaillees_Audit.txt b/BD2A/Notes/QCM/notesDetaillees_Audit.txt new file mode 100755 index 0000000..e69de29 diff --git a/BD2A/Notes/QCM/notesDetaillees_Epworth.txt b/BD2A/Notes/QCM/notesDetaillees_Epworth.txt new file mode 100755 index 0000000..e69de29 diff --git a/BD2A/Notes/QCM/notesDetaillees_Généalogie.txt b/BD2A/Notes/QCM/notesDetaillees_Généalogie.txt new file mode 100755 index 0000000..75a4809 --- /dev/null +++ b/BD2A/Notes/QCM/notesDetaillees_Généalogie.txt @@ -0,0 +1 @@ +palafour,,,,1,1,1,1,1,1,1,1,1,1,10 diff --git a/BD2A/Notes/QCM/notes_Accro.txt b/BD2A/Notes/QCM/notes_Accro.txt new file mode 100755 index 0000000..e69de29 diff --git a/BD2A/Notes/QCM/notes_Audit.txt b/BD2A/Notes/QCM/notes_Audit.txt new file mode 100755 index 0000000..e69de29 diff --git a/BD2A/Notes/QCM/notes_Epworth.txt b/BD2A/Notes/QCM/notes_Epworth.txt new file mode 100755 index 0000000..e69de29 diff --git a/BD2A/Notes/QCM/notes_Généalogie.txt b/BD2A/Notes/QCM/notes_Généalogie.txt new file mode 100755 index 0000000..dcfe678 --- /dev/null +++ b/BD2A/Notes/QCM/notes_Généalogie.txt @@ -0,0 +1 @@ +palafour,,,,10 diff --git a/BD2A/Notes/tp/notesTpDetaillees_1.txt b/BD2A/Notes/tp/notesTpDetaillees_1.txt new file mode 100644 index 0000000..701eabf --- /dev/null +++ b/BD2A/Notes/tp/notesTpDetaillees_1.txt @@ -0,0 +1,2 @@ +meelaichao,Mohamed El Mehdi,ELAICHAOUI,21709883,1,1 +palafour,,,,1,1 diff --git a/BD2A/Notes/tp/notesTpDetaillees_2.txt b/BD2A/Notes/tp/notesTpDetaillees_2.txt new file mode 100644 index 0000000..b8f355a --- /dev/null +++ b/BD2A/Notes/tp/notesTpDetaillees_2.txt @@ -0,0 +1,2 @@ +meelaichao,Mohamed El Mehdi,ELAICHAOUI,21709883,1,1,1,0,0,,,,3 +palafour,,,,1,1,1,1,0,,1,1,6 diff --git a/BD2A/Notes/tp/notesTpDetaillees_3.txt b/BD2A/Notes/tp/notesTpDetaillees_3.txt new file mode 100644 index 0000000..e69de29 diff --git a/BD2A/Notes/tp/notesTp_1.txt b/BD2A/Notes/tp/notesTp_1.txt new file mode 100644 index 0000000..9a2e1f9 --- /dev/null +++ b/BD2A/Notes/tp/notesTp_1.txt @@ -0,0 +1,2 @@ +meelaichao,Mohamed El Mehdi,ELAICHAOUI,21709883,1 +palafour,,,,1 diff --git a/BD2A/Notes/tp/notesTp_2.txt b/BD2A/Notes/tp/notesTp_2.txt new file mode 100644 index 0000000..0a06cb5 --- /dev/null +++ b/BD2A/Notes/tp/notesTp_2.txt @@ -0,0 +1,2 @@ +meelaichao,Mohamed El Mehdi,ELAICHAOUI,21709883,3 +palafour,,,,6 diff --git a/BD2A/Notes/tp/notesTp_3.txt b/BD2A/Notes/tp/notesTp_3.txt new file mode 100644 index 0000000..e69de29 diff --git "a/BD2A/Traitement/..\\imports\\tp\\tp_historiqueAuto.txt" "b/BD2A/Traitement/..\\imports\\tp\\tp_historiqueAuto.txt" new file mode 100644 index 0000000..53f4904 --- /dev/null +++ "b/BD2A/Traitement/..\\imports\\tp\\tp_historiqueAuto.txt" @@ -0,0 +1,53 @@ +fonction**NBA**2**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**SELECT fpointsmarques('04-MAR-18', 'Tobias Harris') FROM DUAL**1**n**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; +requete**NBA**1**Combien la table palafour.nba contient-elle de tuples ?**select count(*) from palafour.nba;**1**n +requete**NBA**1**Combien la table palafour.nba contient-elle de tuples ?**select count(*) from palafour.nba**1**n +requete**NBA**2**Déterminer pour Kevin Durant pour le match du 30-oct-17 quelle est l équipe qui joue à domicile**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 **1**n +requete**NBA**2**Déterminer pour Kevin Durant pour le match du 30-oct-17 quelle est l équipe qui joue à domicile**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 **5**n +requete**NBA**2**Déterminer pour Kevin Durant pour le match du 30-oct-17 quelle est l équipe qui joue à domicile**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 ;**5**n +requete**NBA**2**Lister le(s) joueur(s) ayant joué le plus de match pendant la saison** SELECT prenomnoms, COUNT(*) FROM STATS GROUP BY prenomnoms HAVING count(*) = (SELECT MAX(c) FROM (SELECT COUNT(*) AS c FROM STATS GROUP BY prenomnoms));**1**n +requete**NBA**2**Lister le(s) joueur(s) ayant joué le plus de match pendant la saison** SELECT prenomnoms, COUNT(*) FROM STATS GROUP BY prenomnoms HAVING count(*) = (SELECT MAX(c) FROM (SELECT COUNT(*) AS c FROM STATS GROUP BY prenomnoms))**1**n +requete**NBA**2**Déterminer pour Kevin Durant pour le match du 30-oct-17 quelle est l équipe qui joue à domicile**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**5**n +requete**NBA**2**Déterminer pour Kevin Durant pour le match du 30-oct-17 quelle est l équipe qui joue à domicile**SELECT idequipe 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**5**n +requete**NBA**2**Lister le(s) joueur(s) ayant joué le plus de match pendant la saison**SELECT prenomnoms, COUNT(*) FROM STATS GROUP BY prenomnoms HAVING count(*) = (SELECT MAX(c) FROM (SELECT COUNT(*) AS c FROM STATS GROUP BY prenomnoms))**1**n +requete**NBA**4**Afficher la date sous la forme "Il est 18 heure 45 minutes et 26 secondes, nous sommes lundi".**SELECT ’il est ’||to_char(sysdate,’HH24’)||’ heure ’||to_char(sysdate,’MI’)|| ’ minutes et ’||to_char(sysdate,’HH24’)||’ secondes, nous somme ’||to_char(sysdate,’DAY’)||’.’ FROM dual**3**n +requete**NBA**4**Afficher la date sous la forme **SELECT ’il est ’||to_char(sysdate,’HH24’)||’ heure ’||to_char(sysdate,’MI’)|| ’ minutes et ’||to_char(sysdate,’HH24’)||’ secondes, nous somme ’||to_char(sysdate,’DAY’) FROM dual**3**n +requete**NBA**4**Afficher la date sous la forme **SELECT ’il est ’||to_char(sysdate,’HH24’)||’ heure ’||to_char(sysdate,’MI’)|| ’ minutes et ’||to_char(sysdate,’HH24’)||’ secondes, nous sommes’||to_char(sysdate,’DAY’) FROM dual**3**n +requete**NBA**4**Afficher la date sous la forme **SELECT 'Il est ’||to_char(sysdate,’HH24’)||’ heure ’||to_char(sysdate,’MI’)|| ’ minutes et ’||to_char(sysdate,’HH24’)||’ secondes, nous sommes’||to_char(sysdate,’DAY’) FROM dual**3**n +requete**NBA**4**Afficher la date sous la forme **SELECT 'Il est ’||to_char(sysdate,’HH24’) FROM dual**3**n +requete**NBA**4**Afficher la date sous la forme **SELECT 'Il est '||to_char(sysdate,'HH24') FROM dual**3**n +requete**NBA**4**Afficher la date sous la forme **SELECT 'il est '||to_char(sysdate,'HH24')||' heure '||to_char(sysdate,'MI')|| ' minutes et '||to_char(sysdate,'HH24')||' secondes, nous somme '||to_char(sysdate,'DAY')||'.' FROM dual**3**n +requete**NBA**4**Afficher le jour de la semaine en toute lettre suivi d’autant de $ qu’il faut pour que la chaine fasse 20 caractères sans espace.**SELECT rpad(rtrim(to_char(sysdate,'DAY')),20,'$') FROM dual**2**n +requete**NBA**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 **SELECT prenomnoms,datematch,points,equipeadverse FROM STATS WHERE points = (SELECT max(points) FROM STATS)**2**n +requete**NBA**2**Lister le(s) joueur(s) ayant joué le plus de match pendant la saison**SELECT prenomnoms, COUNT(*) FROM STATS GROUP BY prenomnoms HAVING count(*) = (SELECT MAX(c) FROM (SELECT COUNT(*) AS c FROM STATS GROUP BY prenomnoms))**2**n +fonction**NBA**2**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**SELECT fpointsmarques('27-NOV-17', 'Julius Randle') FROM DUAL**5**n**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; +requete**NBA**5**Écrire la requête qui donne le joueur ayant évolué le plus longtemps en NBA. Donner ensuite la liste d’équipes dans lesquelles il a évolué en 2017-2018.**SELECT PrenomnomJ FROM JOUEUR WHERE (anneefin-anneedebut)=(SELECT max(anneefin-anneedebut) from JOUEUR)**1**n +requete**NBA**5**Donner ensuite la liste d’équipes dans lesquelles il a évolué en 2017-2018.**SELECT Equipejoueur from STATS WHERE idjoueur= (SELECT idjoueur FROM JOUEUR WHERE (anneefin-anneedebut)=(SELECT max(anneefin-anneedebut) from JOUEUR))**0.5**n +requete**NBA**5**Écrire la requête qui donne le joueur ayant évolué le plus longtemps en NBA. **SELECT PrenomnomJ FROM JOUEUR WHERE (anneefin-anneedebut)=(SELECT max(anneefin-anneedebut) from JOUEUR)**0.5**n +requete**NBA**2**Trouver le nombre de matchs joués par Kevin Durant**SELECT count(*) FROM STATS WHERE prenomnoms='Kevin Durant'**1**n +requete**NBA**5**Écrire la requête qui donne le joueur ayant évolué le plus longtemps en NBA.**SELECT PrenomnomJ FROM JOUEUR WHERE (anneefin-anneedebut)=(SELECT max(anneefin-anneedebut) from JOUEUR)**0.5**n +requete**NBA**5**Donner ensuite la liste d’équipes dans lesquelles il a évolué en 2017-2018**SELECT Equipejoueur from STATS WHERE idjoueur= (SELECT idjoueur FROM JOUEUR WHERE (anneefin-anneedebut)=(SELECT max(anneefin-anneedebut) from JOUEUR))**0.5**n +requete**NBA**5**Écrire la requête qui donne l’équipe qui a le plus de victoires.**SELECT count(idequipedomicile) total, idequipedomicile from GAME where resultatdomicile='Win' Group by idequipedomicile Order by total**3**n +requete**NBA**5**Écrire la requête qui donne le(s) joueur(s) le(s) plus adroit(s) à trois points pour le match du ’25-DEC-17’ contre les Lakers.**Select prenomnoms from (SELECT Datematch, prenomnoms, Tirs3pourcentage t FROM STATS WHERE datematch=’25-DEC-17’ AND Equipeadverse=’LAL’ GROUP BY Datematch, prenomnoms, Tirs3pourcentage) WHERE t= (SELECT max(Tirs3pourcentage) FROM STATS WHERE datematch=’25-DEC-17’ AND Equipeadverse=’LAL’ GROUPE BY Datematch)**3**n +requete**NBA**5**Écrire la requête qui donne l’idequipe de l'équipe qui a le plus de victoires.**SELECT id FROM (SELECT count(idequipedomicile) total, idequipedomicile id from GAME where resultatdomicile=’Win’ Group by idequipedomicile) WHERE total = (SELECT(max (count(idequipedomicile))) from GAME G where G.resultatdomicile=’Win’ Group by idequipedomicile)**3**n +requete**NBA**5**Écrire la requête qui donne l’idequipe de l'équipe qui a le plus de victoires.**SELECT id FROM (SELECT count(idequipedomicile) total, idequipedomicile id from GAME where resultatdomicile='Win' Group by idequipedomicile) WHERE total = (SELECT(max (count(idequipedomicile))) from GAME G where G.resultatdomicile='Win' Group by idequipedomicile)**3**n +requete**NBA**5**Écrire la requête qui donne le(s) joueur(s) le(s) plus adroit(s) à trois points pour le match du ’25-DEC-17’ contre les Lakers.**Select prenomnoms from (SELECT Datematch, prenomnoms, Tirs3pourcentage t FROM STATS WHERE datematch='25-DEC-17' AND Equipeadverse='LAL' GROUP BY Datematch, prenomnoms, Tirs3pourcentage) WHERE t= (SELECT max(Tirs3pourcentage) FROM STATS WHERE datematch='25-DEC-17' AND Equipeadverse='LAL' GROUP BY Datematch)**3**n +requete**NBA**5**Écrire la requête permettant d’obtenir la liste des équipes battues avec les dates des rencontres pour l’équipe qui a le moins de victoire sur la saison.**SELECT Dategame, idequipeexterieur FROM GAME WHERE idequipedomicile='PHO'AND resultatdomicile='Win' UNION SELECT Dategame, idequipedomicile FROM GAME WHERE idequipeexterieur='PHO'AND resultatexterieur='Win'**3**n +requete**NBA**5**Écrire la requête permettant d’afficher la liste des joueurs qui ont fait un triple double sur la saison en donnant leurs statistiques dans les 5 catégories. Un triple double c’est avoir au moins dans 3 catégories des statistiques à 2 chiffres (points, rebonds, passes, contres, interceptions)**SELECT prenomnoms, points, rebondtotal, passes, contres, interceptions FROM Stats JOUEUR WHERE (points>=10 AND rebondtotal>=10 AND passes >=10) OR (points>=10 AND rebondtotal>=10 AND contres >=10) OR (points>=10 AND rebondtotal>=10 AND interceptions >=10) OR (points>=10 AND contres>=10 AND passes >=10) OR (points>=10 AND interceptions>=10 AND passes >=10) OR (points>=10 AND interceptions>=10 AND contres >=10) OR (rebondtotal>=10 AND passes>=10 AND interceptions>=10) OR (rebondtotal>=10 AND passes>=10 AND contres>=10) OR (rebondtotal>=10 AND contres>=10 AND interceptions>=10) OR (passes>=10 AND contres>=10 AND interceptions>=10) **3**n +requete**NBA**5**Écrire la requête permettant d’obtenir la liste des joueurs de plus de 2 mètres pour lesquels il existe des matchs lors desquels ils ont fait des interceptions**SELECT distinct prenomnoms from STATS WHERE interceptions>0 AND idjoueur IN (SELECT idjoueur FROM JOUEUR WHERE Taille>6.56) order by Prenomnoms**2**n +requete**NBA**5**Écrire la requête permettant d’obtenir la liste des joueurs de plus de 2 mètres pour lesquels il existe des matchs lors desquels ils ont fait des interceptions**SELECT distinct prenomnoms from STATS WHERE interceptions>0 AND idjoueur IN (SELECT idjoueur FROM JOUEUR WHERE Taille>6.56) order by Prenomnoms**2**n +requete**NBA**5**Écrire la requête qui, pour un nom d’équipe fixée (Golden State par exemple), trouve la somme des rebonds pris sur l’ensemble de la saison.**Select sum(rebondtotal) from stats Where equipejoueur='GS'**1**n +requete**NBA**5**\'Ecrire la requête permettant d'obtenir la liste des joueurs de plus de 2 m\`etres pour lesquels il existe des matchs lors desquels ils ont fait des interceptions. Sans utiliser l'IDJOUEUR.**SELECT distinct prenomnoms from STATS WHERE interceptions>0 AND PRENOMNOMS IN (SELECT PRENOMNOMJ FROM JOUEUR WHERE Taille>6.56) order by Prenomnoms**2**n +requete**NBA**5**Ecrire la requête permettant d'obtenir la liste des joueurs de plus de 2 m\`etres pour lesquels il existe des matchs lors desquels ils ont fait des interceptions. Sans utiliser l'IDJOUEUR.**SELECT distinct prenomnoms from STATS WHERE interceptions>0 AND PRENOMNOMS IN (SELECT PRENOMNOMJ FROM JOUEUR WHERE Taille>6.56) order by Prenomnoms**2**n +requete**NBA**5**Ecrire la requête permettant d'obtenir la liste des joueurs de plus de 2 métres pour lesquels il existe des matchs lors desquels ils ont fait des interceptions. Sans utiliser l'IDJOUEUR.**SELECT distinct prenomnoms from STATS WHERE interceptions>0 AND PRENOMNOMS IN (SELECT PRENOMNOMJ FROM JOUEUR WHERE Taille>6.56) order by Prenomnoms**2**n +requete**NBA**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 **SELECT prenomnoms,datematch,points,equipeadverse FROM STATS WHERE points = (SELECT max(points) FROM STATS)**1**n +requete**NBA**2**Déterminer pour Kevin Durant pour le match du 30-oct-17 quelle est l équipe qui joue à domicile**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**1**n +fonction**NBA**2**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**SELECT fpointsmarques('01-APR-18', 'Sean Kilpatrick') FROM DUAL**1**n**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; +requete**NBA**5**Écrire la requête permettant d’afficher la liste des joueurs qui ont fait un triple double sur la saison en donnant leurs statistiques dans les 5 catégories. Un triple double c’est avoir au moins dans 3 catégories des statistiques à 2 chiffres (points, rebonds, passes, contres, interceptions)**SELECT prenomnoms, points, rebondtotal, passes, contres, interceptions FROM Stats JOUEUR WHERE (points>=10 AND rebondtotal>=10 AND passes >=10) OR (points>=10 AND rebondtotal>=10 AND contres >=10) OR (points>=10 AND rebondtotal>=10 AND interceptions >=10) OR (points>=10 AND contres>=10 AND passes >=10) OR (points>=10 AND interceptions>=10 AND passes >=10) OR (points>=10 AND interceptions>=10 AND contres >=10) OR (rebondtotal>=10 AND passes>=10 AND interceptions>=10) OR (rebondtotal>=10 AND passes>=10 AND contres>=10) OR (rebondtotal>=10 AND contres>=10 AND interceptions>=10) OR (passes>=10 AND contres>=10 AND interceptions>=10)**3**n +requete**NBA**2**Déterminer pour Kevin Durant pour le match du 30-oct-17 quelle est l équipe qui joue à domicile**SELECT idequipe 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**1**n +requete**NBA**2**Déterminer pour Kevin Durant pour le match du 30-oct-17 quelle est l idequipe de l'équipe qui joue à domicile**SELECT idequipe 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**1**n +fonction**NBA**2**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**SELECT fpointsmarques('30-DEC-17', 'Mario Chalmers') FROM DUAL**1**n**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; +fonction**NBA**2**Ecrire une fonction fpointsmarques qui détermine pour une date de match et un joueur donnés quelle est le nombre de points marqués par ce joueur**SELECT fpointsmarques('30-DEC-17', 'Mario Chalmers') FROM DUAL**1**n**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; +fonction**NBA**2**Ecrire une fonction fpointsmarques qui détermine pour une date de match et un joueur donnés quelle est le nombre de points marqués par ce joueur**SELECT fpointsmarques('30-DEC-17', 'Mario Chalmers') FROM DUAL**1**n**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 +fonction**NBA**2**Ecrire une fonction fpointsmarques qui détermine pour une date de match et un joueur donnés quelle est le nombre de points marqués par ce joueur**SELECT fpointsmarques('30-OCT-17', 'Kevin Durant') FROM DUAL**1**n**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; +fonction**NBA**2**Ecrire une fonction fpointsmarques qui détermine pour une date de match et un joueur donnés quelle est le nombre de points marqués par ce joueur**SELECT fpointsmarques('30-OCT-17', 'Kevin Durant') FROM DUAL**1**n**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; / +fonction**NBA**2**Ecrire une fonction fpointsmarques qui détermine pour une date de match et un joueur donnés quelle est le nombre de points marqués par ce joueur**SELECT fpointsmarques('30-OCT-17', 'Kevin Durant') FROM DUAL**1**n**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; diff --git a/BD2A/Traitement/AffichageDemo.php b/BD2A/Traitement/AffichageDemo.php new file mode 100755 index 0000000..3dd9c29 --- /dev/null +++ b/BD2A/Traitement/AffichageDemo.php @@ -0,0 +1,24 @@ +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 ' Ligne '.$numLigne.' : '; + for($i=0 ; $i< sizeof($oracleRow) ; $i++){ + echo $oracleRow[$i].' ; '; + } + echo ''; +} \ No newline at end of file diff --git a/BD2A/Traitement/AjoutDemonstration.php b/BD2A/Traitement/AjoutDemonstration.php new file mode 100755 index 0000000..8bad431 --- /dev/null +++ b/BD2A/Traitement/AjoutDemonstration.php @@ -0,0 +1,62 @@ +ERREUR : Veuillez remplir tous les champs '; +} + +else if(!is_numeric($_GET['chapitre'])) + echo 'ERREUR : une valeur non numérique à été détectée dans le champ \'Chapitre n° :\' '; + +else { + $reponseQuery = $db->prepare('SELECT count(*) FROM demonstration WHERE chapitre=?'); + $reponseQuery->bindParam(1, $_GET['chapitre']); + $reponseResult = $reponseQuery->execute(); + $reponseRow = $reponseResult->fetchArray(); + $numDemo = $reponseRow['count(*)'] + 1; + + if(isset($_GET['modif'])){ + $numDemo = $_GET['numDemo']; + $db->supprimerDemonstration($_GET['chapitre'], $_GET['numDemo']); + } + + + $isAdd = $db->ajouterDemonstration($_GET['bdd'],$_GET['chapitre'], $numDemo,$_GET['description'], $_GET['reponse']); + if(!$isAdd){ + echo 'ERREUR : la combinaison (numéro de chapitre, numéro de démonstration) existe déjà dans la bdd'; + } + else{ + $trouve=0; + $file = fopen('..\imports\demonstration\demo_historiqueAuto.txt', "a"); + $ligne = $_GET['bdd'].'**'.$_GET['chapitre'].'**'.$_GET['description'].'**'.$_GET['reponse']; + $handle = @fopen('..\imports\demonstration\demo_historiqueAuto.txt', "r"); + if ($handle) + { + while (!feof($handle)) + { + $buffer = fgets($handle); + if(strpos($buffer, $ligne) !== FALSE) + $trouve = 1; + } + fclose($handle); + } + if($trouve==0) fwrite($file, $ligne."\n"); + $trouve = 0; + fclose($file); + + echo 'AJOUT Démonstration n°'.$numDemo.' au chapitre '.$_GET['chapitre'].' avec succès'; + } + + + + +} +//require_once('index.php'); +//header("Location: ../index.php"); + diff --git a/BD2A/Traitement/AjoutQCM.php b/BD2A/Traitement/AjoutQCM.php new file mode 100755 index 0000000..ec02855 --- /dev/null +++ b/BD2A/Traitement/AjoutQCM.php @@ -0,0 +1,69 @@ +prepare('SELECT count(*) FROM Qcm WHERE numQcm= ?'); +$query->bindParam(1, $_GET['numQcm']); +$result = $query->execute(); +$countRow = $result->fetchArray(); + + +if($_GET['nomQcm'] == 'existe' && $countRow['count(*)'] == 0){ + exit("Le numéro de qcm n'existe pas : veuillez remplir le champ 'Nom du Qcm' ou utiliser un numéro de qcm existant"); +} +else if($_GET['nomQcm'] !== 'existe' && $countRow['count(*)'] !== 0){ + $query = $db->prepare('UPDATE Qcm SET nom=? WHERE numQcm= ?'); + $query->bindParam(1, $_GET['nomQcm']); + $query->bindParam(2, $_GET['numQcm']); + $result = $query->execute(); + +} +else if($countRow['count(*)'] == 0){ + $query = $db->prepare('INSERT INTO Qcm VALUES(?,?,?,?)'); + $query->bindParam(1, $_GET['numQcm']); + $query->bindParam(2, $_GET['nomQcm']); + $query->bindParam(3, $_GET['type']); + $query->bindParam(4, $_GET['intro']); + $result = $query->execute(); + +} + +if($_GET['intro'] !== 'nomodif' && $countRow['count(*)'] !== 0){ + $query = $db->prepare('UPDATE Qcm SET introduction=? WHERE numQcm= ?'); + $query->bindParam(1, $_GET['intro']); + $query->bindParam(2, $_GET['numQcm']); + $result = $query->execute(); +} + + +$reponseQuery = $db->prepare('SELECT count(*) FROM QcmQuestion WHERE numQcm= ?'); +$reponseQuery->bindParam(1, $_GET['numQcm']); +$reponseResult = $reponseQuery->execute(); +$reponseRow = $reponseResult->fetchArray(); + +$numQuestion = $reponseRow['count(*)'] + 1; + +$reponses = array(); +if(isset($_GET['modif'])){ + $numQuestion =$_GET['numQuestion']; + $db->supprimerQCM ($_GET['numQcm'],$numQuestion,$_GET['type']); +} + +if($_GET['type']=='test'){ + + $isAdd = $db->ajouterQCMTest($_GET['numQcm'],$numQuestion,$_GET['consigne'],$_GET['choix']); + if(!$isAdd){ + echo 'ERREUR : le numéro de question '.$numQuestion.' existe déjà dans le qcm '.$_GET['numQcm'].''; + } + else echo 'AJOUT QCM avec succès'; +} +else{ + $isAdd = $db->ajouterQCM($_GET['numQcm'],$numQuestion,$_GET['consigne'],$_GET['choix'],$_GET['reponse'],$_GET['baremequestion']); + if(!$isAdd){ + echo 'ERREUR : le numéro de question existe déjà dans la bdd'; + } + else echo 'AJOUT QCM avec succès'; +} + diff --git a/BD2A/Traitement/AjoutQuestion.php b/BD2A/Traitement/AjoutQuestion.php new file mode 100755 index 0000000..3c6c331 --- /dev/null +++ b/BD2A/Traitement/AjoutQuestion.php @@ -0,0 +1,118 @@ +ERREUR1 : Veuillez remplir tous les champs '; +} +else if(!is_numeric($_GET['tp'])) + echo 'ERREUR : une valeur non numérique à été détectée dans le champ \'TP n° :\' '; +else if(!is_numeric($_GET['points'])) + echo 'ERREUR : une valeur non numérique à été détectée dans le champ \'Barème:\' '; +else { + + $reponseQuery = $db->prepare('SELECT count(*) FROM type WHERE numTp=?'); + $reponseQuery->bindParam(1, $_GET['tp']); + $reponseResult = $reponseQuery->execute(); + $reponseRow = $reponseResult->fetchArray(); + $numQuestion = $reponseRow['count(*)'] + 1; + + if(isset($_GET['modif'])){ + $numQuestion = $_GET['num']; + if ($_GET["type"] == 'fonction') + $db->supprimerFonction ($numQuestion, $_GET['tp']); + else if ($_GET["type"] == 'requete') + $db->supprimerRequete($numQuestion, $_GET['tp']); + } + + if ($_GET["type"] == 'requete'){ + + $isAdd = $db->ajouterRequete($_GET['bdd'],$_GET['tp'],$numQuestion,$_GET['consigne'], $_GET['reponse'],$_GET['points'],$_GET['aleatoire']); + if(!$isAdd){ + echo 'ERREUR : la combinaison (numéro de tp, numéro de question) existe déjà dans la bdd'; + } + else{ + $trouve=0; + $file = fopen('..\imports\tp\tp_historiqueAuto.txt', "a"); + $ligne = 'requete**'.$_GET['bdd'].'**'.$_GET['tp'].'**'.$_GET['consigne'].'**'.$_GET['reponse'].'**'.$_GET['points'].'**'.'n'; + $handle = @fopen('..\imports\tp\tp_historiqueAuto.txt', "r"); + if ($handle) + { + while (!feof($handle)) + { + $buffer = fgets($handle); + if(strpos($buffer, $ligne) !== FALSE) + $trouve = 1; + } + fclose($handle); + } + if($trouve==0) fwrite($file, $ligne."\n"); + $trouve = 0; + fclose($file); + if(!isset($_GET['modif'])) + echo 'AJOUT avec succès'; + else echo 'Modification avec succès'; + } + + } + 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 = $_GET['reponse']; + $ffonction = $_GET['fonction']; + } + + $isAdd = $db->ajouterFonction($_GET['bdd'],$_GET['tp'],$numQuestion,$_GET['consigne'], $freponse,$ffonction,$reponse,$_GET['points']); + if(!$isAdd){ + echo 'ERREUR : la combinaison (numéro de tp, numéro de question) existe déjà dans la bdd'; + } + else{ + $trouve=0; + $file = fopen('..\imports\tp\tp_historiqueAuto.txt', "a"); + $ligne = 'fonction**'.$_GET['bdd'].'**'.$_GET['tp'].'**'.$_GET['consigne'].'**'.$freponse.'**'.$_GET['points'].'**'.'n**'.$ffonction; + $handle = @fopen('..\imports\tp\tp_historiqueAuto.txt', "r"); + if ($handle) + { + while (!feof($handle)) + { + $buffer = fgets($handle); + if(strpos($buffer, $ligne) !== FALSE) + $trouve = 1; + } + fclose($handle); + } + if($trouve==0) fwrite($file, $ligne."\n"); + $trouve = 0; + fclose($file); + if(!isset($_GET['modif'])) + echo 'AJOUT succès'; + else echo 'Modification avec succès'; + } + } + } + + +} +//require_once('index.php'); +//header("Location: ../index.php"); + diff --git a/BD2A/Traitement/Correcteur.php b/BD2A/Traitement/Correcteur.php new file mode 100755 index 0000000..df2c28d --- /dev/null +++ b/BD2A/Traitement/Correcteur.php @@ -0,0 +1,398 @@ +getConn(); + +$_SESSION['fi'] = array(); +$cmpt = 0; +$numQuestion = 0; +header("Cache-Control: no cache"); + +//$user = "mehdi"; +$user = $_SERVER['REMOTE_USER']; + + $textbox = $_GET['textbox']; + /*$numQuestion++; + $ic = "$numQuestion";*/ + + $numQuestion = $_GET['numQuestion']; + $numTp = $_GET['numTp']; + $_SESSION['fi'][$numQuestion] = $textbox; + $UserQuery = oci_parse($conn, $textbox); + $reponseUser = oci_execute($UserQuery); + + $typeQuery = $db->prepare('SELECT type FROM Type WHERE numQuestion = ? AND numTp= ?'); + $typeQuery->bindParam(1, $numQuestion); + $typeQuery->bindParam(2, $numTp); + $resultType = $typeQuery->execute(); + $typeRow = $resultType->fetchArray(); + $err = 0; + $verif =0; + + //si la question attend un SELECT + + if($typeRow['type'] == 'query'){ + //