ajout fichiers modification comptes

This commit is contained in:
Armand Sourice 2026-06-05 11:14:55 +02:00
parent cf97e02c21
commit fb10c37323
3 changed files with 207 additions and 22 deletions

View file

@ -0,0 +1,49 @@
<?php
// On inclut le modèle qui contient les fonctions pour la base de données
require_once('../models/modif_compte_model.php');
// On récupère tous les comptes pour afficher la liste à gauche
$resultComptes = getAllComptes($conn);
// Variable pour stocker le compte sélectionné (null par défaut)
$compteSelectionne = null;
// Variable pour afficher un message de confirmation ou d'erreur
$message = "";
// --- CAS 1 : L'utilisateur a cliqué sur un nom dans la liste ---
// On vérifie si un ID est passé dans l'URL (ex: modif_compte_view.php?id=3)
if (isset($_GET['id'])) {
$id = $_GET['id'];
// On récupère les infos du compte correspondant à cet ID
$compteSelectionne = getCompteById($conn, $id);
}
// --- CAS 2 : L'utilisateur a cliqué sur le bouton "Enregistrer" ---
// On vérifie si le formulaire a été envoyé (méthode POST)
if (isset($_POST['enregistrer'])) {
// On récupère les données saisies dans le formulaire
$id = $_POST['id'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$role = $_POST['role'];
$departement = $_POST['departement'];
$numtel = $_POST['numtel'];
$login = $_POST['login'];
$passwd = $_POST['passwd'];
// On appelle la fonction du modèle pour mettre à jour la base de données
updateCompte($conn, $id, $nom, $prenom, $role, $departement, $numtel, $login, $passwd);
// On prépare un message de confirmation
$message = "Le compte a bien été modifié.";
// On recharge les infos du compte pour les réafficher dans le formulaire
$compteSelectionne = getCompteById($conn, $id);
}
// On affiche la vue
require_once('../views/modif_compte_view.php');
?>

View file

@ -0,0 +1,56 @@
<?php
// On inclut le fichier de connexion à la base de données
require_once('../config/config.php');
// Fonction pour récupérer tous les comptes dans la table Utilisateur
// On joint avec Sauveteur pour avoir le nom et le prénom
function getAllComptes($conn) {
$sql = "SELECT Utilisateur.ID, Utilisateur.login, Utilisateur.type,
Sauveteur.nom, Sauveteur.prenom, Sauveteur.departement, Sauveteur.NumTel
FROM Utilisateur
JOIN Sauveteur ON Sauveteur.ID = Utilisateur.ID";
$result = mysqli_query($conn, $sql);
return $result;
}
// Fonction pour récupérer un seul compte à partir de son ID
function getCompteById($conn, $id) {
$sql = "SELECT Utilisateur.ID, Utilisateur.login, Utilisateur.type,
Sauveteur.nom, Sauveteur.prenom, Sauveteur.departement, Sauveteur.NumTel
FROM Utilisateur
JOIN Sauveteur ON Sauveteur.ID = Utilisateur.ID
WHERE Utilisateur.ID = $id";
$result = mysqli_query($conn, $sql);
// On retourne directement la ligne du résultat
return mysqli_fetch_assoc($result);
}
// Fonction pour mettre à jour un compte dans la base de données
function updateCompte($conn, $id, $nom, $prenom, $role, $departement, $numtel, $login, $passwd) {
// Mise à jour de la table Sauveteur (nom, prénom, département, téléphone)
$sql1 = "UPDATE Sauveteur
SET nom = '$nom', prenom = '$prenom', departement = '$departement', NumTel = '$numtel'
WHERE ID = $id";
mysqli_query($conn, $sql1);
// Mise à jour de la table Utilisateur (login, type/rôle)
$sql2 = "UPDATE Utilisateur
SET login = '$login', type = '$role'
WHERE ID = $id";
mysqli_query($conn, $sql2);
// On met à jour le mot de passe seulement si l'utilisateur en a saisi un nouveau
if ($passwd != "") {
// On utilise password_hash pour ne pas stocker le mot de passe en clair
$passwd_hash = password_hash($passwd, PASSWORD_DEFAULT);
$sql3 = "UPDATE Utilisateur
SET passwd = '$passwd_hash'
WHERE ID = $id";
mysqli_query($conn, $sql3);
}
}
?>

View file

@ -1,42 +1,122 @@
<?php <?php
// Ce fichier est la vue : il affiche uniquement le HTML
// Les données ($resultComptes, $compteSelectionne, $message) viennent du contrôleur
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>page de modification du compte</title> <title>Modification d'un compte</title>
</head> </head>
<body> <body>
<header>
<?php include('../views/header.php'); ?>
<h2>Modifier un compte existant</h2> <h2>Modifier un compte existant</h2>
<!-- Navigation entre les deux pages de gestion des comptes -->
<nav> <nav>
<a href="../index.html"><img src="../images/idea.png" alt="Retour vers la page d'accueil" /></a> <a href="../views/creation_compte_view.php">Créer un compte</a>
<a href="../view/crea_compte_view.html"><img src="../images/crea_compte.png" alt="Aller à la page de création du compte" /></a> |
<a href="../controllers/modif_compte_ctrl.php">Modifier un compte</a>
</nav> </nav>
</header>
<table> <table border="1">
<tr> <tr>
<!-- COLONNE GAUCHE : liste de tous les comptes -->
<td> <td>
<h3>Liste des comptes</h3>
<ul> <ul>
<li><p>test1</p></li> <?php
<li><p>test2</p></li> // On parcourt tous les comptes récupérés dans la base
<li><p>test3</p></li> while ($compte = mysqli_fetch_assoc($resultComptes)) {
<li><p>test4</p></li> ?>
<li>
<!-- Un clic sur le nom envoie l'ID dans l'URL -->
<a href="modif_compte_ctrl.php?id=<?php echo $compte['ID']; ?>">
<?php echo $compte['nom'] . ' ' . $compte['prenom']; ?>
</a>
</li>
<?php } ?>
</ul> </ul>
</td> </td>
<!-- COLONNE DROITE : formulaire de modification -->
<td> <td>
<p><input type="text" size="100" maxlength="100" name="name" placeholder="nom du sauveteur" /></p> <h3>Modifier les informations</h3>
<p><input type="text" size="100" maxlength="100" name="name" placeholder="prenom du sauveteur" /></p>
<p><input type="text" size="100" maxlength="100" name="name" placeholder="role du sauveteur" /></p> <!-- Affichage du message de confirmation si une modification a été faite -->
<p><input type="text" size="100" maxlength="100" name="name" placeholder="département du sauveteur" /></p> <?php if ($message != "") { ?>
<p><input type="text" size="100" maxlength="100" name="name" placeholder="numéro de tel du sauveteur" /></p> <p><?php echo $message; ?></p>
<p><input type="text" size="100" maxlength="100" name="name" placeholder="login" /></p> <?php } ?>
<p><input type="text" size="100" maxlength="100" name="name" placeholder="mot de passe" /></p>
<p><input type="submit" value="Enregistrer" /></p> <?php
// On affiche le formulaire seulement si un compte a été sélectionné
if ($compteSelectionne != null) {
?>
<!-- Le formulaire envoie les données en POST vers le contrôleur -->
<form method="POST" action="../controllers/modif_compte_ctrl.php">
<!-- Champ caché pour transmettre l'ID du compte à modifier -->
<input type="hidden" name="id" value="<?php echo $compteSelectionne['ID']; ?>" />
<p>
Nom :
<input type="text" name="nom" size="40" maxlength="100"
value="<?php echo $compteSelectionne['nom']; ?>" />
</p>
<p>
Prénom :
<input type="text" name="prenom" size="40" maxlength="100"
value="<?php echo $compteSelectionne['prenom']; ?>" />
</p>
<p>
Rôle :
<select name="role">
<!-- On pré-sélectionne le rôle actuel du compte -->
<option value="gestionnaire" <?php if ($compteSelectionne['type'] == 'gestionnaire') echo 'selected'; ?>>Gestionnaire</option>
<option value="lecture" <?php if ($compteSelectionne['type'] == 'lecture') echo 'selected'; ?>>Lecture</option>
<option value="administration" <?php if ($compteSelectionne['type'] == 'administration') echo 'selected'; ?>>Administration</option>
</select>
</p>
<p>
Département :
<input type="text" name="departement" size="10" maxlength="10"
value="<?php echo $compteSelectionne['departement']; ?>" />
</p>
<p>
Numéro de téléphone :
<input type="text" name="numtel" size="20" maxlength="20"
value="<?php echo $compteSelectionne['NumTel']; ?>" />
</p>
<p>
Login :
<input type="text" name="login" size="40" maxlength="50"
value="<?php echo $compteSelectionne['login']; ?>" />
</p>
<p>
Nouveau mot de passe :
<!-- Champ vide : si on ne remplit pas, le mot de passe reste inchangé -->
<input type="password" name="passwd" size="40" maxlength="255"
placeholder="Laisser vide pour ne pas modifier" />
</p>
<p>
<input type="submit" name="enregistrer" value="Enregistrer" />
</p>
</form>
<?php } else { ?>
<p>Cliquez sur un compte dans la liste pour le modifier.</p>
<?php } ?>
</td> </td>
</tr> </tr>
</table> </table>
<?php include('../views/footer.php'); ?>
</body> </body>
</html> </html>