From e7b1ecb53d062f88863145bd6d7a8b1b7da612a0 Mon Sep 17 00:00:00 2001 From: Florian Sylvain Date: Sat, 8 Jan 2022 21:50:50 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Years=20chart=20now=20gives=20onlin?= =?UTF-8?q?e/offline=20count?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjetProgWeb/api.php | 2 +- ProjetProgWeb/class/dump.php | 88 ++++++++++++++++++++++++++++-------- 2 files changed, 70 insertions(+), 20 deletions(-) diff --git a/ProjetProgWeb/api.php b/ProjetProgWeb/api.php index 699bb85..736c61c 100644 --- a/ProjetProgWeb/api.php +++ b/ProjetProgWeb/api.php @@ -10,7 +10,7 @@ if (!isset($_GET['q']) || !isset($_GET['search']) || !isset($_GET['option']) || $q = $_GET['q']; $search = filter_var($_GET['search'], FILTER_SANITIZE_ADD_SLASHES); -$option = $_GET['option']; +$option = $_GET['option']; // TODO Ajouter l'option Discipline $offset = $_GET['offset']; if (strlen($search) < 3) { diff --git a/ProjetProgWeb/class/dump.php b/ProjetProgWeb/class/dump.php index f723216..c4a8d1c 100644 --- a/ProjetProgWeb/class/dump.php +++ b/ProjetProgWeb/class/dump.php @@ -134,20 +134,64 @@ class dump { $stmt = match ($option) { 'auto' => $pdo->prepare(" - SELECT DATE_FORMAT(date_soutenance, '%Y') AS Date, - COUNT(DATE_FORMAT(date_soutenance, '%Y')) AS Number - FROM theses - WHERE author LIKE :search - OR title LIKE :search - OR these_director LIKE :search - OR soutenance_establishment LIKE :search - GROUP BY Date - ORDER BY Date; + SELECT Date, theses_online, theses_offline + FROM (SELECT DATE_FORMAT(date_soutenance, '%Y') AS Date, + COUNT(DATE_FORMAT(date_soutenance, '%Y')) AS theses_online + FROM theses + WHERE `online` LIKE 'yes' + AND (author LIKE :search + OR title LIKE :search + OR these_director LIKE :search + OR soutenance_establishment LIKE :search) + GROUP BY Date) t_online + NATURAL JOIN ( + SELECT DATE_FORMAT(date_soutenance, '%Y') AS Date, + COUNT(DATE_FORMAT(date_soutenance, '%Y')) AS theses_offline + FROM theses + WHERE `online` LIKE 'no' + AND (author LIKE :search + OR title LIKE :search + OR these_director LIKE :search + OR soutenance_establishment LIKE :search) + GROUP BY Date) t_offline + ORDER BY `t_online`.`Date`; "), - 'author' => $pdo->prepare("SELECT DATE_FORMAT(date_soutenance, '%Y') AS Date, COUNT(DATE_FORMAT(date_soutenance, '%Y')) AS Number FROM theses WHERE author LIKE :search GROUP BY Date ORDER BY Date;"), - 'title' => $pdo->prepare("SELECT DATE_FORMAT(date_soutenance, '%Y') AS Date, COUNT(DATE_FORMAT(date_soutenance, '%Y')) AS Number FROM theses WHERE title LIKE :search GROUP BY Date ORDER BY Date;"), - 'director' => $pdo->prepare("SELECT DATE_FORMAT(date_soutenance, '%Y') AS Date, COUNT(DATE_FORMAT(date_soutenance, '%Y')) AS Number FROM theses WHERE these_director LIKE :search GROUP BY Date ORDER BY Date;"), - 'establishment' => $pdo->prepare("SELECT DATE_FORMAT(date_soutenance, '%Y') AS Date, COUNT(DATE_FORMAT(date_soutenance, '%Y')) AS Number FROM theses WHERE soutenance_establishment LIKE :search GROUP BY Date ORDER BY Date;"), + 'author' => $pdo->prepare(" + SELECT Date, theses_online, theses_offline + FROM (SELECT DATE_FORMAT(date_soutenance, '%Y') AS Date, + COUNT(DATE_FORMAT(date_soutenance, '%Y')) AS theses_online + FROM theses WHERE `online` LIKE 'yes' AND author LIKE :search GROUP BY Date) t_online + NATURAL JOIN (SELECT DATE_FORMAT(date_soutenance, '%Y') AS Date, + COUNT(DATE_FORMAT(date_soutenance, '%Y')) AS theses_offline + FROM theses WHERE `online` LIKE 'no' AND author LIKE :search GROUP BY Date) t_offline + ORDER BY `t_online`.`Date`;"), + 'title' => $pdo->prepare(" + SELECT Date, theses_online, theses_offline + FROM (SELECT DATE_FORMAT(date_soutenance, '%Y') AS Date, + COUNT(DATE_FORMAT(date_soutenance, '%Y')) AS theses_online + FROM theses WHERE `online` LIKE 'yes' AND title LIKE :search GROUP BY Date) t_online + NATURAL JOIN (SELECT DATE_FORMAT(date_soutenance, '%Y') AS Date, + COUNT(DATE_FORMAT(date_soutenance, '%Y')) AS theses_offline + FROM theses WHERE `online` LIKE 'no' AND title LIKE :search GROUP BY Date) t_offline + ORDER BY `t_online`.`Date`;"), + 'director' => $pdo->prepare(" + SELECT Date, theses_online, theses_offline + FROM (SELECT DATE_FORMAT(date_soutenance, '%Y') AS Date, + COUNT(DATE_FORMAT(date_soutenance, '%Y')) AS theses_online + FROM theses WHERE `online` LIKE 'yes' AND these_director LIKE :search GROUP BY Date) t_online + NATURAL JOIN (SELECT DATE_FORMAT(date_soutenance, '%Y') AS Date, + COUNT(DATE_FORMAT(date_soutenance, '%Y')) AS theses_offline + FROM theses WHERE `online` LIKE 'no' AND these_director LIKE :search GROUP BY Date) t_offline + ORDER BY `t_online`.`Date`;"), + 'establishment' => $pdo->prepare(" + SELECT Date, theses_online, theses_offline + FROM (SELECT DATE_FORMAT(date_soutenance, '%Y') AS Date, + COUNT(DATE_FORMAT(date_soutenance, '%Y')) AS theses_online + FROM theses WHERE `online` LIKE 'yes' AND soutenance_establishment LIKE :search GROUP BY Date) t_online + NATURAL JOIN (SELECT DATE_FORMAT(date_soutenance, '%Y') AS Date, + COUNT(DATE_FORMAT(date_soutenance, '%Y')) AS theses_offline + FROM theses WHERE `online` LIKE 'no' AND soutenance_establishment LIKE :search GROUP BY Date) t_offline + ORDER BY `t_online`.`Date`;"), default => "", }; @@ -156,8 +200,12 @@ class dump { $i = 0; while ($obj = $stmt->fetchObject()) { - $years_array[$i] = array(); - $years_array[$i][$obj->Date] = $obj->Number; + $years_array[$i] = array( + $obj->Date => array( + "online" => $obj->theses_online, + "offline" => $obj->theses_offline + ) + ); $i++; } @@ -197,8 +245,9 @@ class dump { $i = 0; while ($obj = $stmt->fetchObject()) { - $disciplines_array[$i] = array(); - $disciplines_array[$i][$obj->Discipline] = $obj->Number; + $disciplines_array[$i] = array( + $obj->Discipline => $obj->Number + ); $i++; } @@ -236,8 +285,9 @@ class dump { $i = 0; while ($obj = $stmt->fetchObject()) { - $establishments_array[$i] = array(); - $establishments_array[$i][$obj->Establishment] = $obj->Number; + $establishments_array[$i] = array( + $obj->Establishment => $obj->Number + ); $i++; }