-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.php
136 lines (123 loc) · 5.4 KB
/
index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<?php
require 'auth.php';
require 'db.php';
require_login();
$user_id = $_SESSION['user_id']; // ID de l'utilisateur connecté
$message = ''; // Variable pour stocker le message de confirmation ou d'erreur
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['skill_id'], $_POST['level'])) {
$skill_id = (int)$_POST['skill_id'];
$level = (int)$_POST['level'];
// Vérifier si l'utilisateur est administrateur ou possède la compétence
$stmt = $pdo->prepare('SELECT user_id FROM skills WHERE id = ?');
$stmt->execute([$skill_id]);
$skill = $stmt->fetch();
if ($skill && (is_admin() || $skill['user_id'] == $user_id)) {
$stmt = $pdo->prepare('UPDATE skills SET level = ? WHERE id = ?');
$stmt->execute([$level, $skill_id]);
$message = "Le niveau de compétence a été mis à jour avec succès.";
} else {
$message = "Erreur : Vous n’avez pas les autorisations nécessaires.";
}
}
// Récupérer toutes les compétences uniques (colonnes dynamiques)
$skills = $pdo->query('SELECT DISTINCT skill_name FROM skills ORDER BY skill_name')->fetchAll(PDO::FETCH_COLUMN);
// Récupérer les utilisateurs et leurs compétences
$users = $pdo->query('
SELECT u.id AS user_id, u.username, s.skill_name, s.level, s.id AS skill_id
FROM users u
LEFT JOIN skills s ON u.id = s.user_id
WHERE u.is_admin = 0
ORDER BY u.username, s.skill_name
')->fetchAll();
// Organiser les données par utilisateur
$grouped_skills = [];
foreach ($users as $row) {
$grouped_skills[$row['username']][$row['skill_name']] = $row;
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tableau des compétences</title>
<link rel="stylesheet" href="style.css">
<link href="https://unpkg.com/[email protected]/css/boxicons.min.css" rel="stylesheet">
<style>
</style>
</head>
<body>
<main>
<h1 class="titretable">Tableau des compétences</h1>
<table>
<thead>
<tr>
<th>Utilisateur</th>
<?php foreach ($skills as $skill): ?>
<th><?= htmlspecialchars($skill) ?></th>
<?php endforeach; ?>
</tr>
</thead>
<tbody>
<?php foreach ($grouped_skills as $username => $user_skills): ?>
<tr>
<td><?= htmlspecialchars($username) ?></td>
<?php foreach ($skills as $skill_name): ?>
<td>
<?php if (isset($user_skills[$skill_name])): ?>
<?php $skill = $user_skills[$skill_name]; ?>
<?php if ($skill['user_id'] == $user_id || is_admin()): ?>
<form method="POST" style="display: inline;">
<input type="hidden" name="skill_id" value="<?= $skill['skill_id'] ?>">
<select name="level">
<option value="1" <?= $skill['level'] == 1 ? 'selected' : '' ?>>1</option>
<option value="2" <?= $skill['level'] == 2 ? 'selected' : '' ?>>2</option>
<option value="3" <?= $skill['level'] == 3 ? 'selected' : '' ?>>3</option>
</select>
<button type="submit">Modifier</button>
</form>
<?php else: ?>
<?= htmlspecialchars($skill['level']) ?>
<?php endif; ?>
<?php else: ?>
-
<?php endif; ?>
</td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<br>
<button type="submit" class="deconnexion"><a href="logout.php" class="deco">Déconnexion</a></button>
</main>
<!-- Popup de confirmation -->
<div id="overlay"></div>
<div id="popup">
<p id="popup-message"><?= htmlspecialchars($message) ?></p>
<button onclick="closePopup()">OK</button>
</div>
<footer>
2024 © Philippe Gaulin | Tout droit réservé.
<a href="https://github.com/PHlLlPPE" target="_blank" style="color: #ffffff;">
<i class='bx bxl-github'></i>
</a>
</footer>
<script>
// Affiche le popup si un message est défini
document.addEventListener('DOMContentLoaded', function() {
const message = <?= json_encode($message) ?>;
if (message) {
document.getElementById('popup-message').textContent = message;
document.getElementById('popup').classList.add('active');
document.getElementById('overlay').classList.add('active');
}
});
// Fonction pour fermer le popup
function closePopup() {
document.getElementById('popup').classList.remove('active');
document.getElementById('overlay').classList.remove('active');
}
</script>
</body>
</html>