28 $sql =
"SELECT * FROM album";
29 $pdoStatement = $this->pdo->prepare($sql);
30 $pdoStatement->execute();
31 $pdoStatement->setFetchMode(PDO::FETCH_ASSOC);
32 $tableau = $pdoStatement->fetchAll();
44 $sql =
"SELECT a.*, u.pseudoUtilisateur,
45 (SELECT SUM(nbEcouteChanson) FROM chanson WHERE albumChanson = a.idAlbum) as totalEcoutes
47 JOIN utilisateur u ON a.artisteAlbum = u.emailUtilisateur
48 WHERE a.nomAlbum LIKE :term
49 ORDER BY totalEcoutes DESC
52 $stmt = $this->pdo->prepare($sql);
53 $stmt->execute([
':term' =>
'%' . $term .
'%']);
55 $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
57 foreach ($results as $row) {
59 if (isset($row[
'pseudoUtilisateur'])) {
60 $album->setPseudoArtiste($row[
'pseudoUtilisateur']);
74 $sql =
"SELECT a.*, u.pseudoUtilisateur
76 JOIN utilisateur u ON a.artisteAlbum = u.emailUtilisateur
77 WHERE a.idAlbum = :id";
78 $pdoStatement = $this->pdo->prepare($sql);
79 $pdoStatement->execute([
':id' => $id]);
81 $pdoStatement->setFetchMode(PDO::FETCH_ASSOC);
82 $tableau = $pdoStatement->fetch();
88 $album = $this->
hydrate($tableau);
89 if (isset($tableau[
'pseudoUtilisateur'])) {
90 $album->setPseudoArtiste($tableau[
'pseudoUtilisateur']);
102 $sql =
"SELECT a.* FROM album a
103 JOIN utilisateur u ON a.artisteAlbum = u.emailUtilisateur -- CORRECTION : Jointure sur l'email
104 WHERE u.pseudoUtilisateur = :artistePseudo
105 ORDER BY a.dateSortieAlbum DESC";
106 $pdoStatement = $this->pdo->prepare($sql);
107 $pdoStatement->execute([
':artistePseudo' => $artistePseudo]);
108 $pdoStatement->setFetchMode(PDO::FETCH_ASSOC);
109 $tableau = $pdoStatement->fetchAll();
121 $sql =
"SELECT a.* FROM album a
122 JOIN utilisateur u ON a.artisteAlbum = u.emailUtilisateur -- CORRECTION : Jointure sur l'email (était sur u.pseudoUtilisateur)
123 WHERE u.emailUtilisateur = :email
124 ORDER BY a.dateSortieAlbum DESC";
125 $pdoStatement = $this->pdo->prepare($sql);
126 $pdoStatement->execute([
':email' => $email]);
127 $pdoStatement->setFetchMode(PDO::FETCH_ASSOC);
128 $tableau = $pdoStatement->fetchAll();
140 $sql =
"INSERT INTO album (nomAlbum, dateSortieAlbum, urlPochetteAlbum, artisteAlbum) VALUES (:nomAlbum, :dateSortie, :pochette, :artiste)";
141 $pdoStatement = $this->pdo->prepare($sql);
142 $pdoStatement->execute([
145 ':pochette' => $album->geturlPochetteAlbum(),
149 return (
int)$this->pdo->lastInsertId();
159 $album =
new Album();
160 $album->setIdAlbum(isset($tableaAssoc[
'idAlbum']) ? (
int)$tableaAssoc[
'idAlbum'] :
null);
161 $album->setTitreAlbum($tableaAssoc[
'nomAlbum'] ??
null);
162 $album->setDateSortieAlbum($tableaAssoc[
'dateSortieAlbum'] ??
null);
163 $album->seturlPochetteAlbum($tableaAssoc[
'urlPochetteAlbum'] ??
null);
164 $album->setArtisteAlbum($tableaAssoc[
'artisteAlbum'] ??
null);
176 foreach ($tableauxAssoc as $tableauAssoc) {
177 $albums[] = $this->
hydrate($tableauAssoc);
196 SUM(c.nbEcouteChanson) as totalEcoutes
198 JOIN chanson c ON a.idAlbum = c.albumChanson
199 JOIN utilisateur u ON a.artisteAlbum = u.emailUtilisateur -- CORRECTION : Jointure sur l'email (était sur u.pseudoUtilisateur)
201 ORDER BY totalEcoutes DESC
205 $stmt = $this->pdo->prepare($sql);
206 $stmt->bindValue(
':limit', $limit, PDO::PARAM_INT);
209 $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
212 foreach ($results as $row) {
215 $album->setPseudoArtiste($row[
'pseudoUtilisateur']);
219 }
catch (PDOException $e) {
220 error_log(
'Erreur DAO lors de la récupération des albums les plus écoutés : ' . $e->getMessage());
getPdo()
Getter pour la pdo.
__construct(?PDO $pdo=null)
Constructeur de la classe AlbumDAO.
findByArtiste(string $artistePseudo)
Récupère les albums d'un artiste en utilisant son pseudo.
hydrate(array $tableaAssoc)
Hydrate un album à partir d'un tableau associatif.
findMostListened(int $limit=8)
Récupère les albums les plus écoutés.
create(Album $album)
Crée un nouvel album dans la base de données.
hydrateMany(array $tableauxAssoc)
Hydrate plusieurs albums à partir d'un tableau de tableaux associatifs.
findAll()
Récupère tous les albums de la base de données.
rechercher(string $term)
Recherche albums par titre.
findAllByArtistEmail(string $email)
Récupère les albums d'un artiste en utilisant son email.
find(int $id)
Récupère un album par son identifiant.
setPdo(?PDO $pdo)
Setter pour la pdo.
getTitreAlbum()
Getter pour le titre de l'album.
getArtisteAlbum()
Getter pour le nom de l'artiste de l'album.
getDateSortieAlbum()
Getter pour la date de sortie de l'album.