From bd97bbba05043af604b66dbead5f57aeec1d1e95 Mon Sep 17 00:00:00 2001 From: Loris BALOCCHI Date: Thu, 13 Jun 2024 01:19:46 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=8C=20ajout=20de=20la=20fonctionnalit?= =?UTF-8?q?=C3=A9=20de=20cr=C3=A9ation=20d'=C3=A9v=C3=A8nement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Charpentier Juliette --- account/profile/index.php | 4 +- account/register/register.php | 2 + admin/users/index.php | 61 +++++++------- base.html | 1 + events/index.php | 57 ++++++++----- events/new/eventCreate.php | 52 ++++++++++++ events/new/index.php | 134 +++++++++++++++++++++++++++++++ events/new/indexold.php | 116 +++++++++++++++++++++++++++ index.php | 20 +++-- scripts/dateChecker.js | 5 ++ styles/header.css | 52 ++++++++++++ styles/main.css | 147 ++++++++++++++++++++++++++++------ views/header.php | 11 ++- 13 files changed, 579 insertions(+), 83 deletions(-) create mode 100644 events/new/eventCreate.php create mode 100644 events/new/index.php create mode 100644 events/new/indexold.php create mode 100644 scripts/dateChecker.js diff --git a/account/profile/index.php b/account/profile/index.php index 16a4882..a79b2eb 100644 --- a/account/profile/index.php +++ b/account/profile/index.php @@ -51,7 +51,7 @@ if (isset($_COOKIE['userData'])) { ❎ Une erreur est survenue lors de la mise à jour de vos informations.

"; + echo "

⛔ Une erreur est survenue lors de la mise à jour de vos informations.

"; } else if ($_GET["result"] == "updatesuccess") { echo "

✅ Vos informations ont été mises à jour avec succès.

"; } @@ -79,7 +79,7 @@ if (isset($_COOKIE['userData'])) { - diff --git a/account/register/register.php b/account/register/register.php index f0a1b1c..b35d2f6 100644 --- a/account/register/register.php +++ b/account/register/register.php @@ -62,6 +62,8 @@ require_once $_SERVER['DOCUMENT_ROOT'] . '/tools/dbConnect.php'; $role = "Sportif"; } else if ($codeRole == "VJC6V") { $role = "Organisateur"; + } else if ($codeRole == "XJ9LQ") { + $role = "Spectateur"; } else { $role = "Membre"; } diff --git a/admin/users/index.php b/admin/users/index.php index 7a580e9..80721ce 100644 --- a/admin/users/index.php +++ b/admin/users/index.php @@ -1,5 +1,6 @@ - @@ -41,6 +42,7 @@ if (isset($_COOKIE['userData'])) { header("refresh:5; url=/"); die(); } + ?> Bienvenue sur le panel de gestion des utilisateurs.

"; echo "

Vous pouvez ici gérer les utilisateurs.

"; echo "

Que souhaitez-vous faire ?

"; + // Affichage des utilisateurs + echo "
"; + $users = mysqli_query($db, "SELECT * FROM `user`"); + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + while ($row = mysqli_fetch_assoc($users)) { + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + } + echo "
Adresse mailNomPrénomRôleActions
" . $row['mail'] . "" . $row['name'] . "" . $row['family_name'] . "" . $row['role'] . "Modifier | Supprimer
"; + echo "
"; + echo "Ajouter un utilisateur + "; + echo "Retour au panel d'administration + "; + echo "Retour à l'accueil + "; //contenu de la page admin } ?> - "; - $users = mysqli_query($db, "SELECT * FROM `user`"); - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - while ($row = mysqli_fetch_assoc($users)) { - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - } - echo "
Adresse mailNomPrénomRôleActions
" . $row['mail'] . "" . $row['name'] . "" . $row['family_name'] . "" . $row['role'] . "Modifier | Supprimer
"; - echo ""; - echo "Ajouter un utilisateur - "; - echo "Retour au panel d'administration - "; - echo "Retour à l'accueil - "; - ?> diff --git a/base.html b/base.html index 5e41cd1..eb658eb 100644 --- a/base.html +++ b/base.html @@ -1,5 +1,6 @@ +

