-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodele.php
More file actions
206 lines (184 loc) · 10.9 KB
/
modele.php
File metadata and controls
206 lines (184 loc) · 10.9 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
194
195
196
197
198
199
200
201
202
203
204
205
206
<?php
// Connexion à la base de données via PDO
try {
$bdd = new PDO('mysql:host=localhost;dbname=tpforum;charset=utf8', 'root', '');
} catch (Exception $e) {
die('Erreur : ' . $e->getMessage());
}
// Fonction pour voir les news (page 1)
function getNews()
{
global $bdd;
$get = $bdd->query('SELECT *, messages.contenu AS contenu_news, messages.date AS date_message from messages INNER JOIN personne ON messages.ID_utilisateur = personne.ID ORDER BY messages.date DESC');
return $get;
}
// Fonction qui retourne l'ID d'un utilisateur en fonction de son email
function getID($email)
{
global $bdd;
$get = $bdd->prepare('SELECT ID from personne WHERE email = ?');
$get->execute(array($email));
return $get->fetch();
}
// Fonction qui retourne le nom d'un utilisateur en fonction de son email
function getNom($email)
{
global $bdd;
$get = $bdd->prepare('SELECT nom from personne WHERE email = ?');
$get->execute(array($email));
return $get->fetch();
}
// Fonction pour poster une news
function posterNews($ID_utilisateur, $date, $contenu, $categorie)
{
global $bdd;
$news = $bdd->prepare('INSERT INTO messages(ID_utilisateur,date,contenu,ID_categorie) VALUES(:ID_utilisateur, :date, :contenu,:categorie)');
$news->bindParam('ID_utilisateur', $ID_utilisateur, PDO::PARAM_INT);
$news->bindParam('date', $date, PDO::PARAM_STR);
$news->bindParam('contenu', $contenu, PDO::PARAM_STR);
$news->bindParam('categorie', $categorie, PDO::PARAM_STR);
$news->execute();
//header('Refresh:0');
}
// Fonction qui vérifie si un compte est déjà dans la BDD
function verifEmail($email)
{
global $bdd;
$verify = $bdd->prepare('SELECT email FROM personne WHERE email = ?');
$verify->execute(array($email));
$data = $verify->fetch();
if ($data > 0) {
return false;
} else {
return true;
}
}
// Fonction pour créer un compte
function creerCompte($nom, $email, $pass)
{
global $bdd;
$hash = password_hash($pass, PASSWORD_DEFAULT);
$compte = $bdd->prepare('INSERT INTO personne(nom,email,mot_de_passe) VALUES(:nom,:email,:mot_de_passe)');
$compte->bindParam('nom', $nom, PDO::PARAM_STR);
$compte->bindParam('email', $email, PDO::PARAM_STR);
$compte->bindParam('mot_de_passe', $hash, PDO::PARAM_STR);
$compte->execute();
}
// Fonction qui teste la connexion
function testConnexion($email, $pass)
{
global $bdd;
$connexion = $bdd->prepare('SELECT * from personne WHERE email = ?');
$connexion->execute(array($email));
$data = $connexion->fetch();
if (password_verify($pass, $data['mot_de_passe'])) {
// Connexion bonne
return $data['ID'];
} else {
// Connexion fausse
return false;
}
}
// Fonction qui récupère les commentaires
function getCommentaires($id)
{
global $bdd;
$get = $bdd->prepare('SELECT * FROM commentaire INNER JOIN personne ON commentaire.ID_utilisateur = personne.ID WHERE ID_message = ?');
$get->execute(array($id));
return $get;
}
// Fonction ajoutant un commentaire
function ajoutCommentaire($ID_message, $ID_utilisateur, $date, $contenu)
{
global $bdd;
$commentaire = $bdd->prepare('INSERT INTO commentaire(ID_message,ID_utilisateur,date,contenu) VALUES(:ID_message, :ID_utilisateur, :date, :contenu)');
$commentaire->bindParam('ID_message', $ID_message, PDO::PARAM_INT);
$commentaire->bindParam('ID_utilisateur', $ID_utilisateur, PDO::PARAM_INT);
$commentaire->bindParam('date', $date, PDO::PARAM_STR);
$commentaire->bindParam('contenu', $contenu, PDO::PARAM_STR);
$commentaire->execute();
}
// On récupère les auteurs
function getAuteurs()
{
global $bdd;
$get = $bdd->query('SELECT DISTINCT personne.nom, personne.ID from messages INNER JOIN personne ON messages.ID_utilisateur = personne.ID');
return $get;
}
// On récupère les catégories
function getCategories()
{
global $bdd;
$get = $bdd->query('SELECT * from categories');
return $get;
}
// On récupère le nombre d'articles
function getNbreArticles()
{
global $bdd;
$get = $bdd->query('SELECT ID, count(ID) FROM messages');
return $get;
}
function getNbreAuteurs()
{
global $bdd;
$get = $bdd->query('SELECT ID_utilisateur, count(distinct(ID_utilisateur)) FROM messages');
return $get->fetch();
}
// fonction qui tri les articles
function tri($id, $categorie, $date)
{
global $bdd;
// Cas où on choisit un auteur mais pas de catégorie
if ($id > 0 && $categorie == 0 && $date == "") {
$get = $bdd->prepare('SELECT * FROM (SELECT DISTINCT messages.ID AS ID_news, messages.date AS date_message, messages.contenu AS contenu_news, commentaire.date AS date_rep, commentaire.contenu AS contenu_rep, categories.ID, categories.nom_categorie ,messages.ID_categorie, nom FROM messages LEFT JOIN commentaire ON commentaire.ID_message = messages.ID LEFT JOIN personne ON messages.ID_utilisateur = personne.ID INNER JOIN categories ON messages.ID_categorie = categories.ID WHERE messages.ID_utilisateur = ? ORDER BY commentaire.date DESC) AS subquery GROUP BY ID_news ORDER BY subquery.date_rep DESC');
$get->execute(array($id));
return $get;
// Cas où on choisit un auteur et une catégorie
} else if ($id > 0 && $categorie > 0 && $date == "") {
$get = $bdd->prepare('SELECT * FROM (SELECT DISTINCT messages.ID AS ID_news, messages.date AS date_message, messages.contenu AS contenu_news, commentaire.date AS date_rep, commentaire.contenu AS contenu_rep, categories.ID, categories.nom_categorie, messages.ID_categorie, nom FROM messages LEFT JOIN commentaire ON commentaire.ID_message = messages.ID LEFT JOIN personne ON messages.ID_utilisateur = personne.ID INNER JOIN categories ON messages.ID_categorie = categories.ID WHERE (messages.ID_utilisateur = ? AND categories.ID = ?) ORDER BY commentaire.date DESC) AS subquery GROUP BY ID_news ORDER BY subquery.date_rep DESC');
$get->execute(array($id, $categorie));
return $get;
// Cas où on choisit ni auteur, ni catégorie (defaut)
} else if ($id == 0 && $categorie == 0 && $date == "") {
$get = $bdd->query('SELECT * FROM (SELECT DISTINCT messages.ID AS ID_news, messages.date AS date_message, messages.contenu AS contenu_news, commentaire.date AS date_rep, commentaire.contenu AS contenu_rep, categories.ID, categories.nom_categorie, nom FROM messages LEFT JOIN commentaire ON commentaire.ID_message = messages.ID LEFT JOIN personne ON messages.ID_utilisateur = personne.ID INNER JOIN categories ON messages.ID_categorie = categories.ID ORDER BY commentaire.date DESC) AS subquery GROUP BY ID_news ORDER BY subquery.date_rep DESC');
return $get;
// Cas où on choisit une catégorie mais pas d'auteur
} else if ($id == 0 && $categorie > 0) {
$get = $bdd->prepare('SELECT * FROM (SELECT DISTINCT messages.ID AS ID_news, messages.date AS date_message, messages.contenu AS contenu_news, commentaire.date AS date_rep, commentaire.contenu AS contenu_rep, categories.ID, categories.nom_categorie, messages.ID_categorie, nom FROM messages LEFT JOIN commentaire ON commentaire.ID_message = messages.ID LEFT JOIN personne ON messages.ID_utilisateur = personne.ID INNER JOIN categories ON messages.ID_categorie = categories.ID WHERE ( categories.ID = ?) ORDER BY commentaire.date DESC) AS subquery GROUP BY ID_news ORDER BY subquery.date_rep DESC');
$get->execute(array($categorie));
return $get;
// pas d'auteur, pas de catégorie, juste une date
} else if ($id == 0 && $categorie == 0 && $date != "") {
$get = $bdd->prepare('SELECT * FROM (SELECT DISTINCT messages.ID AS ID_news, messages.date AS date_message, messages.contenu AS contenu_news, commentaire.date AS date_rep, commentaire.contenu AS contenu_rep, categories.ID, categories.nom_categorie, messages.ID_categorie, nom FROM messages LEFT JOIN commentaire ON commentaire.ID_message = messages.ID LEFT JOIN personne ON messages.ID_utilisateur = personne.ID INNER JOIN categories ON messages.ID_categorie = categories.ID WHERE ( messages.date < ?) ORDER BY commentaire.date DESC) AS subquery GROUP BY ID_news ORDER BY subquery.date_rep DESC');
$get->execute(array($date));
return $get;
//auteur, pas de caté,date
} else if ($id > 0 && $categorie == 0 && $date != "") {
$get = $bdd->prepare('SELECT * FROM (SELECT DISTINCT messages.ID AS ID_news, messages.date AS date_message, messages.contenu AS contenu_news, commentaire.date AS date_rep, commentaire.contenu AS contenu_rep, categories.ID, categories.nom_categorie, messages.ID_categorie, nom FROM messages LEFT JOIN commentaire ON commentaire.ID_message = messages.ID LEFT JOIN personne ON messages.ID_utilisateur = personne.ID INNER JOIN categories ON messages.ID_categorie = categories.ID WHERE ( messages.ID_utilisateur = ? AND messages.date < ?) ORDER BY commentaire.date DESC) AS subquery GROUP BY ID_news ORDER BY subquery.date_rep DESC');
$get->execute(array($id, $date));
return $get;
// pas d'auteur, caté, date
} else if ($id == 0 && $categorie > 0 && $date != "") {
$get = $bdd->prepare('SELECT * FROM (SELECT DISTINCT messages.ID AS ID_news, messages.date AS date_message, messages.contenu AS contenu_news, commentaire.date AS date_rep, commentaire.contenu AS contenu_rep, categories.ID, categories.nom_categorie, messages.ID_categorie, nom FROM messages LEFT JOIN commentaire ON commentaire.ID_message = messages.ID LEFT JOIN personne ON messages.ID_utilisateur = personne.ID INNER JOIN categories ON messages.ID_categorie = categories.ID WHERE ( categories.ID = ? AND messages.date < ?) ORDER BY commentaire.date DESC) AS subquery GROUP BY ID_news ORDER BY subquery.date_rep DESC');
$get->execute(array($categorie, $date));
return $get;
// Tous les champs remplis
} else if ($id > 0 && $categorie > 0 && $date != "") {
$get = $bdd->prepare('SELECT * FROM (SELECT DISTINCT messages.ID AS ID_news, messages.date AS date_message, messages.contenu AS contenu_news, commentaire.date AS date_rep, commentaire.contenu AS contenu_rep, categories.ID, categories.nom_categorie, messages.ID_categorie, nom FROM messages LEFT JOIN commentaire ON commentaire.ID_message = messages.ID LEFT JOIN personne ON messages.ID_utilisateur = personne.ID INNER JOIN categories ON messages.ID_categorie = categories.ID WHERE ( messages.ID_utilisateur = ? AND categories.ID = ? AND messages.date < ?) ORDER BY commentaire.date DESC) AS subquery GROUP BY ID_news ORDER BY subquery.date_rep DESC');
$get->execute(array($id, $categorie, $date));
return $get;
}
}
function modifierSujet($id, $id_user, $date, $contenu, $categorie)
{
global $bdd;
$modif = $bdd->prepare('UPDATE messages SET ID_utilisateur = :ID_utilisateur, date = :date,contenu = :contenu, ID_categorie=:ID_categorie WHERE ID = :ID');
$modif->execute(array(
"ID" => $id,
"ID_utilisateur" => $id_user,
"date" => $date,
"contenu" => $contenu,
"ID_categorie" => $categorie
));
}