From 2ab457aa8f39f7ee3290031a43c589d64eb4277c Mon Sep 17 00:00:00 2001
From: cofrizot
Date: Sun, 11 Dec 2022 15:39:31 +0100
Subject: [PATCH] Ajoute la recherche par date
---
src/Silex/Controller/VisitorController.php | 7 ++++++-
src/Silex/Gateway/NewsGateway.php | 18 ++++++++++++++++++
views/home.php | 6 +++++-
3 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/src/Silex/Controller/VisitorController.php b/src/Silex/Controller/VisitorController.php
index 6f27520..076d182 100644
--- a/src/Silex/Controller/VisitorController.php
+++ b/src/Silex/Controller/VisitorController.php
@@ -23,8 +23,13 @@ class VisitorController {
$page = intval($params['page'] ?? 1);
$total = $gw->getCount();
+
$nbPages = Pagination::getNbPages($total, self::PER_PAGE);
- $news = $gw->getPaginatedRecentNews($page , self::PER_PAGE);
+ if(!empty($_GET['dateDeb']) && !empty($_GET['dateFin'])) {
+ $news = $gw->getLike($_GET['dateDeb'], $_GET['dateFin'], $page , self::PER_PAGE);
+ } else {
+ $news = $gw->getPaginatedRecentNews($page , self::PER_PAGE);
+ }
$nbComments = $gwc->getCommentNumber();
if ($user !== null) {
$nbCommentsByUser = $gwc->getCommentNumberFromUser($user->getId());
diff --git a/src/Silex/Gateway/NewsGateway.php b/src/Silex/Gateway/NewsGateway.php
index e2ffda5..a38400e 100644
--- a/src/Silex/Gateway/NewsGateway.php
+++ b/src/Silex/Gateway/NewsGateway.php
@@ -76,6 +76,24 @@ class NewsGateway
return $data === false ? null : $this->createNews($data);
}
+ /**
+ * @return News[]
+ */
+ public function getLike(string $dateDeb, string $dateFin,int $page = 1, int $limit = 10): array {
+ $req = $this->pdo->prepare('SELECT * FROM news WHERE DATE_FORMAT(publication_date, "%Y-%m-%d") BETWEEN DATE_FORMAT(:dateDeb, "%Y-%m-%d") AND DATE_FORMAT(:dateFin, "%Y-%m-%d") ORDER BY publication_date LIMIT :limit OFFSET :offset;');
+ $req->bindValue(':dateDeb', $dateDeb, PDO::PARAM_STR);
+ $req->bindValue(':dateFin', $dateFin, PDO::PARAM_STR);
+ $req->bindValue('limit', $limit, PDO::PARAM_INT);
+ $req->bindValue('offset', ($page - 1) * $limit, PDO::PARAM_INT);
+ if (!$req->execute()) {
+ return [];
+ }
+ $news = [];
+ while ($data = $req->fetch()) {
+ $news[] = $this->createNews($data);
+ }
+ return $news;
+ }
private function createNews(array $data): News
{
diff --git a/views/home.php b/views/home.php
index 58007f9..91d90c1 100644
--- a/views/home.php
+++ b/views/home.php
@@ -5,7 +5,11 @@
= "Nombre de messages de l'utilisateur : " . $params['nbCommentsByUser'] ?>
-Hello world!
+