-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstall.php
More file actions
193 lines (164 loc) · 7.2 KB
/
install.php
File metadata and controls
193 lines (164 loc) · 7.2 KB
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
<?php
/**
* Script d'installation pour le système de suivi de présence
*/
require_once 'config/database.php';
echo "<h1>Installation du Système de Suivi de Présence</h1>";
try {
$database = new Database();
echo "<h2>Étape 1: Vérification de la connexion MySQL</h2>";
// Créer la base de données si elle n'existe pas
if (!$database->databaseExists()) {
echo "<p>Création de la base de données 'attendance_system'...</p>";
if ($database->createDatabase()) {
echo "<p style='color: green;'>✓ Base de données créée avec succès</p>";
} else {
throw new Exception("Impossible de créer la base de données");
}
} else {
echo "<p style='color: blue;'>ℹ Base de données 'attendance_system' existe déjà</p>";
}
echo "<h2>Étape 2: Connexion à la base de données</h2>";
$pdo = $database->getConnection();
if ($pdo) {
echo "<p style='color: green;'>✓ Connexion à la base de données réussie</p>";
} else {
throw new Exception("Impossible de se connecter à la base de données");
}
echo "<h2>Étape 3: Création des tables</h2>";
// Lire et exécuter le fichier schema.sql
$schemaFile = 'database/schema.sql';
if (file_exists($schemaFile)) {
$sql = file_get_contents($schemaFile);
// Diviser le SQL en requêtes individuelles
$queries = array_filter(array_map('trim', explode(';', $sql)));
foreach ($queries as $query) {
if (!empty($query) && !preg_match('/^(CREATE DATABASE|USE)/i', $query)) {
try {
$pdo->exec($query);
} catch (PDOException $e) {
// Ignorer les erreurs de tables déjà existantes
if (strpos($e->getMessage(), 'already exists') === false) {
echo "<p style='color: orange;'>Avertissement: " . $e->getMessage() . "</p>";
}
}
}
}
echo "<p style='color: green;'>✓ Tables créées avec succès</p>";
} else {
throw new Exception("Fichier schema.sql introuvable");
}
echo "<h2>Étape 4: Création des vues et insertion des données d'exemple</h2>";
// Lire et exécuter le fichier views_and_sample_data.sql
$dataFile = 'database/views_and_sample_data.sql';
if (file_exists($dataFile)) {
$sql = file_get_contents($dataFile);
// Diviser le SQL en requêtes individuelles
$queries = array_filter(array_map('trim', explode(';', $sql)));
foreach ($queries as $query) {
if (!empty($query) && !preg_match('/^USE/i', $query)) {
try {
$pdo->exec($query);
} catch (PDOException $e) {
// Ignorer certaines erreurs courantes
if (strpos($e->getMessage(), 'already exists') === false &&
strpos($e->getMessage(), 'Duplicate entry') === false) {
echo "<p style='color: orange;'>Avertissement: " . $e->getMessage() . "</p>";
}
}
}
}
echo "<p style='color: green;'>✓ Vues et données d'exemple créées avec succès</p>";
} else {
echo "<p style='color: orange;'>⚠ Fichier views_and_sample_data.sql introuvable - données d'exemple non insérées</p>";
}
echo "<h2>Étape 5: Vérification de l'installation</h2>";
// Vérifier que les tables principales existent
$tables = ['employees', 'departments', 'attendance_records', 'work_schedules', 'leave_requests'];
$allTablesExist = true;
foreach ($tables as $table) {
$stmt = $pdo->prepare("SHOW TABLES LIKE ?");
$stmt->execute([$table]);
if ($stmt->rowCount() > 0) {
echo "<p style='color: green;'>✓ Table '$table' créée</p>";
} else {
echo "<p style='color: red;'>✗ Table '$table' manquante</p>";
$allTablesExist = false;
}
}
// Vérifier les données d'exemple
$stmt = $pdo->prepare("SELECT COUNT(*) as count FROM employees");
$stmt->execute();
$employeeCount = $stmt->fetch()['count'];
if ($employeeCount > 0) {
echo "<p style='color: green;'>✓ $employeeCount employés d'exemple créés</p>";
} else {
echo "<p style='color: orange;'>⚠ Aucun employé d'exemple trouvé</p>";
}
if ($allTablesExist) {
echo "<h2 style='color: green;'>🎉 Installation terminée avec succès!</h2>";
echo "<div style='background: #f0f8ff; padding: 15px; border-left: 4px solid #007cba; margin: 20px 0;'>";
echo "<h3>Prochaines étapes:</h3>";
echo "<ul>";
echo "<li>Vous pouvez maintenant utiliser le système de suivi de présence</li>";
echo "<li>Connectez-vous avec les employés d'exemple créés</li>";
echo "<li>Personnalisez les départements et horaires selon vos besoins</li>";
echo "<li>Configurez les jours fériés pour votre région</li>";
echo "</ul>";
echo "</div>";
echo "<div style='background: #fff3cd; padding: 15px; border-left: 4px solid #ffc107; margin: 20px 0;'>";
echo "<h3>Informations importantes:</h3>";
echo "<ul>";
echo "<li><strong>Base de données:</strong> attendance_system</li>";
echo "<li><strong>Employés d'exemple:</strong> 7 employés créés avec codes EMP001 à EMP007</li>";
echo "<li><strong>Départements:</strong> RH, Informatique, Comptabilité, Marketing, Production</li>";
echo "<li><strong>Horaires par défaut:</strong> 9h-17h du lundi au vendredi</li>";
echo "</ul>";
echo "</div>";
echo "<p><a href='dashboard.php' style='background: #007cba; color: white; padding: 10px 20px; text-decoration: none; border-radius: 5px;'>Accéder au tableau de bord</a></p>";
} else {
echo "<h2 style='color: red;'>❌ Installation incomplète</h2>";
echo "<p>Certaines tables n'ont pas pu être créées. Vérifiez les permissions de la base de données.</p>";
}
} catch (Exception $e) {
echo "<h2 style='color: red;'>❌ Erreur d'installation</h2>";
echo "<p style='color: red;'>Erreur: " . $e->getMessage() . "</p>";
echo "<div style='background: #f8d7da; padding: 15px; border-left: 4px solid #dc3545; margin: 20px 0;'>";
echo "<h3>Solutions possibles:</h3>";
echo "<ul>";
echo "<li>Vérifiez que MySQL/MariaDB est démarré</li>";
echo "<li>Vérifiez les paramètres de connexion dans config/database.php</li>";
echo "<li>Assurez-vous que l'utilisateur MySQL a les permissions nécessaires</li>";
echo "<li>Vérifiez que les fichiers SQL existent dans le dossier database/</li>";
echo "</ul>";
echo "</div>";
}
?>
<style>
body {
font-family: Arial, sans-serif;
max-width: 800px;
margin: 0 auto;
padding: 20px;
line-height: 1.6;
}
h1 {
color: #333;
border-bottom: 2px solid #007cba;
padding-bottom: 10px;
}
h2 {
color: #555;
margin-top: 30px;
}
p {
margin: 10px 0;
}
ul {
margin: 10px 0;
padding-left: 20px;
}
li {
margin: 5px 0;
}
</style>