CARIA.2.0
Suite de la version 1.0.0 repo CARIA - Enormement de modification. - Restructuration du code - Optimisation - Debug . . . Phase de test en cours !
This commit is contained in:
64
modele/event/add-event.php
Normal file
64
modele/event/add-event.php
Normal file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
require '../../config/connexion_sql.php';
|
||||
global $bdd;
|
||||
|
||||
// Récupération et validation des entrées
|
||||
$start = isset($_POST['start']) ? $_POST['start'] : null;
|
||||
$end = isset($_POST['end']) ? $_POST['end'] : null;
|
||||
$id_user = isset($_POST['id_user']) ? intval($_POST['id_user']) : null;
|
||||
$id_vehicule = isset($_POST['id_vehicule']) ? intval($_POST['id_vehicule']) : null;
|
||||
|
||||
// Vérification que toutes les entrées sont présentes et valides
|
||||
if (!$id_user || !$id_vehicule || !$start || !$end) {
|
||||
die(json_encode(['status' => 'error', 'message' => 'Tous les champs sont requis.']));
|
||||
}
|
||||
|
||||
try {
|
||||
// Démarrer la transaction
|
||||
$bdd->beginTransaction();
|
||||
|
||||
// Préparation de la requête SQL avec un titre temporaire
|
||||
$sqlInsert = "INSERT INTO Reservations (title, id_user, id_vehicule, start, end) VALUES ('Temp Title', :id_user, :id_vehicule, :start, :end)";
|
||||
$stmt = $bdd->prepare($sqlInsert);
|
||||
|
||||
// Liaison des valeurs aux paramètres
|
||||
$stmt->bindParam(':id_user', $id_user, PDO::PARAM_INT);
|
||||
$stmt->bindParam(':id_vehicule', $id_vehicule, PDO::PARAM_INT);
|
||||
$stmt->bindParam(':start', $start, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':end', $end, PDO::PARAM_STR);
|
||||
|
||||
// Exécution de la requête préparée
|
||||
if ($stmt->execute()) {
|
||||
// Récupérer l'ID de la dernière réservation insérée
|
||||
$lastInsertId = $bdd->lastInsertId();
|
||||
|
||||
// Mise à jour du titre de la réservation avec l'ID
|
||||
$sqlUpdate = "UPDATE Reservations SET title = CONCAT('Reservation ', :id) WHERE id = :id";
|
||||
$stmtUpdate = $bdd->prepare($sqlUpdate);
|
||||
$stmtUpdate->bindParam(':id', $lastInsertId, PDO::PARAM_INT);
|
||||
|
||||
if ($stmtUpdate->execute()) {
|
||||
// Commit de la transaction
|
||||
$bdd->commit();
|
||||
echo json_encode(['status' => 'success', 'message' => 'Réservation créée avec succès.', 'reservation_id' => $lastInsertId]);
|
||||
} else {
|
||||
// Rollback de la transaction
|
||||
$bdd->rollBack();
|
||||
$error = $stmtUpdate->errorInfo();
|
||||
echo json_encode(['status' => 'error', 'message' => 'Erreur lors de la mise à jour de la réservation : ' . $error[2]]);
|
||||
}
|
||||
} else {
|
||||
// Rollback de la transaction
|
||||
$bdd->rollBack();
|
||||
$error = $stmt->errorInfo();
|
||||
echo json_encode(['status' => 'error', 'message' => 'Erreur lors de la création de la réservation : ' . $error[2]]);
|
||||
}
|
||||
} catch (PDOException $e) {
|
||||
// Rollback de la transaction en cas d'exception
|
||||
$bdd->rollBack();
|
||||
echo json_encode(['status' => 'error', 'message' => 'Erreur de connexion à la base de données : ' . $e->getMessage()]);
|
||||
}
|
||||
|
||||
// Fermeture de la connexion PDO
|
||||
$bdd = null;
|
||||
?>
|
||||
80
modele/event/add-my-event.php
Normal file
80
modele/event/add-my-event.php
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
require '../../config/connexion_sql.php';
|
||||
global $bdd;
|
||||
|
||||
// Vérifier que l'utilisateur est connecté et que l'ID de session est défini
|
||||
if (!isset($id_session)) {
|
||||
die(json_encode(['status' => 'error', 'message' => 'Utilisateur non connecté.']));
|
||||
}
|
||||
$id_user = $id_session; // Récupérer l'ID de l'utilisateur depuis la session
|
||||
|
||||
// Fonction de validation des dates
|
||||
function validateDateTime($dateTime, $format = 'Y-m-d H:i:s') {
|
||||
$d = DateTime::createFromFormat($format, $dateTime);
|
||||
return $d && $d->format($format) === $dateTime;
|
||||
}
|
||||
|
||||
// Récupération et validation des entrées
|
||||
$start = isset($_POST['start']) ? $_POST['start'] : null;
|
||||
$end = isset($_POST['end']) ? $_POST['end'] : null;
|
||||
$id_vehicule = isset($_POST['id_vehicule']) ? intval($_POST['id_vehicule']) : null;
|
||||
|
||||
// Vérification que toutes les entrées sont présentes et valides
|
||||
if (!$id_vehicule || !$start || !$end) {
|
||||
die(json_encode(['status' => 'error', 'message' => 'Tous les champs sont requis.']));
|
||||
}
|
||||
|
||||
// Validation des formats de date
|
||||
if (!validateDateTime($start) || !validateDateTime($end)) {
|
||||
die(json_encode(['status' => 'error', 'message' => 'Les dates doivent être dans un format valide (YYYY-MM-DD HH:MM:SS).']));
|
||||
}
|
||||
|
||||
try {
|
||||
// Démarrer la transaction
|
||||
$bdd->beginTransaction();
|
||||
|
||||
// Préparation de la requête SQL avec des paramètres liés
|
||||
$sqlInsert = "INSERT INTO Reservations (id_user, id_vehicule, start, end) VALUES (:id_user, :id_vehicule, :start, :end)";
|
||||
$stmt = $bdd->prepare($sqlInsert);
|
||||
|
||||
// Liaison des valeurs aux paramètres
|
||||
$stmt->bindParam(':id_user', $id_user, PDO::PARAM_INT);
|
||||
$stmt->bindParam(':id_vehicule', $id_vehicule, PDO::PARAM_INT);
|
||||
$stmt->bindParam(':start', $start, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':end', $end, PDO::PARAM_STR);
|
||||
|
||||
// Exécution de la requête préparée
|
||||
if ($stmt->execute()) {
|
||||
// Récupérer l'ID de la dernière réservation insérée
|
||||
$lastInsertId = $bdd->lastInsertId();
|
||||
|
||||
// Mise à jour du titre de la réservation avec l'ID
|
||||
$sqlUpdate = "UPDATE Reservations SET title = CONCAT('Reservation ', :id) WHERE id = :id";
|
||||
$stmtUpdate = $bdd->prepare($sqlUpdate);
|
||||
$stmtUpdate->bindParam(':id', $lastInsertId, PDO::PARAM_INT);
|
||||
|
||||
if ($stmtUpdate->execute()) {
|
||||
// Commit de la transaction
|
||||
$bdd->commit();
|
||||
echo json_encode(['status' => 'success', 'message' => 'Réservation créée avec succès.', 'reservation_id' => $lastInsertId]);
|
||||
} else {
|
||||
// Rollback de la transaction
|
||||
$bdd->rollBack();
|
||||
$error = $stmtUpdate->errorInfo();
|
||||
echo json_encode(['status' => 'error', 'message' => 'Erreur lors de la mise à jour de la réservation : ' . $error[2]]);
|
||||
}
|
||||
} else {
|
||||
// Rollback de la transaction
|
||||
$bdd->rollBack();
|
||||
$error = $stmt->errorInfo();
|
||||
echo json_encode(['status' => 'error', 'message' => 'Erreur lors de la création de la réservation : ' . $error[2]]);
|
||||
}
|
||||
} catch (PDOException $e) {
|
||||
// Rollback de la transaction en cas d'exception
|
||||
$bdd->rollBack();
|
||||
echo json_encode(['status' => 'error', 'message' => 'Erreur de connexion à la base de données : ' . $e->getMessage()]);
|
||||
}
|
||||
|
||||
// Fermeture de la connexion PDO
|
||||
$bdd = null;
|
||||
?>
|
||||
14
modele/event/delete-event.php
Normal file
14
modele/event/delete-event.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
require '../../config/connexion_sql.php';
|
||||
global $bdd;
|
||||
$id = $_POST['id'];
|
||||
$sqlDelete = "DELETE FROM Reservations WHERE id=:id";
|
||||
$stmt = $bdd->prepare($sqlDelete);
|
||||
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
// Utilisation de rowCount() pour obtenir le nombre de lignes affectées
|
||||
$affectedRows = $stmt->rowCount();
|
||||
echo $affectedRows;
|
||||
// Fermeture de la connexion PDO
|
||||
$bdd = null;
|
||||
?>
|
||||
16
modele/event/fetch-all-events.php
Normal file
16
modele/event/fetch-all-events.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
require '../../config/connexion_sql.php';
|
||||
global $bdd;
|
||||
$json = array();
|
||||
$sqlQuery = "SELECT res.*, car.marque, car.modele, usr.pseudo FROM Reservations res INNER JOIN Clients usr ON res.id_user = usr.id INNER JOIN Vehicules car ON res.id_vehicule = car.id ORDER BY res.id";
|
||||
$stmt = $bdd->query($sqlQuery);
|
||||
$eventArray = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
foreach ($eventArray as &$event) {
|
||||
$event['vehicule'] = $event['marque'] . ' ' . $event['modele']; // Supposons que le nom du véhicule est stocké dans 'marque'
|
||||
}
|
||||
foreach ($eventArray as &$event) {
|
||||
$event['utilisateur'] = $event['pseudo']; // Supposons que le nom du véhicule est stocké dans 'marque'
|
||||
}
|
||||
echo json_encode($eventArray);
|
||||
$bdd = null;
|
||||
?>
|
||||
19
modele/event/fetch-my-events.php
Normal file
19
modele/event/fetch-my-events.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
require '../../config/connexion_sql.php';
|
||||
global $bdd;
|
||||
$id = $_SESSION['id_session'];
|
||||
$json = array();
|
||||
$sqlQuery = "SELECT res.*, car.marque, car.modele, usr.pseudo FROM Reservations res INNER JOIN Clients usr ON res.id_user = usr.id INNER JOIN Vehicules car ON res.id_vehicule = car.id WHERE res.id_user = :id ORDER BY res.id";
|
||||
$stmt = $bdd->prepare($sqlQuery);
|
||||
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$eventArray = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
foreach ($eventArray as &$event) {
|
||||
$event['vehicule'] = $event['marque'] . ' ' . $event['modele']; // Supposons que le nom du véhicule est stocké dans 'marque'
|
||||
}
|
||||
foreach ($eventArray as &$event) {
|
||||
$event['utilisateur'] = $event['pseudo']; // Supposons que le nom du véhicule est stocké dans 'marque'
|
||||
}
|
||||
echo json_encode($eventArray);
|
||||
$bdd = null;
|
||||
?>
|
||||
25
modele/get_cars.php
Normal file
25
modele/get_cars.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
# INITIALISATION DE LA MAP
|
||||
require '../config/connexion_sql.php';
|
||||
global $bdd;
|
||||
// Requête pour récupérer les Vehicules
|
||||
$query = "SELECT * FROM Vehicules";
|
||||
$statement = $bdd->query($query);
|
||||
$cars = $statement->fetchAll(PDO::FETCH_ASSOC);
|
||||
// Initialisation d'un tableau pour stocker les données des Vehicules
|
||||
$Vehicules = array();
|
||||
// Remplissage du tableau avec les données récupérées de la base de données
|
||||
foreach ($cars as $car) {
|
||||
$Vehicules[$car['id']] = array(
|
||||
"lat" => $car['latitude'],
|
||||
"lon" => $car['longitude'],
|
||||
"img" => $car['image'],
|
||||
"marque" => $car['marque'],
|
||||
"modele" => $car['modele'],
|
||||
"dispo" => $car['disponible'],
|
||||
"annee" => $car['annee']);
|
||||
}
|
||||
// Renvoi des données au format JSON
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($Vehicules);
|
||||
?>
|
||||
255
modele/profil.php
Normal file
255
modele/profil.php
Normal file
@@ -0,0 +1,255 @@
|
||||
<?php
|
||||
# Connexion modele
|
||||
class Connexion
|
||||
{
|
||||
public function checkCredentials($pseudo, $password) {
|
||||
// Ici, vous devriez effectuer la validation des identifiants
|
||||
// en interagissant avec une base de données ou une autre source de données.
|
||||
// Pour simplifier, nous supposerons que les identifiants sont corrects.
|
||||
return true;
|
||||
}
|
||||
function check_Password(){
|
||||
global $bdd;
|
||||
$pseudo=$_POST['pseudo_connect'];
|
||||
$req = $bdd->prepare('SELECT mdp, id, privilege, pseudo FROM Clients WHERE pseudo = :pseudo');
|
||||
$req->bindValue(':pseudo',$pseudo , PDO::PARAM_STR);
|
||||
$req->execute();
|
||||
$data = $req->fetch();
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
function get_MemberCount(){
|
||||
global $bdd;
|
||||
$TotalDesMembres = $bdd->query('SELECT COUNT(*) FROM Clients')->fetchColumn();
|
||||
return $TotalDesMembres;
|
||||
}
|
||||
function get_LastMember(){
|
||||
global $bdd;
|
||||
$req = $bdd->query('SELECT pseudo, id FROM Clients ORDER BY id DESC LIMIT 0, 1');
|
||||
$data = $req->fetch();
|
||||
return $data;
|
||||
}
|
||||
function get_checkPseudo(){
|
||||
global $bdd;
|
||||
$pseudo=$_POST['pseudo'];
|
||||
$req = $bdd->prepare('SELECT COUNT(*) AS nbr FROM Clients WHERE pseudo =:pseudo');
|
||||
$req->bindValue(':pseudo',$pseudo, PDO::PARAM_STR);
|
||||
$req->execute();
|
||||
$pseudo_free=($req->fetchColumn()==0)?1:0;
|
||||
$req->CloseCursor();
|
||||
return $pseudo_free;
|
||||
}
|
||||
function get_checkMail(){
|
||||
global $bdd;
|
||||
$email = $_POST['email'];
|
||||
$req = $bdd->prepare('SELECT COUNT(*) AS nbr FROM Clients WHERE email =:mail');
|
||||
$req->bindValue(':mail',$email, PDO::PARAM_STR);
|
||||
$req->execute();
|
||||
$mail_free=($req->fetchColumn()==0)?1:0;
|
||||
$req->CloseCursor();
|
||||
return $mail_free;
|
||||
}
|
||||
function get_ProfilsInfo(){ // Informations de tout les vehicules dans un tableau
|
||||
global $bdd;
|
||||
$req = $bdd->prepare('SELECT id, privilege, dateenregistre, pseudo, prenom, nom, phone, adresse, mdp, email, avatar, phone FROM Clients ORDER BY id');
|
||||
$req->execute();
|
||||
$data = $req->fetchAll(PDO::FETCH_ASSOC);
|
||||
return $data;
|
||||
}
|
||||
function get_MemberInfo(){
|
||||
global $bdd;
|
||||
$membre = isset($_GET['m']) ? (int)$_GET['m'] : 0;
|
||||
$req = $bdd->prepare('SELECT pseudo, mdp, email, avatar, adresse, prenom, nom, phone, dateenregistre FROM Clients WHERE id = :membre');
|
||||
$req->execute(array(':membre' => $membre));
|
||||
return $req->fetch(PDO::FETCH_ASSOC);
|
||||
}
|
||||
function get_MemberInfoId(){
|
||||
global $bdd;
|
||||
$id=(isset($_SESSION['id_session']))?(int) $_SESSION['id_session']:0;
|
||||
|
||||
//On prend les infos du membre
|
||||
$req = $bdd->prepare('SELECT pseudo, mdp, email, avatar, adresse, prenom, nom, phone, dateenregistre FROM Clients WHERE id=:id');
|
||||
$req->bindValue(':id',$id,PDO::PARAM_INT);
|
||||
$req->execute();
|
||||
$data = $req->fetch();
|
||||
return $data;
|
||||
}
|
||||
function get_checkMail2(){
|
||||
global $bdd;
|
||||
$id=(isset($_SESSION['id_session']))?(int) $_SESSION['id_session']:0;
|
||||
//On commence donc par récupérer le mail
|
||||
$req = $bdd->prepare('SELECT email FROM Clients WHERE id =:id');
|
||||
$req->bindValue(':id',$id,PDO::PARAM_INT);
|
||||
$req->execute();
|
||||
$data = $req->fetch();
|
||||
return $data;
|
||||
}
|
||||
function get_Pseudo(){
|
||||
global $bdd;
|
||||
$id=(isset($_SESSION['id_session']))?(int) $_SESSION['id_session']:0;
|
||||
//On commence donc par récupérer le pseudo
|
||||
$req = $bdd->prepare('SELECT pseudo FROM Clients WHERE id =:id');
|
||||
$req->bindValue(':id',$id,PDO::PARAM_INT);
|
||||
$req->execute();
|
||||
$data = $req->fetch();
|
||||
return $data;
|
||||
}
|
||||
function get_checkCopyMail(){
|
||||
global $bdd;
|
||||
$email = $_POST['email'];
|
||||
//Il faut que l'adresse email n'ait jamais été utilisée
|
||||
$req = $bdd->prepare('SELECT COUNT(*) AS nbr FROM Clients WHERE email =:mail');
|
||||
$req->bindValue(':mail',$email,PDO::PARAM_STR);
|
||||
$req->execute();
|
||||
$mail_free = ($req->fetchColumn()==0)?1:0;
|
||||
$req->CloseCursor();
|
||||
return $mail_free;
|
||||
}
|
||||
# Inscription modele
|
||||
function post_Registre(){
|
||||
global $bdd;
|
||||
$pseudo=$_POST['pseudo'];
|
||||
$pass = /*md5*/($_POST['password']);
|
||||
$email = $_POST['email'];
|
||||
$localisation = $_POST['localisation'];
|
||||
$prenom = $_POST['prenom'];
|
||||
$nom = $_POST['nom'];
|
||||
$phone = $_POST['phone'];
|
||||
$image = $_FILES['avatar'];
|
||||
// Créer le répertoire pour les images si nécessaire
|
||||
$dirPath = "./images/avatars/" . $pseudo . "/";
|
||||
if (!is_dir($dirPath)) {
|
||||
mkdir($dirPath, 0700, true);
|
||||
}
|
||||
// Vérifier si l'image est fournie et valide
|
||||
if (!empty($image['size']) && $image['error'] === UPLOAD_ERR_OK) {
|
||||
$nomimage = edit_avatar($image, $pseudo);
|
||||
} else {
|
||||
// Utiliser une image par défaut si aucune image n'est fournie
|
||||
$defaultImagePath = "./images/avatars/img_user.jpg";
|
||||
$dirPath = "./images/avatars/" . $pseudo . "/img_user.jpg";
|
||||
$nomimage = "/images/avatars/" . $pseudo . "/img_user.jpg";
|
||||
copy($defaultImagePath, $dirPath);
|
||||
}
|
||||
$req = $bdd->prepare('INSERT INTO Clients (pseudo, mdp, email, avatar, adresse, prenom, nom, phone, dateenregistre)
|
||||
VALUES (:pseudo, :pass, :email, :nomimage, :localisation, :prenom, :nom, :phone, NOW())');
|
||||
$req->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
|
||||
$req->bindValue(':pass', $pass, PDO::PARAM_STR);
|
||||
$req->bindValue(':email', $email, PDO::PARAM_STR);
|
||||
$req->bindValue(':nomimage', $nomimage, PDO::PARAM_STR);
|
||||
$req->bindValue(':localisation', $localisation, PDO::PARAM_STR);
|
||||
$req->bindValue(':prenom', $prenom, PDO::PARAM_STR);
|
||||
$req->bindValue(':nom', $nom, PDO::PARAM_STR);
|
||||
$req->bindValue(':phone', $phone, PDO::PARAM_STR);
|
||||
$req->execute();
|
||||
}
|
||||
function post_RemoveAvatar($pseudo){
|
||||
global $bdd;
|
||||
$id=(isset($_SESSION['id_session']))?(int) $_SESSION['id_session']:0;
|
||||
// Utiliser une image par défaut si aucune image n'est fournie
|
||||
$defaultImagePath = "./images/avatars/img_user.jpg";
|
||||
$dirPath = "./images/avatars/" . $pseudo . "/img_user.jpg";
|
||||
$nomimage = "./images/avatars/" . $pseudo . "/img_user.jpg";
|
||||
copy($defaultImagePath, $dirPath);
|
||||
}
|
||||
function post_UpdateProfile($pseudo, $pass = null, $email = null, $localisation = null, $phone = null) {
|
||||
global $bdd;
|
||||
$id = isset($_SESSION['id_session']) ? (int)$_SESSION['id_session'] : 0;
|
||||
// Mise à jour de l'avatar
|
||||
if (isset($_FILES['avatar'])) {
|
||||
$image = $_FILES['avatar'];
|
||||
$dirPath = "./images/avatars/" . $pseudo . "/";
|
||||
// Vérifier si l'image est fournie et valide
|
||||
if (!empty($image['size']) && $image['error'] === UPLOAD_ERR_OK) {
|
||||
$nomimage = edit_avatar($image, $pseudo);
|
||||
} else {
|
||||
// Utiliser une image par défaut si aucune image n'est fournie
|
||||
$defaultImagePath = "./images/avatars/img_user.jpg";
|
||||
$dirPath = "./images/avatars/" . $pseudo . "/img_user.jpg";
|
||||
$nomimage = "./images/avatars/" . $pseudo . "/img_user.jpg";
|
||||
file_exists($nomimage) ? : copy($defaultImagePath, $nomimage);
|
||||
}
|
||||
}
|
||||
// Mise à jour des informations du membre
|
||||
if ($pass !== null || $email !== null || $localisation !== null || $phone !== null) {
|
||||
$fields = [];
|
||||
$params = [':id' => $id];
|
||||
if ($pass !== null) {
|
||||
$fields[] = 'mdp = :mdp';
|
||||
$params[':mdp'] = $pass; // Utilisez password_hash($pass, PASSWORD_DEFAULT) pour sécuriser les mots de passe
|
||||
}
|
||||
if ($email !== null) {
|
||||
$fields[] = 'email = :mail';
|
||||
$params[':mail'] = $email;
|
||||
}
|
||||
if ($localisation !== null) {
|
||||
$fields[] = 'adresse = :loc';
|
||||
$params[':loc'] = $localisation;
|
||||
}
|
||||
if ($phone !== null) {
|
||||
$fields[] = 'phone = :phone';
|
||||
$params[':phone'] = $phone;
|
||||
}
|
||||
if (!empty($fields)) {
|
||||
$sql = 'UPDATE Clients SET ' . implode(', ', $fields) . ' WHERE id = :id';
|
||||
$req = $bdd->prepare($sql);
|
||||
$req->execute($params);
|
||||
}
|
||||
}
|
||||
}
|
||||
function edit_avatar($image, $pseudo) {
|
||||
if (isset($image)) {
|
||||
$source = $image['tmp_name'];
|
||||
$dir = "./images/avatars/" . $pseudo . "/img_user.jpg";
|
||||
// Redimensionner l'image à la taille spécifiée (300x300)
|
||||
$newWidth = 300;
|
||||
$newHeight = 300;
|
||||
list($width, $height) = getimagesize($source);
|
||||
$imageResized = imagecreatetruecolor($newWidth, $newHeight);
|
||||
switch (exif_imagetype($source)) {
|
||||
case IMAGETYPE_JPEG:
|
||||
$imageSource = imagecreatefromjpeg($source);
|
||||
break;
|
||||
case IMAGETYPE_PNG:
|
||||
$imageSource = imagecreatefrompng($source);
|
||||
break;
|
||||
case IMAGETYPE_GIF:
|
||||
$imageSource = imagecreatefromgif($source);
|
||||
break;
|
||||
default:
|
||||
return "Unsupported image type";
|
||||
}
|
||||
imagecopyresized($imageResized, $imageSource, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
|
||||
// Sauvegarder l'image redimensionnée en JPEG
|
||||
imagejpeg($imageResized, $dir, 85); // Le troisième paramètre est la qualité de l'image JPEG (0-100)
|
||||
// Libérer la mémoire
|
||||
imagedestroy($imageResized);
|
||||
imagedestroy($imageSource);
|
||||
// Retourner le chemin relatif de l'image redimensionnée
|
||||
return $dir;
|
||||
}
|
||||
}
|
||||
function post_RemoveClient($id) {
|
||||
global $bdd;
|
||||
$id = $_SESSION['id_session'];
|
||||
// Récupérer le chemin de l'image à partir de la base de données
|
||||
$req = $bdd->prepare('SELECT avatar FROM Clients WHERE id= :id');
|
||||
$req->bindValue(':id', $id, PDO::PARAM_INT);
|
||||
$req->execute();
|
||||
$data = $req->fetch(PDO::FETCH_ASSOC);
|
||||
if ($data) {
|
||||
// Supprimer l'image
|
||||
$imagePath = $data['avatar'];
|
||||
unlink($imagePath);
|
||||
// Supprimer le dossier
|
||||
$folderPath = dirname($imagePath);
|
||||
rmdir($folderPath);
|
||||
}
|
||||
// Supprimer le véhicule de la base de données
|
||||
$req = $bdd->prepare('DELETE FROM Clients WHERE id=:id');
|
||||
$req->bindValue(':id', $id, PDO::PARAM_INT);
|
||||
$req->execute();
|
||||
$req->closeCursor();
|
||||
session_destroy(); // Vous pouvez adapter cette étape en fonction de votre gestion de sessions
|
||||
}
|
||||
?>
|
||||
142
modele/vehicule.php
Normal file
142
modele/vehicule.php
Normal file
@@ -0,0 +1,142 @@
|
||||
<?php
|
||||
function get_checkPlaque(){ // Verification pour ajout d'une voiture
|
||||
global $bdd;
|
||||
$plaque=$_POST['plaque'];
|
||||
$req = $bdd->prepare('SELECT COUNT(*) AS nbr FROM Vehicules WHERE plaque =:plaque');
|
||||
$req->bindValue(':plaque',$plaque, PDO::PARAM_STR);
|
||||
$req->execute();
|
||||
$plaque_free=($req->fetchColumn()==0)?1:0;
|
||||
$req->CloseCursor();
|
||||
return $plaque_free;
|
||||
}
|
||||
function get_CarsInfo(){ // Informations de tout les vehicules dans un tableau
|
||||
global $bdd;
|
||||
$req = $bdd->prepare('SELECT id, plaque, image, marque, modele, annee, disponible, latitude, longitude, ip FROM Vehicules ORDER BY id');
|
||||
$req->execute();
|
||||
$data = $req->fetchAll(PDO::FETCH_ASSOC);
|
||||
return $data;
|
||||
}
|
||||
function getCarInfoMap() {
|
||||
global $bdd;
|
||||
// Requête pour récupérer les Vehicules
|
||||
$query = "SELECT * FROM Vehicules";
|
||||
$statement = $bdd->query($query);
|
||||
$cars = $statement->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
// Initialisation d'un tableau pour stocker les données des Vehicules
|
||||
$vehiculesData = array();
|
||||
|
||||
// Remplissage du tableau avec les données récupérées de la base de données
|
||||
foreach ($cars as $car) {
|
||||
$vehiculesData[$car['id']] = array(
|
||||
"lat" => $car['latitude'],
|
||||
"lon" => $car['longitude'],
|
||||
"img" => $car['image'],
|
||||
"marque" => $car['marque'],
|
||||
"modele" => $car['modele'],
|
||||
"dispo" => $car['disponible'],
|
||||
"annee" => $car['annee']
|
||||
);
|
||||
}
|
||||
return json_encode($vehiculesData);
|
||||
}
|
||||
function get_VehiculesCount(){
|
||||
global $bdd;
|
||||
$TotalDesVehiculess = $bdd->query('SELECT COUNT(*) FROM Vehicules')->fetchColumn();
|
||||
return $TotalDesVehiculess;
|
||||
}
|
||||
function get_CarInfoId(){
|
||||
global $bdd;
|
||||
$id=1;
|
||||
//On prend les infos de la Vehicules
|
||||
$req = $bdd->prepare('SELECT latitude, longitude FROM Vehicules WHERE id=:id');
|
||||
$req->bindValue(':id',$id,PDO::PARAM_INT);
|
||||
$req->execute();
|
||||
$data = $req->fetch();
|
||||
return $data;
|
||||
}
|
||||
function post_RemoveVehicule($id) {
|
||||
global $bdd;
|
||||
|
||||
// Récupérer le chemin de l'image à partir de la base de données
|
||||
$req = $bdd->prepare('SELECT image FROM Vehicules WHERE id=:id');
|
||||
$req->bindValue(':id', $id, PDO::PARAM_INT);
|
||||
$req->execute();
|
||||
$data = $req->fetch(PDO::FETCH_ASSOC);
|
||||
if ($data) {
|
||||
// Supprimer l'image
|
||||
$imagePath = $data['image'];
|
||||
unlink($imagePath);
|
||||
// Supprimer le dossier
|
||||
$folderPath = dirname($imagePath);
|
||||
rmdir($folderPath);
|
||||
}
|
||||
// Supprimer le véhicule de la base de données
|
||||
$req = $bdd->prepare('DELETE FROM Vehicules WHERE id=:id');
|
||||
$req->bindValue(':id', $id, PDO::PARAM_INT);
|
||||
$req->execute();
|
||||
$req->closeCursor();
|
||||
}
|
||||
function post_RegistreCar(){ // Ajout vehicule en DB
|
||||
global $bdd;
|
||||
$plaque=$_POST['plaque'];
|
||||
$marque=$_POST['marque'];
|
||||
$modele=$_POST['modele'];
|
||||
$annee=$_POST['annee'];
|
||||
$image = $_FILES['image'];
|
||||
// Créer le répertoire pour les images si nécessaire
|
||||
$dirPath = "./images/vehicules/" . $plaque . "/";
|
||||
if (!is_dir($dirPath)) {
|
||||
mkdir($dirPath, 0700, true);
|
||||
}
|
||||
// Vérifier si l'image est fournie et valide
|
||||
if (!empty($image['size']) && $image['error'] === UPLOAD_ERR_OK) {
|
||||
$nomimage = edit_image($image, $plaque);
|
||||
} else {
|
||||
// Utiliser une image par défaut si aucune image n'est fournie
|
||||
$defaultImagePath = "./images/vehicules/img_voiture.png";
|
||||
$dirPath = "./images/vehicules/" . $plaque . "/img_voiture.png";
|
||||
$nomimage = "/images/vehicules/" . $plaque . "/img_voiture.png";
|
||||
copy($defaultImagePath, $dirPath);
|
||||
}
|
||||
$req = $bdd->prepare('INSERT INTO Vehicules (plaque, marque, modele, annee, image) VALUES (:plaque, :marque, :modele, :annee, :nomimage)');
|
||||
$req->bindValue(':plaque', $plaque, PDO::PARAM_STR);
|
||||
$req->bindValue(':marque', $marque, PDO::PARAM_STR);
|
||||
$req->bindValue(':modele', $modele, PDO::PARAM_STR);
|
||||
$req->bindValue(':annee', $annee, PDO::PARAM_STR);
|
||||
$req->bindValue(':nomimage', $nomimage, PDO::PARAM_STR);
|
||||
$req->execute();
|
||||
}
|
||||
function edit_image($image, $plaque) {
|
||||
if (isset($image)) {
|
||||
$source = $image['tmp_name'];
|
||||
$dir = "./images/vehicules/" . $plaque . "/img_vehicule.png";
|
||||
// Redimensionner l'image à la taille spécifiée (300x300)
|
||||
$newWidth = 300;
|
||||
$newHeight = 300;
|
||||
list($width, $height) = getimagesize($source);
|
||||
$imageResized = imagecreatetruecolor($newWidth, $newHeight);
|
||||
switch (exif_imagetype($source)) {
|
||||
case IMAGETYPE_JPEG:
|
||||
$imageSource = imagecreatefromjpeg($source);
|
||||
break;
|
||||
case IMAGETYPE_PNG:
|
||||
$imageSource = imagecreatefrompng($source);
|
||||
break;
|
||||
case IMAGETYPE_GIF:
|
||||
$imageSource = imagecreatefromgif($source);
|
||||
break;
|
||||
default:
|
||||
return "Unsupported image type";
|
||||
}
|
||||
imagecopyresized($imageResized, $imageSource, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
|
||||
// Sauvegarder l'image redimensionnée
|
||||
imagepng($imageResized, $dir);
|
||||
// Libérer la mémoire
|
||||
imagedestroy($imageResized);
|
||||
imagedestroy($imageSource);
|
||||
// Retourner le chemin relatif de l'image redimensionnée
|
||||
return $dir;
|
||||
}
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user