From f66e40340d62b5c694093bc6d10f99337382d12a Mon Sep 17 00:00:00 2001 From: Debulois Date: Fri, 18 Mar 2022 13:22:30 +0100 Subject: Réécriture du JS & Modifications de la gestion des informations de l'utilisateur et d'autres trucs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Database/meth_dbadmin.php | 11 +--- Database/meth_dbmission.php | 8 +-- Database/meth_dbsearch.php | 35 ++++++++--- Database/meth_dbuser.php | 76 +++++++++++++++++------ Statics/Js/index.js | 33 ++++++++++ Statics/Js/main.js | 59 ++---------------- Statics/Js/message.js | 26 ++++++++ Statics/Js/userinfo.js | 106 ++++++++++++++++++++++++++++++++ Views/Includes/en/message.php | 64 +++++++++++-------- Views/Includes/en/text.php | 27 ++++---- Views/Includes/fr/message.php | 68 ++++++++++++-------- Views/Includes/fr/text.php | 25 ++++---- Views/Includes/incl_form_admin.php | 4 +- Views/Includes/incl_form_userInfo.php | 73 +++++++++++++++------- Views/Includes/incl_global_message.php | 14 ++++- Views/Includes/incl_table_myMission.php | 2 +- Views/message.php | 1 + Wrapper/Functions/func_info.php | 16 ++--- Wrapper/Functions/func_login.php | 3 +- Wrapper/wrapper.php | 54 +++++++++------- favicon.ico | Bin 0 -> 41662 bytes index.php | 1 + todo.txt | 2 +- 23 files changed, 479 insertions(+), 229 deletions(-) create mode 100644 Statics/Js/index.js create mode 100644 Statics/Js/message.js create mode 100644 Statics/Js/userinfo.js create mode 100644 favicon.ico diff --git a/Database/meth_dbadmin.php b/Database/meth_dbadmin.php index 32d6077..883063b 100644 --- a/Database/meth_dbadmin.php +++ b/Database/meth_dbadmin.php @@ -15,8 +15,8 @@ class DbAdmin extends DbMain { // https://www.php.net/manual/fr/pdostatement.fetch.php // "PDO::FETCH_ASSOC: retourne un tableau indexé // par le nom de la colonne comme retourné dans le jeu de résultats" - $data = $this->exec_cmd($reqGetAll, array())->fetchAll(PDO::FETCH_ASSOC); - return $data; + $result = $this->exec_cmd($reqGetAll, array())->fetchAll(PDO::FETCH_ASSOC); + return $result; } // https://stackoverflow.com/questions/1361340/how-can-i-do-insert-if-not-exists-in-mysql @@ -44,13 +44,6 @@ class DbAdmin extends DbMain { return 0; } } - - // Récupérer toutes les infos de la table jobCategory - final public function get_all_job_category() { - $reqGetAll = "SELECT * FROM ".$this->tableJobCategory; - $data = $this->exec_cmd($reqGetAll, array())->fetchAll(PDO::FETCH_ASSOC); - return $data; - } // Ajout d'une categorie final public function job_category_register($jobCategoryNameEn, $jobCategoryNameFr) { diff --git a/Database/meth_dbmission.php b/Database/meth_dbmission.php index 006f572..f39f0b6 100644 --- a/Database/meth_dbmission.php +++ b/Database/meth_dbmission.php @@ -42,8 +42,8 @@ class DbMission extends DbMain { LEFT JOIN ".$this->tableUserInfo." ON ".$this->tableMission.".missionId = ".$this->tableUserInfo.".userId WHERE proId = ?"; - $data = $this->exec_cmd($reqGetAllMission, array($id))->fetchAll(PDO::FETCH_ASSOC); - return $data; + $result = $this->exec_cmd($reqGetAllMission, array($id))->fetchAll(PDO::FETCH_ASSOC); + return $result; } // Compte le nombre de mission d'un consultant par son nom @@ -52,8 +52,8 @@ class DbMission extends DbMain { INNER JOIN ".$this->tableUserInfo." ON ".$this->tableMission.".proId = ".$this->tableUserInfo.".userId WHERE lastname = ?"; - $data = $this->exec_cmd($reqCountMission, array($name))->fetchAll(PDO::FETCH_ASSOC); - return $data; + $result = $this->exec_cmd($reqCountMission, array($name))->fetchAll(PDO::FETCH_ASSOC); + return $result; } } \ No newline at end of file diff --git a/Database/meth_dbsearch.php b/Database/meth_dbsearch.php index 8a95a67..5104d15 100644 --- a/Database/meth_dbsearch.php +++ b/Database/meth_dbsearch.php @@ -5,7 +5,7 @@ // **************************************************************************** // Infos pour les "join": // https://www.freecodecamp.org/news/sql-joins-tutorial/ -// + // Import de dbmain require_once(dirname( __FILE__ )."/dbmain.php"); // Extension de cette classe avec dbmain @@ -15,8 +15,8 @@ class DbSearch extends DbMain { final public function get_user_account_by_id($id) { $reqSearchUser = "SELECT userId, email, inscriptionDate, isClient, isPro, isAdmin FROM ".$this->tableUserAccount." WHERE userId = ?"; - $data = $this->exec_cmd($reqSearchUser, array($id))->fetch(PDO::FETCH_ASSOC); - return $data; + $result = $this->exec_cmd($reqSearchUser, array($id))->fetch(PDO::FETCH_ASSOC); + return $result; } // Récupération des infos d'un utilisateur par son id @@ -25,8 +25,8 @@ class DbSearch extends DbMain { capability, description, phoneNumber, adress, zipCode, city FROM ".$this->tableUserInfo." WHERE userId = ?"; - $data = $this->exec_cmd($reqGetUserInfo, array($id))->fetchAll(PDO::FETCH_ASSOC); - return $data; + $result = $this->exec_cmd($reqGetUserInfo, array($id))->fetchAll(PDO::FETCH_ASSOC); + return $result; } // Récupération des infos d'un pro par son nom @@ -36,19 +36,36 @@ class DbSearch extends DbMain { INNER JOIN ".$this->tableUserAccount." ON ".$this->tableUserInfo.".userId = ".$this->tableUserAccount.".userId WHERE isPro = '1' AND lastname LIKE CONCAT('%', ?, '%')"; - $data = $this->exec_cmd($reqSearchConsultant, array($research))->fetchAll(PDO::FETCH_ASSOC); - return $data; + $result = $this->exec_cmd($reqSearchConsultant, array($research))->fetchAll(PDO::FETCH_ASSOC); + return $result; } + // Récupération des emploies associés à un pro + final public function get_pro_job_category($id) { + $reqGetAll = "SELECT jobCategoryId FROM ".$this->tableUserJob." WHERE userId = ?"; + $result = $this->exec_cmd($reqGetAll, array($id))->fetchAll(PDO::FETCH_NUM); + $proJobs = []; + for ($i = 0; $i < count($result); $i++) { + array_push($proJobs, $result[$i][0]); + } + return $proJobs; + } + // Récupération des notes d'un consultant par son nom final public function get_pro_note_by_lastname($name) { $reqCountMission = "SELECT note FROM ".$this->tableMission." INNER JOIN ".$this->tableUserInfo." ON ".$this->tableMission.".proId = ".$this->tableUserInfo.".userId WHERE lastname = ?"; - $data = $this->exec_cmd($reqCountMission, array($name))->fetchAll(PDO::FETCH_ASSOC); - return $data; + $result = $this->exec_cmd($reqCountMission, array($name))->fetchAll(PDO::FETCH_ASSOC); + return $result; } + // Récupérer toutes les infos de la table jobCategory + final public function get_job_category_all() { + $reqGetAll = "SELECT * FROM ".$this->tableJobCategory; + $result = $this->exec_cmd($reqGetAll, array())->fetchAll(PDO::FETCH_ASSOC); + return $result; + } } ?> \ No newline at end of file diff --git a/Database/meth_dbuser.php b/Database/meth_dbuser.php index c0afb8c..1b62b46 100644 --- a/Database/meth_dbuser.php +++ b/Database/meth_dbuser.php @@ -24,7 +24,8 @@ class DbUser extends DbMain { // Préparation de la requète $reqAddUser = "INSERT INTO ".$this->tableUserAccount." (email, password, inscriptionDate, isClient, isPro, isAdmin) - VALUES (?, ?, ?, ?, ?, ?)"; + VALUES + (?, ?, ?, ?, ?, ?)"; // Execution de la requète $this->exec_cmd($reqAddUser, array($email, @@ -51,9 +52,9 @@ class DbUser extends DbMain { // Chiffrement du mot de passe $crypt = $this->crypt_pass($pass); // Execution de la requète - $data = $this->exec_cmd($reqCheckCredential, array($email))->fetchAll(PDO::FETCH_ASSOC); + $result = $this->exec_cmd($reqCheckCredential, array($email))->fetchAll(PDO::FETCH_ASSOC); // Vérifiaction de correspondance email & pass - foreach ($data as $rows) { + foreach ($result as $rows) { if ($rows["password"] == $crypt) { return $rows["userId"]; } @@ -61,24 +62,59 @@ class DbUser extends DbMain { } // Mise à jour des infos d'un utilisateur - final public function user_infos_update($lastname, $firstname, $job, $degree, - $capability, $description, $phoneNumber, - $adress, $zipCode, $city, $userId) { + final public function user_infos_update($userInfos, $userId, $isPro, $userJobs = null) { // Préparation de la requète pour mise à jour des infos - $reqAddInfo = "REPLACE INTO ".$this->tableUserInfo." - (lastname, firstname, job, degree, capability, - description, phoneNumber, adress, zipCode, city, userId) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; - // Exécution de la requète - $this->exec_cmd($reqAddInfo, - array($lastname, $firstname, $job, $degree, - $capability, $description, $phoneNumber, - $adress, $zipCode, $city, $userId - ) - ); + // J'ai préféré faire deux requètes distinctes et ne pas utiliser des valeurs + // passées par $POST ($key => $value) pour gérer les noms des colonnes + // car je préfère les passer en "dur" dans mes requêtes (risque d'injection SQL?). + $reqAddInfoClient = "UPDATE ".$this->tableUserInfo." + SET + lastname = ?, firstname = ?, phoneNumber = ?, + adress = ?, zipCode = ?, city = ? + WHERE + userId = ?"; + $reqAddInfoPro = "UPDATE ".$this->tableUserInfo." + SET + lastname = ?, firstname = ?, phoneNumber = ?, + adress = ?, zipCode = ?, city = ?, + degree = ?, capability = ?, description = ? + WHERE + userId = ?"; + $reqAddInfoProJobs = "INSERT INTO ".$this->tableUserJob." + (jobCategoryId, userId) + VALUES + (?, ?)"; + $reqRemoveInfoProJobs = "DELETE FROM ".$this->tableUserJob." + WHERE + jobCategoryId = ? + AND + userId = ?"; + if (!$isPro) { + // Exécution de la requète + // https://www.php.net/manual/fr/function.array-values.php + // Pour passer de dict a list -> array_values() + $args = array_values($userInfos); + array_push($args, $userId); + $this->exec_cmd($reqAddInfoClient, array_push($args, $userId)); + } else { + // TODO: Commenter + // https://stackoverflow.com/questions/15986235/how-to-use-json-stringify-and-json-decode-properly + $selectedJobs = json_decode(html_entity_decode($userInfos["jobs"])); + unset($userInfos["jobs"]); + $jobsAdded = array_values(array_diff($selectedJobs, $userJobs)); + $jobsRemoved = array_values(array_diff($userJobs, $selectedJobs)); + $args = array_values($userInfos); + array_push($args, $userId); + $this->exec_cmd($reqAddInfoPro, $args); + for ($i = 0; $i < count($jobsAdded); $i++) { + $this->exec_cmd($reqAddInfoProJobs, array($jobsAdded[$i], $userId)); + } + for ($i = 0; $i < count($jobsRemoved); $i++) { + $this->exec_cmd($reqRemoveInfoProJobs, array($jobsRemoved[$i], $userId)); + } + } } - // **************************************************************************** // Gestion du token-autologin // **************************************************************************** @@ -89,9 +125,9 @@ class DbUser extends DbMain { $reqCheckToken = "SELECT userId, tokenAutoLogin FROM ".$this->tableUserAccount." WHERE email = ?"; // Exécution de la requète - $data = $this->exec_cmd($reqCheckToken, array($email))->fetchAll(PDO::FETCH_ASSOC); + $result = $this->exec_cmd($reqCheckToken, array($email))->fetchAll(PDO::FETCH_ASSOC); // Vérifiaction de correspondance email & jeton d'auto-connection - foreach ($data as $rows) { + foreach ($result as $rows) { if ($rows["tokenAutoLogin"] == $token) { return $rows["userId"]; } diff --git a/Statics/Js/index.js b/Statics/Js/index.js new file mode 100644 index 0000000..1c89567 --- /dev/null +++ b/Statics/Js/index.js @@ -0,0 +1,33 @@ + +// **************************************************************************** +// INDEX +// **************************************************************************** + +// Slideshow +function start_slideshow() { + let imageNumber = 1; + let images = [ + "/Medias/Images/slide0.jpg", + "/Medias/Images/slide1.jpg", + "/Medias/Images/slide2.jpg" + ]; + + setInterval(() => { + // Changement del'image de fond de de la div + document.getElementById("slideshow").style.backgroundImage = `url("${images[imageNumber]}")`; + // Untoggle les précedents + // Utilisation de ternary, utilisation: condition ? Sivrai : Sifaux + document.getElementById(`textSlide${imageNumber !== 0 ? imageNumber - 1 : images.length - 1}`).classList.toggle("show"); + document.getElementById(`indicatorSlide${imageNumber !== 0 ? imageNumber - 1 : images.length - 1}`).classList.toggle("slideSelected"); + // Toggle le nouveau texte & selecteur + document.getElementById(`textSlide${imageNumber}`).classList.toggle("show"); + document.getElementById(`indicatorSlide${imageNumber}`).classList.toggle("slideSelected") + // +1 sauf si fin + if(imageNumber < images.length - 1) { + imageNumber++; + } else { + imageNumber = 0; + } + } + ,5000); +} diff --git a/Statics/Js/main.js b/Statics/Js/main.js index 120bfb3..b4d0894 100644 --- a/Statics/Js/main.js +++ b/Statics/Js/main.js @@ -1,61 +1,12 @@ -// +// **************************************************************************** +// Main +// **************************************************************************** + // Site web utilisés pour JS: // https://www.w3schools.com/js/default.asp -// https://stackoverflow.com/ -// +// https://stackoverflow.com/ // Changement de langue document.getElementById("langSel").addEventListener("change", () => { document.getElementById("langForm").submit(); }); - -// Redirection -function redirect(page) { - window.location.href = `${page}.php`; -} - -// Timer pour message -function start_timer() { - // var -> global, let -> local{} - let seconds = 3; - let text = document.getElementById("redirect").innerHTML; - setInterval(() => { - if (seconds > 0) { - document.getElementById("redirect").innerHTML = `${text} ${seconds}.`; - seconds --; - } else { - document.getElementById("redirect").innerHTML = `${text} ${seconds}.`; - redirect("/index"); - } - }, - 1000); -} - -// Slideshow -function start_slideshow() { - let imageNumber = 1; - let images = [ - "/Medias/Images/slide0.jpg", - "/Medias/Images/slide1.jpg", - "/Medias/Images/slide2.jpg" - ]; - - setInterval(() => { - // Changement del'image de fond de de la div - document.getElementById("slideshow").style.backgroundImage = `url("${images[imageNumber]}")`; - // Untoggle les précedents - // Utilisation de ternary, utilisation: condition ? Sivrai : Sifaux - document.getElementById(`textSlide${imageNumber !== 0 ? imageNumber - 1 : images.length - 1}`).classList.toggle("show"); - document.getElementById(`indicatorSlide${imageNumber !== 0 ? imageNumber - 1 : images.length - 1}`).classList.toggle("slideSelected"); - // Toggle le nouveau texte & selecteur - document.getElementById(`textSlide${imageNumber}`).classList.toggle("show"); - document.getElementById(`indicatorSlide${imageNumber}`).classList.toggle("slideSelected") - // +1 sauf si fin - if(imageNumber < images.length - 1) { - imageNumber++; - } else { - imageNumber = 0; - } - } - ,5000); -} diff --git a/Statics/Js/message.js b/Statics/Js/message.js new file mode 100644 index 0000000..55eff48 --- /dev/null +++ b/Statics/Js/message.js @@ -0,0 +1,26 @@ + +// **************************************************************************** +// MESSAGES +// **************************************************************************** + +// Redirection +function redirect(page) { + window.location.href = `/${page}.php`; +} + +// Timer pour message +function start_timer(page) { + // var -> global, let -> local{} + let seconds = 1; + let text = document.getElementById("redirect").innerHTML; + setInterval(() => { + if (seconds > 0) { + document.getElementById("redirect").innerHTML = `${text} ${seconds}.`; + seconds --; + } else { + document.getElementById("redirect").innerHTML = `${text} ${seconds}.`; + redirect(page); + } + }, + 1000); +} diff --git a/Statics/Js/userinfo.js b/Statics/Js/userinfo.js new file mode 100644 index 0000000..6b4c1d9 --- /dev/null +++ b/Statics/Js/userinfo.js @@ -0,0 +1,106 @@ + +// **************************************************************************** +// USERINFO +// **************************************************************************** +// Mes sources pour créer cette partie: +// https://stackoverflow.com/questions/1085801/get-selected-value-in-dropdown-list-using-javascript +// https://stackoverflow.com/questions/47951287/dynamically-add-li-to-ul-javascript +// https://developer.mozilla.org/en-US/docs/Web/API/Document/createTextNode +// https://www.encodedna.com/javascript/how-to-get-all-li-elements-in-ul-using-javascript.htm +// https://www.geeksforgeeks.org/javascript-convert-an-array-to-json/ +// https://stackoverflow.com/questions/17785592/difference-between-json-stringify-and-json-parse +// https://www.w3docs.com/snippets/javascript/how-to-remove-an-element-from-an-array-in-javascript.html +// On passe par du JSON pour passer la liste des emplois du pro + +// **************************************************************************** +// GLOBAL +// **************************************************************************** +var payload = []; +var dictJobs = {}; + +// **************************************************************************** +// FONCTIONS ANNEXES +// **************************************************************************** +// Récupération des possibles emplois et stockage dans une variable +function init_dict_jobs() { + // Récupération des emplois disponibles + let selJob = document.getElementById("jobsSel"); + + // Pour chaque emploi disponible + for (i = 0; i < selJob.length; i ++) { + if (selJob[i].value !== "") { + // Création d'un dictionnaire -> "Nom Emploi": "ID" + dictJobs[selJob[i].text] = selJob[i].value; + } + } +} + +// Création et ajout d'un bouton "supprimmer" +function add_bouton_rm(li, jobsId) { + // Création et configuration du bouton + let buttonDel = document.createElement("button"); + buttonDel.type = "button"; + buttonDel.innerHTML = ""; + buttonDel.onclick = () => {remove(li, jobsId);}; + + // Ajout du boutton au "li" passé en argument + li.appendChild(buttonDel); +} + +// **************************************************************************** +// FONCTIONS PRINCIPALES +// **************************************************************************** +// Initiation +function init() { + // Peuplement du dictionnaire des emploies "Nom Emploi": "ID" + init_dict_jobs(); + + // Récupération des emplois déja présent + let jobs = document.getElementById("jobsList").getElementsByTagName("li"); + + // Pour chaque emploi déja enregistré + for (i = 0; i < jobs.length; i ++) { + // Ajout de chaques choix à la liste final "payload" + payload.push(dictJobs[jobs[i].innerHTML]); + // Ajout d'un id et d'un bouton remove à chaque "li". + jobs[i].id = "jobId_" + dictJobs[jobs[i].innerHTML]; + add_bouton_rm(jobs[i], dictJobs[jobs[i].innerHTML]); + } + + // Transformation de la liste des emplois choisis en JSON + // et inscription de ce dernier dans la "value" de l'input "jobs". + document.getElementById("jobs").value = JSON.stringify(payload); +} + +// Ajout d'un emploi +function add() { + // Récupération du nom du choix dans le "select" des emplois + let jobName = document.getElementById("jobsSel").options[jobsSel.selectedIndex].text; + + // Si l'emploi n'est pas deja dans "payload" + // et si il fait bien partie du dictionnaire de tous les emplois + if (jobName in dictJobs && !payload.includes(dictJobs[jobName])) { + // Ajout à payload + payload.push(dictJobs[jobName]); + // Création, configuration et ajout du nouveau "li" + let li = document.createElement("li"); + li.id = "jobId_" + dictJobs[jobName]; + li.appendChild(document.createTextNode(jobName)); + add_bouton_rm(li, dictJobs[jobName]); + document.getElementById("jobsList").appendChild(li); + // Transformation de la liste des emplois choisis en JSON + // et inscription de ce dernier dans la "value" de l'input "jobs". + document.getElementById("jobs").value = JSON.stringify(payload); + } +} + +// Suppression d'un emploi +function remove(li, jobsId) { + // Suppression de l'emploi dans "payload" + payload.splice(payload.indexOf(jobsId), 1); + // Suppression du "li" de l'emploi + document.getElementById("jobsList").removeChild(li); + // Transformation de la liste des emplois choisis en JSON + // et inscription de ce dernier dans la "value" de l'input "jobs". + document.getElementById("jobs").value = JSON.stringify(payload); +} diff --git a/Views/Includes/en/message.php b/Views/Includes/en/message.php index 6e5955f..50417a3 100644 --- a/Views/Includes/en/message.php +++ b/Views/Includes/en/message.php @@ -11,89 +11,105 @@ $message = [ ["success" => true, "title" => "Delete an user.", "info" => "User deleted !", - "timer" => true], + "timer" => true, + "toSrc" => true], // 1 Message échec ["success" => false, "title" => "Delete an user.", "info" => "No user was deleted.", - "timer" => true], + "timer" => true, + "toSrc" => true], // Informations de l'utilisateur // 2 Message réussitee ["success" => true, - "title" => "Update user information.", - "info" => "User informations updated !", - "timer" => true], + "title" => "Update user information.", + "info" => "User informations updated !", + "timer" => true, + "toSrc" => true], // Login sans cookie // 3 Message réussitee ["success" => true, - "title" => "Login.", - "info" => "Successfully logged in!", - "timer" => true], + "title" => "Login.", + "info" => "Successfully logged in!", + "timer" => true, + "toSrc" => false], // 4 Message échec ["success" => false, "title" => "Login.", "info" => "Error bad credentials.", - "timer" => true], + "timer" => true, + "toSrc" => true], // Login avec cookie // 5 Message réussitee ["success" => true, - "title" => "", - "info" => "", - "timer" => false], + "title" => "", + "info" => "", + "timer" => false, + "toSrc" => false], // 6 Message échec ["success" => false, "title" => "Login cookie.", "info" => "Error with the cookie auto-login.", - "timer" => true], + "timer" => true, + "toSrc" => false], // Log out // 7 Message global ["success" => true, - "title" => "Log out.", - "info" => "Successefuly logged out!", - "timer" => true], + "title" => "Log out.", + "info" => "Successefuly logged out!", + "timer" => true, + "toSrc" => false], // Ajout mission // 8 Message réussitee ["success" => true, "title" => "Register a mission.", "info" => "Mission registered !", - "timer" => true], + "timer" => true, + "toSrc" => true], // 9 Message échec ["success" => false, "title" => "Register a mission.", "info" => "Error, probably wrong consultant ID.", - "timer" => true], + "timer" => true, + "toSrc" => true], // Ajout utilisateur // 10 Message réussitee ["success" => true, "title" => "Register an user.", "info" => "User successfully registered !", - "timer" => true], + "timer" => true, + "toSrc" => true], // 11 Message échec ["success" => false, "title" => "Register an user.", "info" => "Error, user not registered.", - "timer" => true], + "timer" => true, + "toSrc" => true], // Ajout categorie // 12 Message réussitee ["success" => true, "title" => "Add a job category.", "info" => "Category added !", - "timer" => true], + "timer" => true, + "toSrc" => true], // 13 Message échec ["success" => false, "title" => "Add a job category.", "info" => "Category not added.", - "timer" => true], + "timer" => true, + "toSrc" => true], // Suppression categorie // 14 Message réussitee ["success" => true, "title" => "Deletion of a job category.", "info" => "Category deleted !", - "timer" => true], + "timer" => true, + "toSrc" => true], // 15 Message échec ["success" => false, "title" => "Deletion of a job category.", "info" => "Category not deleted !", - "timer" => true], + "timer" => true, + "toSrc" => true], ]; ?> \ No newline at end of file diff --git a/Views/Includes/en/text.php b/Views/Includes/en/text.php index 1111e35..73aa268 100644 --- a/Views/Includes/en/text.php +++ b/Views/Includes/en/text.php @@ -18,18 +18,19 @@ $text = [ "main" => "Made by Debulois Quentin for my professional folder.
December 2021, all rights reserved.", ], "incl_form_userInfo" => [ - "h2" => "Informations about the user.", - "lastname" => "Last name", - "firstname" => "First name", - "job" => "Job", - "degree" => "Degree", - "capability" => "Capacities", - "description" => "Descriptions", - "phoneNumber" => "Phone number", - "adress" => "Adress", - "zipCode" => "Zip code", - "city" => "City", - "submit" => "Modify" + "h2" => "Informations about the user.", + "lastname" => "Last name", + "firstname" => "First name", + "phoneNumber" => "Phone number", + "adress" => "Adress", + "zipCode" => "Zip code", + "city" => "City", + "jobsSel" => "Jobs", + "jobsAdd" => "Add", + "degree" => "Degree", + "capability" => "Capacities", + "description" => "Descriptions", + "submit" => "Modify" ], "incl_form_login" => [ "h2" => "Login", @@ -61,7 +62,7 @@ $text = [ "lang" => "Language", "btnLang" => "Select" ], - "incl_form register" => [ + "incl_form_register" => [ "h2" => "Form to sign-in", "email" => "Email", "password" => "Password", diff --git a/Views/Includes/fr/message.php b/Views/Includes/fr/message.php index 408bd82..dbf66f9 100644 --- a/Views/Includes/fr/message.php +++ b/Views/Includes/fr/message.php @@ -9,91 +9,107 @@ $message = [ // Delete // 0 Message réussitee ["success" => true, - "title" => "Supprimer un utilisateur.", - "info" => "Utilisateur Supprimé !", - "timer" => true], + "title" => "Supprimer un utilisateur.", + "info" => "Utilisateur Supprimé !", + "timer" => true, + "toSrc" => true], // 1 Message échec ["success" => false, "title" => "Supprimer un utilisateur.", "info" => "Aucun utilisateur supprimé.", - "timer" => true], + "timer" => true, + "toSrc" => true], // Informations de l'utilisateur // 2 Message réussitee ["success" => true, - "title" => "Modification des infos de l'utilisateur.", - "info" => "Informations mises à jour !", - "timer" => true], + "title" => "Modification des infos de l'utilisateur.", + "info" => "Informations mises à jour !", + "timer" => true, + "toSrc" => true], // Login sans cookie // 3 Message réussitee ["success" => true, - "title" => "Connection.", - "info" => "Connection réussie !", - "timer" => true], + "title" => "Connection.", + "info" => "Connection réussie !", + "timer" => true, + "toSrc" => false], // 4 Message échec ["success" => false, "title" => "Connection.", "info" => "Erreur, mauvais email / mot de passe.", - "timer" => true], + "timer" => true, + "toSrc" => true], // Login avec cookie // 5 Message réussitee ["success" => true, - "title" => "", - "info" => "", - "timer" => false], + "title" => "", + "info" => "", + "timer" => false, + "toSrc" => false], // 6 Message échec ["success" => false, "title" => "Connection avec cookie.", "info" => "Erreur lors de la connection automatique.", - "timer" => true], + "timer" => true, + "toSrc" => false], // Log out // 7 Message global ["success" => true, - "title" => "Déconnection.", - "info" => "Vous êtes déconnecté!", - "timer" => true], + "title" => "Déconnection.", + "info" => "Vous êtes déconnecté!", + "timer" => true, + "toSrc" => false], // Ajout mission // 8 Message réussitee ["success" => true, "title" => "Enregistrement d'une mission.", "info" => "Mission enregistrée !", - "timer" => true], + "timer" => true, + "toSrc" => true], // 9 Message échec ["success" => false, "title" => "Enregistrement d'une mission.", "info" => "Erreur, l'ID du consultant est probablement faux.", - "timer" => true], + "timer" => true, + "toSrc" => true], // Ajout utilisateur // 10 Message réussitee ["success" => true, "title" => "Inscription", "info" => "Utilisateur inscrit !", - "timer" => true], + "timer" => true, + "toSrc" => true], // 11 Message échec ["success" => false, "title" => "Inscription.", "info" => "Erreur, utilisateur non enregistré.", - "timer" => true], + "timer" => true, + "toSrc" => true], // Ajout categorie // 12 Message réussitee ["success" => true, "title" => "Ajout d'une categorie.", "info" => "Categorie ajoutée !", - "timer" => true], + "timer" => true, + "toSrc" => true], // 13 Message échec ["success" => false, "title" => "Ajout d'une categorie.", "info" => "Categorie non ajoutée.", - "timer" => true], + "timer" => true, + "toSrc" => true], // Suppression categorie // 14 Message réussitee ["success" => true, "title" => "Suppression d'une categorie.", "info" => "Categorie supprimée !", - "timer" => true], + "timer" => true, + "toSrc" => true], // 15 Message échec ["success" => false, "title" => "Suppression d'une categorie.", "info" => "Categorie non supprimée.", - "timer" => true], + "timer" => true, + "toSrc" => true], ]; ?> \ No newline at end of file diff --git a/Views/Includes/fr/text.php b/Views/Includes/fr/text.php index 3b7b989..dd6d655 100644 --- a/Views/Includes/fr/text.php +++ b/Views/Includes/fr/text.php @@ -18,18 +18,19 @@ $text = [ "main" => "Réalisé par Debulois Quentin pour mon dossier professionel.
Decembre 2021, tous droits réservés.", ], "incl_form_userInfo" => [ - "h2" => "Informations sur l'utilisateur.", - "lastname" => "Nom", - "firstname" => "Prénom", - "job" => "Emploi", - "degree" => "Diplômes", - "capability" => "Capacités", - "description" => "Description", - "phoneNumber" => "Numéro de télephone", - "adress" => "Adresse", - "zipCode" => "Code postal", - "city" => "Ville", - "submit" => "Modifier" + "h2" => "Informations sur l'utilisateur.", + "lastname" => "Nom", + "firstname" => "Prénom", + "phoneNumber" => "Numéro de télephone", + "adress" => "Adresse", + "zipCode" => "Code postal", + "city" => "Ville", + "jobsSel" => "Emplois", + "jobsAdd" => "Ajouter", + "degree" => "Diplômes", + "capability" => "Capacités", + "description" => "Description", + "submit" => "Modifier" ], "incl_form_login" => [ "h2" => "Identification", diff --git a/Views/Includes/incl_form_admin.php b/Views/Includes/incl_form_admin.php index ef34daa..7f7963d 100644 --- a/Views/Includes/incl_form_admin.php +++ b/Views/Includes/incl_form_admin.php @@ -9,9 +9,11 @@ require_once(dirname(__FILE__)."/".$_SESSION["lang"]."/text.php"); require_once(dirname( __FILE__ )."/".$_SESSION["lang"]."/table.php"); // Import des metodes de la base de donnée pour les recherches. require_once(dirname( __FILE__ )."/../../Database/meth_dbadmin.php"); +require_once(dirname( __FILE__ )."/../../Database/meth_dbsearch.php"); // Instanciation de la bdd avec les méthodes de recherche. $dbadmin = new DbAdmin; +$dbsearch = new DbSearch; // Form pour ajout d'une catégorie d'emploi echo('
@@ -33,7 +35,7 @@ echo(' - - - -