From 1b7a22d2375acca6edb99a730dc3ce8233afb0b1 Mon Sep 17 00:00:00 2001 From: charmett <charmett@localhost> Date: Wed, 19 Jun 2024 12:27:06 +0200 Subject: [PATCH] et voila --- .../application/controllers/Artistes.php | 6 +- .../application/models/Model_music.php | 107 ++++++++++-------- .../models/Model_music_artistes.php | 34 ++---- .../application/views/artistes_list.php | 2 +- 4 files changed, 72 insertions(+), 77 deletions(-) diff --git a/codeigniter/application/controllers/Artistes.php b/codeigniter/application/controllers/Artistes.php index 7377849..8ef3be6 100644 --- a/codeigniter/application/controllers/Artistes.php +++ b/codeigniter/application/controllers/Artistes.php @@ -36,11 +36,11 @@ class Artistes extends CI_Controller { public function search(){ $query = $this->input->get('query'); - $albums = $this->model_music_artistes->searchArtistes($query); - $num_results = count($albums); + $artistes = $this->model_music_artistes->searchArtistes($query); + $num_results = count($artistes); $this->load->view('layout/header'); $this->load->view('artistes_list', [ - 'albums' => $albums, + 'artistes' => $artistes, 'sort' => $this->sort, 'num_results' => $num_results, 'is_search' => true diff --git a/codeigniter/application/models/Model_music.php b/codeigniter/application/models/Model_music.php index bf0852f..ab1d288 100644 --- a/codeigniter/application/models/Model_music.php +++ b/codeigniter/application/models/Model_music.php @@ -17,6 +17,27 @@ class Model_music extends CI_Model { return $query->result(); } + public function get_tri_Albums($Ctri){ + $orderBy = ''; + if ($Ctri == 'year ASC') { + $orderBy = 'ORDER BY year ASC'; + } elseif ($Ctri == 'year DESC') { + $orderBy = 'ORDER BY year DESC'; + } elseif ($Ctri == 'ASC' || $Ctri == 'DESC') { + $orderBy = "ORDER BY album.name $Ctri"; + } + + $query = $this->db->query( + "SELECT album.name, album.id, year, artist.name as artistName, genre.name as genreName, jpeg + FROM album + JOIN artist ON album.artistid = artist.id + JOIN genre ON genre.id = album.genreid + JOIN cover ON cover.id = album.coverid + $orderBy" + ); + return $query->result(); + } + public function getArtistes(){ $query = $this->db->query( @@ -75,61 +96,32 @@ class Model_music extends CI_Model { return $query->result(); } - public function get_tri_Albums($Ctri){ - $orderBy = ''; - if ($Ctri == 'year ASC') { - $orderBy = 'ORDER BY year ASC'; - } elseif ($Ctri == 'year DESC') { - $orderBy = 'ORDER BY year DESC'; - } elseif ($Ctri == 'ASC' || $Ctri == 'DESC') { - $orderBy = "ORDER BY album.name $Ctri"; - } - - $query = $this->db->query( - "SELECT album.name, album.id, year, artist.name as artistName, genre.name as genreName, jpeg - FROM album - JOIN artist ON album.artistid = artist.id - JOIN genre ON genre.id = album.genreid - JOIN cover ON cover.id = album.coverid - $orderBy" - ); - return $query->result(); - } - public function getGenres(){ $query = $this->db->query("SELECT * FROM genre"); return $query->result(); } - public function searchAlbums($query, $genre){ - $sql = "SELECT album.name, album.id, year, artist.name as artistName, genre.name as genreName, jpeg - FROM album - JOIN artist ON album.artistid = artist.id - JOIN genre ON genre.id = album.genreid - JOIN cover ON cover.id = album.coverid"; - - $conditions = []; - $params = []; - - if (!empty($query)) { - $conditions[] = "(album.name LIKE ? OR artist.name LIKE ?)"; - $params[] = "%{$query}%"; - $params[] = "%{$query}%"; - } - - if (!empty($genre)) { - $conditions[] = "genre.id = ?"; - $params[] = $genre; - } - - if (count($conditions) > 0) { - $sql .= " WHERE " . implode(' AND ', $conditions); - } + public function searchAlbums($query, $genre){ + $sql = "SELECT album.name, album.id, year, artist.name as artistName, genre.name as genreName, jpeg + FROM album + JOIN artist ON album.artistid = artist.id + JOIN genre ON genre.id = album.genreid + JOIN cover ON cover.id = album.coverid + WHERE album.name LIKE ? OR artist.name LIKE ? + ORDER BY album.id ASC"; + + // Paramètres pour les conditions de recherche + $params = ["%{$query}%", "%{$query}%"]; - $sql .= " ORDER BY album.id ASC"; - $query = $this->db->query($sql, $params); - return $query->result(); - } + if (!empty($genre)) { + $sql .= " AND genre.id = ?"; + $params[] = $genre; + } + + $query = $this->db->query($sql, $params); + return $query->result(); + } + public function createPlaylist($name, $userId) { $data = array( @@ -179,5 +171,22 @@ class Model_music extends CI_Model { $query = $this->db->get_where('song', array('name' => $songName)); return $query->row(); } + + public function generate_random_playlist($numSongs, $playlistName, $userId) { + $query = $this->db->query( + "SELECT id FROM song ORDER BY RAND() LIMIT ?", array((int)$numSongs) + ); + $songs = $query->result(); + + $playlistId = $this->createPlaylist($playlistName, $userId); + + foreach ($songs as $song) { + $this->addSongToPlaylist($playlistId, $song->id); + } + + return $playlistId; + } + + } \ No newline at end of file diff --git a/codeigniter/application/models/Model_music_artistes.php b/codeigniter/application/models/Model_music_artistes.php index 8abbc80..5e661f3 100644 --- a/codeigniter/application/models/Model_music_artistes.php +++ b/codeigniter/application/models/Model_music_artistes.php @@ -38,31 +38,17 @@ class Model_music_artistes extends CI_Model { } - public function searchArtistes($query){ + public function searchArtistes($query){ + // Requête SQL principale pour la recherche d'artistes par nom $sql = "SELECT artist.id AS artistId, artist.name AS artistName, album.name AS albumName, album.id AS albumId, album.year, cover.jpeg - FROM album - INNER JOIN artist ON album.artistId = artist.id - JOIN cover ON cover.id = album.coverId - GROUP BY artist.name, album.year"; + FROM album + JOIN artist ON album.artistId = artist.id + JOIN cover ON cover.id = album.coverId + WHERE artist.name LIKE ? + GROUP BY artist.name, album.year + ORDER BY artist.name ASC"; - $conditions = []; - $params = []; - - if (!empty($query)) { - $conditions[] = "(album.name LIKE ? OR artist.name LIKE ?)"; - $params[] = "%{$query}%"; - $params[] = "%{$query}%"; - } - - - if (count($conditions) > 0) { - $sql .= " WHERE " . implode(' AND ', $conditions); - } - - $sql .= " ORDER BY album.id ASC"; - - $query = $this->db->query($sql, $params); + $query = $this->db->query($sql, ["%{$query}%"]); return $query->result(); - } - + } } diff --git a/codeigniter/application/views/artistes_list.php b/codeigniter/application/views/artistes_list.php index 409a25e..3d3e959 100644 --- a/codeigniter/application/views/artistes_list.php +++ b/codeigniter/application/views/artistes_list.php @@ -13,7 +13,7 @@ </form> </ul> <form action="<?= site_url('Artistes/search'); ?>" method="get" class="search-form"> - <input type="text" name="query" placeholder="Chercher des albums" class="search-input"> + <input type="text" name="query" placeholder="Chercher des artistes" class="search-input"> <button type="submit" class="search-button">Rechercher</button> </form>