diff --git a/.idea/projet_programmation_web.iml b/.idea/projet_programmation_web.iml
index 929d910..bf0b896 100644
--- a/.idea/projet_programmation_web.iml
+++ b/.idea/projet_programmation_web.iml
@@ -7,5 +7,6 @@
+
\ No newline at end of file
diff --git a/ProjetProgWeb/api.php b/ProjetProgWeb/api.php
index d38c3bb..699bb85 100644
--- a/ProjetProgWeb/api.php
+++ b/ProjetProgWeb/api.php
@@ -2,7 +2,8 @@
require_once("class/dump.php");
-if (!isset($_GET['q']) || !isset($_GET['search']) || !isset($_GET['option']) || !isset($_GET['offset'])) {
+if (!isset($_GET['q']) || !isset($_GET['search']) || !isset($_GET['option']) || !isset($_GET['offset']) ||
+ ($_GET['option'] == 'establishment' && $_GET['q'] == 'establishment')) {
print_r(json_encode(array("status" => 400, "message" => "Missing query type or attributes.")));
exit();
}
@@ -26,6 +27,7 @@ $json_object = match ($q) {
"count" => dump::getThesesCount($search, $option),
"years" => dump::getThesesYears($search, $option),
"disciplines" => dump::getThesesDisciplines($search, $option),
+ "establishment" => dump::getThesesEstablishments($search, $option),
default => NULL,
};
diff --git a/ProjetProgWeb/class/dump.php b/ProjetProgWeb/class/dump.php
index 3586ed4..f723216 100644
--- a/ProjetProgWeb/class/dump.php
+++ b/ProjetProgWeb/class/dump.php
@@ -49,6 +49,7 @@ class dump {
while ($obj = $stmt->fetchObject()) {
$theses_array[$i] = array();
foreach ($obj as $elem) {
+ // TODO Mettre le nom du champ à la place du vide
$theses_array[$i][] = empty($elem) ? "Non définit" : $elem;
}
$i++;
@@ -135,7 +136,7 @@ class dump {
'auto' => $pdo->prepare("
SELECT DATE_FORMAT(date_soutenance, '%Y') AS Date,
COUNT(DATE_FORMAT(date_soutenance, '%Y')) AS Number
- FROM `theses`
+ FROM theses
WHERE author LIKE :search
OR title LIKE :search
OR these_director LIKE :search
@@ -143,10 +144,10 @@ class dump {
GROUP BY Date
ORDER BY 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_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;"),
default => "",
};
@@ -175,7 +176,7 @@ class dump {
'auto' => $pdo->prepare("
SELECT discipline AS Discipline,
COUNT(discipline) AS Number
- FROM `theses`
+ FROM theses
WHERE author LIKE :search
OR title LIKE :search
OR these_director LIKE :search
@@ -184,10 +185,10 @@ class dump {
ORDER BY `Number` DESC
LIMIT 10
"),
- 'author' => $pdo->prepare("SELECT discipline AS Discipline, COUNT(discipline) AS Number FROM `theses` WHERE author LIKE :search GROUP BY Discipline ORDER BY `Number` DESC LIMIT 10;"),
- 'title' => $pdo->prepare("SELECT discipline AS Discipline, COUNT(discipline) AS Number FROM `theses` WHERE title LIKE :search GROUP BY Discipline ORDER BY `Number` DESC LIMIT 10;"),
- 'director' => $pdo->prepare("SELECT discipline AS Discipline, COUNT(discipline) AS Number FROM `theses` WHERE these_director LIKE :search GROUP BY Discipline ORDER BY `Number` DESC LIMIT 10;"),
- 'establishment' => $pdo->prepare("SELECT discipline AS Discipline, COUNT(discipline) AS Number FROM `theses` WHERE soutenance_establishment LIKE :search GROUP BY Discipline ORDER BY `Number` DESC LIMIT 10;"),
+ 'author' => $pdo->prepare("SELECT discipline AS Discipline, COUNT(discipline) AS Number FROM theses WHERE author LIKE :search GROUP BY Discipline ORDER BY `Number` DESC LIMIT 10;"),
+ 'title' => $pdo->prepare("SELECT discipline AS Discipline, COUNT(discipline) AS Number FROM theses WHERE title LIKE :search GROUP BY Discipline ORDER BY `Number` DESC LIMIT 10;"),
+ 'director' => $pdo->prepare("SELECT discipline AS Discipline, COUNT(discipline) AS Number FROM theses WHERE these_director LIKE :search GROUP BY Discipline ORDER BY `Number` DESC LIMIT 10;"),
+ 'establishment' => $pdo->prepare("SELECT discipline AS Discipline, COUNT(discipline) AS Number FROM theses WHERE soutenance_establishment LIKE :search GROUP BY Discipline ORDER BY `Number` DESC LIMIT 10;"),
default => "",
};
@@ -204,6 +205,45 @@ class dump {
return $disciplines_array;
}
+ public static function getThesesEstablishments(string $search, string $option) : array {
+ $establishments_array = [];
+
+ $pdo_obj = new conf();
+ $pdo = $pdo_obj->getPDO();
+
+ $search = '%' . $search . '%';
+
+ $stmt = match ($option) {
+ 'auto' => $pdo->prepare("
+ SELECT soutenance_establishment AS Establishment,
+ COUNT(soutenance_establishment) AS Number
+ FROM theses
+ WHERE author LIKE :search
+ OR title LIKE :search
+ OR these_director LIKE :search
+ GROUP BY Establishment
+ ORDER BY `Number` DESC
+ LIMIT 10;
+ "),
+ 'author' => $pdo->prepare("SELECT soutenance_establishment AS Establishment, COUNT(soutenance_establishment) AS Number FROM theses WHERE author LIKE :search GROUP BY Establishment ORDER BY `Number` DESC LIMIT 10;"),
+ 'title' => $pdo->prepare("SELECT soutenance_establishment AS Establishment, COUNT(soutenance_establishment) AS Number FROM theses WHERE title LIKE :search GROUP BY Establishment ORDER BY `Number` DESC LIMIT 10;"),
+ 'director' => $pdo->prepare("SELECT soutenance_establishment AS Establishment, COUNT(soutenance_establishment) AS Number FROM theses WHERE theses.these_director LIKE :search GROUP BY Establishment ORDER BY `Number` DESC LIMIT 10;"),
+ default => "",
+ };
+
+ $stmt->bindParam(':search', $search, PDO::PARAM_STR, 100);
+ $stmt->execute();
+
+ $i = 0;
+ while ($obj = $stmt->fetchObject()) {
+ $establishments_array[$i] = array();
+ $establishments_array[$i][$obj->Establishment] = $obj->Number;
+ $i++;
+ }
+
+ return $establishments_array;
+ }
+
public function sendThese($pdo) {
$data = [
'author' => $this->these->getAuthor(),