Évènements

+ + + " . $row['description'] . "

"; + /* + - Sujet: + -- Créer un évènement (rôle organisateur ou admin) ✅ + -- s'inscrire à un évènement (rôle membre ou +) + -- participer à un évènement (sportif) + -- laisser un commentaire (rôle membre ou +) + -- afficher la liste des évènements (tout le monde) + -- Rechercher un évènement par date, lieu, ou nom + -- Trier les évènements par date, nombre de participants, personnes y ayant accès, etc... + */ + + ?> + + + Créer un évènement"; + } else { + echo "

Vous n'êtes pas autorisé à créer un évènement.

"; } } + + + ?> -
- "; - while ($row = mysqli_fetch_assoc($evenement)) { - echo ""; - } - echo ""; - ?> - -
- - diff --git a/events/new/eventCreate.php b/events/new/eventCreate.php new file mode 100644 index 0000000..71f4ca3 --- /dev/null +++ b/events/new/eventCreate.php @@ -0,0 +1,52 @@ +Nom de l'évènement : $eventName

"; + echo "

Date de l'évènement : $eventDate

"; + echo "

Lieu de l'évènement : $eventLocation

"; + echo "

Discipline de l'évènement : $eventDiscipline

"; + echo "

Description de l'évènement : $eventDescription

"; + echo "

Rôles de l'évènement : $rolesText

"; + echo "

Créateur de l'évènement : $email

"; + + // Requête SQL préparée + $stmt = mysqli_prepare($db, "INSERT INTO `event` (title, description, event_type, date, location, role, guest_count, creator) VALUES (?, ?, ?, ?, ?, ?, 0, ?)"); + mysqli_stmt_bind_param($stmt, 'sssssss', $eventName, $eventDescription, $eventDiscipline, $eventDate, $eventLocation, $rolesText, $email); + $result = mysqli_stmt_execute($stmt); + + if ($result) { + echo "

L'évènement a bien été créé.

"; + header("Location: /events/new?result=event-creation-succeded"); + } else { + echo "

Une erreur est survenue lors de la création de l'évènement. Erreur : " . mysqli_error($db) . "

"; + header("Location: /events/new?result=event-creation-failed"); + } +} else { + echo "

Veuillez remplir tous les champs du formulaire.

"; +} + +?> \ No newline at end of file diff --git a/events/new/index.php b/events/new/index.php new file mode 100644 index 0000000..115d19e --- /dev/null +++ b/events/new/index.php @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + Jeux Olympiques - Paris 2024 + + + + + + Créer un évènement"; + echo "

Vous n'êtes pas autorisé à accéder à cette page.

"; + echo "

Redirection vers l'accueil dans 5 secondes...

"; + header("refresh:5; url=/"); + include $_SERVER['DOCUMENT_ROOT'] . '/views/footer.php'; + die(); + } + + + $role = $userData['role']; + + if (($role == 'Administrateur') or ($role == 'Organisateur')) { // Si l'utilisateur est un administrateur : accès à la page + echo "
"; + echo "Avatar"; + echo "

Créer un nouvel évènement

"; + echo "

Remplissez le formulaire suivant afin de créer un nouvel évènement.

"; + echo "
"; + echo "
"; + if (isset($_GET['result'])) { + if ($_GET['result'] == "event-creation-failed") { + echo "

       ⛔ Une erreur est survenue, l'évènement n'a pas été créé.

"; + } else if ($_GET["result"] == "event-creation-succeded") { + echo "

       ✅ L'évènement a bien été créé.

"; + } + } + echo "
"; + echo ""; + echo ""; + echo "
"; + echo "
Discipline"; + echo ""; + echo "
"; + echo "
; + "; + echo ""; + echo "
"; + echo "
"; + echo ""; + echo "
"; + echo "
"; + echo ""; + echo ""; + echo "
"; + echo "
"; + echo ""; + echo "
"; + echo ""; + echo ""; + echo "
"; + echo "
"; + echo ""; + echo ""; + echo "
"; + echo "
"; + echo ""; + echo ""; + echo "
"; + echo "
"; + echo ""; + echo ""; + echo "
"; + echo "
"; + + } else { + echo "

Vous n'êtes pas autorisé à accéder à cette page.

"; + echo "

Redirection vers l'accueil dans 5 secondes...

"; + header("refresh:5; url=/"); + include ($_SERVER['DOCUMENT_ROOT'] . '/views/footer.php'); + die(); + } + ?> + + + + + + + \ No newline at end of file diff --git a/events/new/indexold.php b/events/new/indexold.php new file mode 100644 index 0000000..c363ce7 --- /dev/null +++ b/events/new/indexold.php @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + Jeux Olympiques - Paris 2024 + + + + + + + +
+ Avatar +

Créer un nouvel évènement

+

Remplissez le formulaire suivant afin de créer un nouvel évènement.

+
+        ⛔ Une erreur est survenue, l'évènement n'a pas été créé.

"; + } else if ($_GET["result"] == "event-creation-succeded") { + echo "

       ✅ L'évènement a bien été créé.

"; + } + } + ?> +
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ + + +
+
+ +
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/index.php b/index.php index f7863b0..bdd8d38 100644 --- a/index.php +++ b/index.php @@ -28,21 +28,29 @@

Accueil

Bienvenue sur le site des Jeux Olympiques de Paris 2024 !

-

Vous trouverez ici toutes les informations nécessaires pour suivre les Jeux Olympiques de Paris. +

Vous trouverez ici toutes les informations nécessaires pour suivre les Jeux Olympiques de Paris 2024.

Vous pourrez également créer un compte pour accéder à des fonctionnalités supplémentaires.

prepare("SELECT discipline FROM olympic_discipline WHERE discipline = ?"); + $stmt->bind_param("s", $evenement); + $stmt->execute(); + $result = $stmt->get_result(); + while ($row = $result->fetch_assoc()) { + echo $row['discipline']; + } + $stmt->close(); ?> diff --git a/scripts/dateChecker.js b/scripts/dateChecker.js new file mode 100644 index 0000000..d5836ea --- /dev/null +++ b/scripts/dateChecker.js @@ -0,0 +1,5 @@ +document.addEventListener("DOMContentLoaded", function () { + var input = document.getElementById("eventDate"); + input.setAttribute("min", "2024-07-26"); + input.setAttribute("max", "2024-08-11"); +}); diff --git a/styles/header.css b/styles/header.css index 014b8cc..d26434c 100644 --- a/styles/header.css +++ b/styles/header.css @@ -184,4 +184,56 @@ body { .menu li { padding: 0 20px; } + + /* Style pour le menu principal */ + .menu-container ul { + list-style-type: none; + padding: 0; + } + + .menu-container li { + display: inline-block; + position: relative; + padding: 10px 15px; + } + + .menu-container a { + text-decoration: none; + color: white; /* Assurez-vous que la couleur des liens est blanche */ + display: block; + } + + /* Styles pour le menu déroulant */ + .dropdown-content { + display: none; /* Masque par défaut le contenu déroulant */ + position: absolute; + background-color: #26272b; /* Même couleur que le container */ + box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); /* Ombre pour le menu déroulant */ + z-index: 100; + width: 200px; /* ou la largeur qui correspond le mieux à votre design */ + left: 50%; + transform: translateX(-50%); + } + + .dropdown-content a { + color: white; + padding: 12px 16px; + text-decoration: none; + display: block; + white-space: nowrap; /* Garde les éléments de menu sur une seule ligne */ + } + + .dropdown:hover .dropdown-content { + display: block; /* Affiche le sous-menu au survol */ + opacity: 1; + transition: opacity 0.5s ease; /* Transition douce pour l'opacité */ + } + .dropdown-content { + opacity: 0; /* Initialement transparent */ + transition: opacity 0.5s ease; /* Transition pour une apparition douce */ + } + + .dropdown:hover .dropdown-content { + opacity: 1; /* Pleine visibilité au survol */ + } } diff --git a/styles/main.css b/styles/main.css index 6c2210c..5bf28ad 100644 --- a/styles/main.css +++ b/styles/main.css @@ -96,34 +96,11 @@ p.login-subtitle { border-color: #007bff; } -.remember-me { - display: flex; - align-items: center; -} - -.remember-me input { - margin-right: 0.5rem; -} - .no-account { font-size: 0.8rem; margin-top: 0.25rem; } -.forgot-password { - text-align: right; - font-size: 0.8rem; -} - -.forgot-password a { - color: #007bff; - text-decoration: none; -} - -.forgot-password a:hover { - text-decoration: underline; -} - .submit-button { width: 100%; padding: 0.75rem; @@ -171,6 +148,15 @@ p.text { color: white; font-size: 1rem; padding-left: 2rem; + padding-right: 2rem; + font-family: "RobotoFlex"; +} + +a.text { + color: white; + font-size: 1rem; + padding-left: 2rem; + padding-right: 2rem; font-family: "RobotoFlex"; } @@ -250,3 +236,118 @@ td { margin-inline: auto; margin-block: 5em; } + +.event-create-container { + background: #26272b; + align-items: center; + opacity: 1; + padding: 3rem; + border-radius: 10px; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.5); + width: 100%; + text-align: center; + max-width: fit-content; + margin-inline: auto; + margin-block: 5em; +} + +.checkbox-container { + display: flex; + justify-content: flex-start; + margin-top: 1rem; +} + +/* Masquer les cases à cocher d'origine */ +input[type="checkbox"] { + opacity: 0; + position: absolute; +} + +/* Styliser les labels */ +input[type="checkbox"] + label { + position: relative; + padding-left: 25px; + cursor: pointer; +} + +/* Ajouter un élément personnalisé avant le label */ +input[type="checkbox"] + label::before { + content: ""; + position: absolute; + left: 0; + top: 0; + width: 20px; + height: 20px; + border: 2px solid #555; + border-radius: 4px; +} + +/* Changer l'apparence lorsque la case est cochée */ +input[type="checkbox"]:checked + label::before { + background-color: #007bff; + border-color: #007bff; +} + +/* Optionnel : Ajouter un indicateur visuel pour la case cochée */ +input[type="checkbox"]:checked + label::after { + content: "✓"; + position: absolute; + left: 3px; + top: -3px; + font-size: 17px; + color: white; +} + +.form-group select { + width: 100%; + padding: 0.5rem; + border: 1px solid #121216; + border-radius: 5px; + background-color: #34353a; + color: #fffe; + transition: all 0.3s ease; + appearance: none; /* Pour supprimer le style par défaut */ + -webkit-appearance: none; /* Pour Safari */ + -moz-appearance: none; /* Pour Firefox */ + background-image: url("https://cdn-icons-png.flaticon.com/16/8442/8442683.png"); /* Ajoutez votre icône personnalisée */ + background-repeat: no-repeat; + background-position: right 0.5rem center; /* Ajustez selon la taille de votre padding */ + background-size: 1.5rem; /* Ajustez selon la taille souhaitée pour l'icône */ +} + +/* Optionnel : Style pour les options */ +.form-group select option { + background-color: #34353a; /* Pour que le fond des options corresponde au select */ + color: #fffe; /* Couleur du texte des options */ +} + +.event-create-container img { + width: 146px; + margin-bottom: 1rem; +} + +.event-create-container h2 { + font-weight: 700; + color: white; +} + +.event-create-container p { + margin-bottom: 1.5rem; + color: #8e8c8c; + size: 10px; +} + +h2.event-create-title { + font-family: "RobotoFlex"; +} + +p.event-create-subtitle { + font-family: "RobotoFlex"; + padding-left: 0; +} + +button.new-event { + width: 25%; + margin: auto; +} +/* Styles pour le calendrier*/ diff --git a/views/header.php b/views/header.php index c411b77..ec2175b 100644 --- a/views/header.php +++ b/views/header.php @@ -37,10 +37,13 @@ if (isset($_COOKIE['userData'])) { } } ?> -
  • - - Évènements - +