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
46 JOIN utilisateur u ON a.artisteAlbum = u.emailUtilisateur
47 WHERE a.idAlbum = :id";
48 $pdoStatement = $this->pdo->prepare($sql);
50 $pdoStatement->execute([
54 $pdoStatement->setFetchMode(PDO::FETCH_ASSOC);
55 $tableau = $pdoStatement->fetch();
56 $album = $this->
hydrate($tableau);
58 if (isset($tableau[
'pseudoUtilisateur'])) {
59 $album->setPseudoArtiste($tableau[
'pseudoUtilisateur']);
71 $sql =
"SELECT a.* FROM album a
72 JOIN utilisateur u ON a.artisteAlbum = u.emailUtilisateur -- CORRECTION : Jointure sur l'email
73 WHERE u.pseudoUtilisateur = :artistePseudo
74 ORDER BY a.dateSortieAlbum DESC";
75 $pdoStatement = $this->pdo->prepare($sql);
76 $pdoStatement->execute([
':artistePseudo' => $artistePseudo]);
77 $pdoStatement->setFetchMode(PDO::FETCH_ASSOC);
78 $tableau = $pdoStatement->fetchAll();
90 $sql =
"SELECT a.* FROM album a
91 JOIN utilisateur u ON a.artisteAlbum = u.emailUtilisateur -- CORRECTION : Jointure sur l'email (était sur u.pseudoUtilisateur)
92 WHERE u.emailUtilisateur = :email
93 ORDER BY a.dateSortieAlbum DESC";
94 $pdoStatement = $this->pdo->prepare($sql);
95 $pdoStatement->execute([
':email' => $email]);
96 $pdoStatement->setFetchMode(PDO::FETCH_ASSOC);
97 $tableau = $pdoStatement->fetchAll();
109 $sql =
"INSERT INTO album (nomAlbum, dateSortieAlbum, urlPochetteAlbum, artisteAlbum) VALUES (:nomAlbum, :dateSortie, :pochette, :artiste)";
110 $pdoStatement = $this->pdo->prepare($sql);
111 $pdoStatement->execute([
114 ':pochette' => $album->geturlPochetteAlbum(),
118 return (
int)$this->pdo->lastInsertId();
128 $album =
new Album();
129 $album->setIdAlbum(isset($tableaAssoc[
'idAlbum']) ? (
int)$tableaAssoc[
'idAlbum'] :
null);
130 $album->setTitreAlbum($tableaAssoc[
'nomAlbum'] ??
null);
131 $album->setDateSortieAlbum($tableaAssoc[
'dateSortieAlbum'] ??
null);
132 $album->seturlPochetteAlbum($tableaAssoc[
'urlPochetteAlbum'] ??
null);
133 $album->setArtisteAlbum($tableaAssoc[
'artisteAlbum'] ??
null);
145 foreach ($tableauxAssoc as $tableauAssoc) {
146 $albums[] = $this->
hydrate($tableauAssoc);
165 SUM(c.nbEcouteChanson) as totalEcoutes
167 JOIN chanson c ON a.idAlbum = c.albumChanson
168 JOIN utilisateur u ON a.artisteAlbum = u.emailUtilisateur -- CORRECTION : Jointure sur l'email (était sur u.pseudoUtilisateur)
170 ORDER BY totalEcoutes DESC
174 $stmt = $this->pdo->prepare($sql);
175 $stmt->bindValue(
':limit', $limit, PDO::PARAM_INT);
178 $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
181 foreach ($results as $row) {
184 $album->setPseudoArtiste($row[
'pseudoUtilisateur']);
188 }
catch (PDOException $e) {
189 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.
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.