diff --git a/getEvents.php b/databaseOperations.php similarity index 51% rename from getEvents.php rename to databaseOperations.php index e60f680..d102b17 100755 --- a/getEvents.php +++ b/databaseOperations.php @@ -25,6 +25,29 @@ function connect() } } +/** + * @brief queries all the categories from the dabase + * @param $db: the PDO connection to the database + * @return al list of all the categories (id, name) + */ +function getCategories($db) +{ + try + { + $request = $db->prepare('SELECT * FROM categorie NATURAL JOIN sous_categorie ORDER BY sous_cat_tab ASC, sous_cat_id ASC'); + $request->execute(); + $result = $request->fetchAll(); + $request->closeCursor(); + return $result; + } + catch(PDOException $e) + { + //NOTE: change $e->getMessage() by an error message before going to production + echo($e->getMessage()); + die(); + } +} + /** * @brief queries all the events from the database * @param $db: the PDO connection to the database @@ -34,7 +57,7 @@ function getAllEvents($db) { try { - $request = $db->prepare('SELECT events.id, events.titre, events.localisation, events.dtstart, events.dtend, events.description FROM events, categorie WHERE events.categorie = categorie.id '); + $request = $db->prepare('SELECT * FROM event NATURAL JOIN eventCategorie NATURAL JOIN categorie'); $request->execute(array('date'=>date("Y-m-d",$date))); $result = $request->fetchAll(); $request->closeCursor(); @@ -58,7 +81,25 @@ function getOneEvent($db, $id) { try { - $request = $db->prepare('SELECT events.id, events.titre, events.localisation, events.dtstart, events.dtend, events.description FROM events, categorie WHERE events.categorie = categorie.id AND events.id = ?'); + $request = $db->prepare('SELECT * FROM event WHERE event_id = ?'); + $request->execute(array($id)); + $result = $request->fetch(); + $request->closeCursor(); + return $result; + } + catch(PDOException $e) + { + //NOTE: change $e->getMessage() by an error message before going to production + echo($e->getMessage()); + die(); + } +} + +function getCategoriesForOneEvent($db, $eventId) +{ + try + { + $request = $db->prepare('SELECT * FROM eventCategorie NATURAL JOIN categorie NATURAL JOIN sous_categorie ORDER BY sous_cat_tab ASC, sous_cat_id ASC WHERE event_id = ?'); $request->execute(array($id)); $result = $request->fetch(); $request->closeCursor(); @@ -82,7 +123,7 @@ function getEventsByDate($db, $date) { try { - $request = $db->prepare('SELECT events.id, events.titre, events.localisation, events.dtstart, events.dtend, events.description FROM events, categorie WHERE events.categorie = categorie.id AND (dtstart <= :date AND dtend >= :date)'); + $request = $db->prepare('SELECT * FROM event WHERE (event_dtstart <= :date AND event_dtend >= :date)'); $request->execute(array('date'=>date("Y-m-d",$date))); $result = $request->fetchAll(); $request->closeCursor(); @@ -97,17 +138,21 @@ function getEventsByDate($db, $date) } /** - * @brief queries the database for the events after a certain date + * @brief queries the database for the events on a certain date, where the categories are matched * @param $db: the PDO connection to the database * @param $date: the date to search for - * @return a list of all the events future to $date + * @param $categories: an array containing the IDs of the categories + * @return a list of all the events of the different categories at the date $date */ -function getEventsSince($db,$date) +function getEventsByDateAndCategories($db, $date, $categories) { try { - $request = $db->prepare('SELECT events.id, events.titre, events.localisation, events.dtstart, events.dtend, events.description FROM events, categorie WHERE events.categorie = categorie.id AND (events.dtstart >= :date OR events.dtend >= :date)'); - $request->execute(array('date'=>date("Y-m-d",$date))); + $request = $db->prepare('SELECT * FROM event NATURAL JOIN eventCategorie NATURAL JOIN categorie WHERE (dtstart <= :date AND dtend >= :date) AND events.categorie IN (:categories)'); + $request->execute(array( + 'date'=>date("Y-m-d",$date), + 'categories'=>implode(',', array_map('intval', $categories)) + )); $result = $request->fetchAll(); $request->closeCursor(); return $result; @@ -121,28 +166,26 @@ function getEventsSince($db,$date) } /** - * @deprecated - */ -function getEvents() -{ - //FUTURE: delete this function - $pdo = connect(); - $stmt = $pdo->prepare('SELECT titre, localisation, dtstart, dtend, description, url FROM events, categorie WHERE events.categorie = categorie.id'); - $stmt->execute(); - $result = $stmt->fetchAll(); - return $result; -} - -/** - * @deprecated + * @brief queries the database for the events after a certain date + * @param $db: the PDO connection to the database + * @param $date: the date to search for + * @return a list of all the events future to $date */ -function getEvent($id) +function getEventsSince($db,$date) { - //FUTURE: delete this function - $pdo = connect(); - $stmt = $pdo->prepare('SELECT titre, localisation, dtstart, dtend, description, url FROM events WHERE id = ?'); - $stmt->execute(array($id)); - $result = $stmt->fetch(); - return $result; + try + { + $request = $db->prepare('SELECT * FROM event WHERE (event_dtstart >= :date OR event_dtend >= :date)'); + $request->execute(array('date'=>date("Y-m-d",$date))); + $result = $request->fetchAll(); + $request->closeCursor(); + return $result; + } + catch(PDOException $e) + { + //NOTE: change $e->getMessage() by an error message before going to production + echo($e->getMessage()); + die(); + } } ?> diff --git a/export.php b/export.php index 5382e43..0a522f3 100644 --- a/export.php +++ b/export.php @@ -13,7 +13,7 @@ function icaldate($date) return date('Ymd',$dt).'T'. date('His',$dt). 'Z'; } -include_once('getEvents.php'); +include_once('databaseOperations.php'); $db = connect(); $events = getEventsSince($db, strtotime('last monday +'.$weekOffset.' weeks')); diff --git a/index.php b/index.php index c706cab..9e8ef70 100644 --- a/index.php +++ b/index.php @@ -1,6 +1,6 @@ diff --git a/makedatabase.sql b/makedatabase.sql index 39904e5..a761bf6 100644 --- a/makedatabase.sql +++ b/makedatabase.sql @@ -1,7 +1,7 @@ -CREATE TABLE sous_categorie(sous_cat_id INTEGER PRIMARY KEY, sous_cat_titre VARCHAR(255)); +CREATE TABLE sous_categorie(sous_cat_id INTEGER PRIMARY KEY, sous_cat_tab INTEGER NOT NULL, sous_cat_titre VARCHAR(255) NOT NULL); -CREATE TABLE categorie(cat_id INTEGER PRIMARY KEY, cat_titre VARCHAR(255), sous_cat_id INTEGER, FOREIGN KEY(sous_cat_id) REFERENCES sous_categorie(sous_cat_id)); +CREATE TABLE categorie(cat_id INTEGER PRIMARY KEY, cat_titre VARCHAR(255) NOT NULL, sous_cat_id INTEGER NOT NULL, FOREIGN KEY(sous_cat_id) REFERENCES sous_categorie(sous_cat_id)); -CREATE TABLE event(event_id INTEGER PRIMARY KEY, event_titre VARCHAR(255), event_localisation VARCHAR(255), event_dtstart DATETIME, event_dtend DATETIME, event_description TEXT, event_url VARCHAR(255)); +CREATE TABLE event(event_id INTEGER PRIMARY KEY, event_titre VARCHAR(255) NOT NULL, event_localisation VARCHAR(255) NOT NULL, event_dtstart DATETIME NOT NULL, event_dtend DATETIME NOT NULL, event_description TEXT NOT NULL, event_url VARCHAR(255) NULL); CREATE TABLE eventCategorie(event_id INTEGER, cat_id INTEGER, FOREIGN KEY(event_id) REFERENCES event(event_id), FOREIGN KEY(cat_id) REFERENCES categorie(cat_id));