CARIA.2.1

MAJ 2.1
Formulaires :
- Ajout mutliple conditions de validation  BACK-END
- Amélioration des conditions de réservations de véhicule
- MAJ Front-End
- Modification des règles pour les caractères accépté dans l'inscription
- bug d'enregistrement d'image résolu
DB :
- Modification des règles dans réservations
- Ajout de nouvelles entrée en base
General :
- Ajout de nouveaux messages d'erreurs possible
- Deplacement du bloc de visualisation des utilisateurs
- Ajout carte des vehicule sur la page de connexion
- Ajout de nouvelles images au véhicules
- Ajout des mentions légals
---
Résolution de bugs...
This commit is contained in:
ccunatbrule
2024-05-31 15:24:31 +02:00
parent b2f6dd412b
commit 121bade1a9
117 changed files with 1321 additions and 902 deletions

View File

@@ -1,64 +1,180 @@
<?php
require_once './modele/profil.php';
require_once './modele/vehicule.php';
// Gestion des requêtes POST pour la suppression des véhicules
require_once './modele/profil.php';
require_once './modele/vehicule.php';
// Récupérer les informations sur les véhicules et les utilisateurs
// Initialisation des variables
$TotalDesMembres = get_MemberCount();
$TotalDesVehicules = get_VehiculesCount();
$data = get_LastMember();
$derniermembre = htmlspecialchars(stripslashes($data['pseudo']), ENT_QUOTES, 'UTF-8');
$vehicules = get_CarsInfo();
$cars = get_CarsInfo();
$users = get_ProfilsInfo();
$errors = [];
// Gestion des requêtes POST pour la suppression des véhicules
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_vehicule'])) {
$id = (int)$_POST['vehicule_id'];
post_RemoveVehicule($id);
header("Location: gestion.php"); // Redirigez vers la page appropriée après la suppression
exit();
}
####################
# Liste des véhicules de la compagnie #
$cars = get_CarsInfo(); // Récupère les informations sur les vehicules depuis le modèle pour afficher toutes les voitures
$users = get_ProfilsInfo(); // Récupère les informations sur les vehicules depuis le modèle pour afficher toutes les voitures
####################
# Formulaire pour les nouveaux véhicules #
if (empty($_POST['plaque'])) { // Si la variable est vide, on peut considérer qu'on est sur la page de formulaire
} else { // On est dans le cas traitement
$plaque_erreur1 = NULL;
$plaque_erreur2 = NULL;
$image_erreur3 = NULL;
// On récupère les variables
$i = 0;
$extensions_valides = array('jpg', 'jpeg', 'gif', 'png');
$plaque = $_POST['plaque'];
$marque = $_POST['marque'];
$modele = $_POST['modele'];
$annee = $_POST['annee'];
// Vérification des champs du formulaire
$plaque_free = get_checkPlaque();
if (!$plaque_free) {
$plaque_erreur1 = "Votre immatriculation est déjà utilisée par un vehicule";
$i++;
try {
// Assurez-vous que vehicule_id est défini et est un nombre valide
if (!isset($_POST['vehicule_id']) || !is_numeric($_POST['vehicule_id'])) {
throw new Exception("ID de véhicule invalide.");
}
// Convertir l'ID en entier de manière sécurisée
$id = (int)$_POST['vehicule_id'];
// Suppression du véhicule
post_RemoveVehicule($id);
// Inclure le fichier de vue et afficher le message de succès
require_once './vue/gestion.html';
displayDeleteVehiculeSuccessMessage();
exit();
} catch (Exception $e) {
// En cas d'erreur, inclure le fichier de vue et afficher le message d'erreur
require_once './vue/gestion.html';
displayAddVehiculeErrorMessage(["Une erreur est survenue lors de la suppression du véhicule : " . $e->getMessage()]);
}
}
// Formulaire pour les nouveaux véhicules
if (!empty($_POST['plaque'])) {
try {
$plaque = $_POST['plaque'];
$marque = $_POST['marque'];
$modele = $_POST['modele'];
$annee = $_POST['annee'];
// Validation des champs du formulaire
if (empty($plaque) || strlen($plaque) < 7 || strlen($plaque) > 9) {
$errors[] = "L'immatriculation doit comporter entre 7 et 9 caractères.";
}
if (empty($marque) || strlen($marque) < 2 || strlen($marque) > 50) {
$errors[] = "La marque doit comporter entre 2 et 50 caractères.";
}
if (empty($modele) || strlen($modele) < 2 || strlen($modele) > 50) {
$errors[] = "Le modèle doit comporter entre 2 et 50 caractères.";
}
if (empty($annee) || !preg_match('/^\d{4}$/', $annee)) {
$errors[] = "L'année doit être un nombre de 4 chiffres.";
}
if (!get_checkPlaque()) {
$errors[] = "Votre immatriculation est déjà utilisée par un véhicule.";
}
if (!empty($_FILES['image']['size'])) {
$extension_upload = strtolower(substr(strrchr($_FILES['image']['name'], '.'), 1));
// Vérification de la taille maximale du fichier (par exemple, 5 Mo)
$maxFileSize = 5 * 1024 * 1024; // 5 Mo en octets
if ($_FILES['image']['size'] > $maxFileSize) {
$errors[] = "La taille de l'image dépasse la limite autorisée de 5 Mo.";
}
// Vérification de l'extension du fichier
$extensions_valides = array('jpg', 'jpeg', 'gif', 'png');
$extension_upload = strtolower(pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION));
if (!in_array($extension_upload, $extensions_valides)) {
$i++;
$image_erreur3 = "Extension de l'image incorrecte";
$errors[] = "Extension de l'image incorrecte. Seules les extensions JPG, JPEG, GIF et PNG sont autorisées.";
}
// Vérification du type MIME du fichier
$allowedMimeTypes = array('image/jpeg', 'image/png', 'image/gif');
$fileMimeType = mime_content_type($_FILES['image']['tmp_name']);
if (!in_array($fileMimeType, $allowedMimeTypes)) {
$errors[] = "Type de fichier non pris en charge. Veuillez télécharger une image au format JPG, JPEG, GIF ou PNG.";
}
}
if ($i == 0) {
// Message de réussite
echo '
<script>
alert("Ajout du véhicule terminé.\n\n Le véhicule ' . addslashes(htmlspecialchars($_POST['plaque'])) . ' a été ajouté au véhicule de la plateforme.");
</script>';
// Inclure à nouveau le formulaire pour permettre à l'utilisateur de ressaisir des valeurs
post_RegistreCar();
header("Location: gestion.php"); // Redirigez vers la page appropriée après la suppression
exit();
} else {
// Affichage des erreurs
$errorMessages = '';
if ($plaque_erreur1) $errorMessages .= "$plaque_erreur1";
if ($image_erreur3) $errorMessages .= "$image_erreur3";
echo '
<script>
alert("' . $i . ' erreurs s\'est produites lors de l\'ajout du véhicule.\n\n' . addslashes($errorMessages) . '");
</script>';
if (empty($errors)) {
// Enregistrement du véhicule
post_RegistreCar();
require_once './vue/gestion.html';
displayAddVehiculeSuccessMessage();
exit();
} else {
require_once './vue/gestion.html';
displayAddVehiculeErrorMessage($errors);
}
} catch (Exception $e) {
// Afficher les messages d'erreur
require_once './vue/gestion.html';
displayAddVehiculeErrorMessage(["Une erreur est survenue lors de l'enregistrement du véhicule."]);
}
}
require './vue/gestion.html';
// Fonction pour afficher un message de succès
function displayDeleteVehiculeSuccessMessage() {
echo '<script>
document.addEventListener("DOMContentLoaded", function() {
var messageDiv = document.getElementById("message");
var successMessage = `
<div class="alert alert-success">
<section id="content" class="page-content">
<div class="card text-center">
<div class="card-header">
<h3>Suppression du véhicule terminé</h3>
</div>
<div class="card-body">
<h5>Le véhicule ' . addslashes(htmlspecialchars($_POST['plaque'])) . ' a été supprimé de la plateforme.</h5><br>
</div>
</div>
</section>
</div>
`;
messageDiv.innerHTML = successMessage;
// Redirection après un délai
setTimeout(function() {
window.location.href = "gestion.php";
}, 2000); // 2 secondes
});
</script>';
}
// Fonction pour afficher un message d'erreur
function displayAddVehiculeErrorMessage($errors) {
echo '<script>document.addEventListener("DOMContentLoaded", function() {
var messageDiv = document.getElementById("message");
var errorMessage = `<div class="alert alert-danger">
<section id="content" class="page-content">
<div class="card text-center">
<div class="card-header">
<h3>Ajout du véhicule interrompu</h3>
</div>
<div class="card-body">
<p>Erreur(s) dans le formulaire d\'ajout de véhicule :</p>
<ul style="list-style-type:none;">'; // Début de la liste d'erreurs
foreach ($errors as $error) {
echo "<li>" . htmlspecialchars($error, ENT_QUOTES, 'UTF-8') . "</li>"; // Ajout de chaque erreur à la liste
}
echo ' </ul>
</div>
</div>
</section>
</div>
`;
messageDiv.innerHTML = errorMessage;
});
</script>';
}
// Fonction pour afficher un message de succès
function displayAddVehiculeSuccessMessage() {
echo '<script>
document.addEventListener("DOMContentLoaded", function() {
var messageDiv = document.getElementById("message");
var successMessage = `
<div class="alert alert-success">
<section id="content" class="page-content">
<div class="card text-center">
<div class="card-header">
<h3>Ajout du véhicule terminé</h3>
</div>
<div class="card-body">
<h5>Le véhicule ' . addslashes(htmlspecialchars($_POST['plaque'])) . ' a été ajouté au véhicule de la plateforme.</h5><br>
</div>
</div>
</section>
</div>
`;
messageDiv.innerHTML = successMessage;
// Redirection après un délai
setTimeout(function() {
window.location.href = "gestion.php";
}, 2000); // 3 secondes
});
</script>';
}
require_once './vue/gestion.html';
?>