diff --git a/CodeIgniter-3.1.13/application/controllers/Musiques.php b/CodeIgniter-3.1.13/application/controllers/Musiques.php index 8522778..a03939e 100644 --- a/CodeIgniter-3.1.13/application/controllers/Musiques.php +++ b/CodeIgniter-3.1.13/application/controllers/Musiques.php @@ -59,6 +59,38 @@ class Musiques extends CI_Controller { $this->load->view('layout/header_dark', $data); $this->load->view('musiques_list', $data); $this->load->view('layout/footer_dark'); - } + } + public function view($song_id) { + // Récupérer les détails de la musique + $song = $this->Model_music->get_music_details($song_id); + if (empty($song)) { + show_404(); // Afficher une erreur 404 si la musique n'est pas trouvée + return; + } + + // Récupérer les playlists de l'utilisateur s'il est connecté + $user_playlists = array(); + if ($this->session->userdata('user_id')) { + $user_id = $this->session->userdata('user_id'); + $user_playlists = $this->Model_playlist->get_user_playlists($user_id); + } + + // Assurez-vous que $song contient l'ID du genre avant de le passer à la vue + $genre_id = isset($song->genre_id) ? $song->genre_id : null; + + // Récupérer des musiques recommandées du même genre ou du même artiste + $recommended_songs = $this->Model_music->get_recommended_songs($genre_id, $song->artist_id); + + // Charger la vue avec les données récupérées + $data['song'] = $song; + $data['user_playlists'] = $user_playlists; + $data['recommended_songs'] = $recommended_songs; + $data['title'] = "Détails de la musique - Onzeur"; + $data['css'] = "assets/css/music_details.css"; + + $this->load->view('layout/header_dark', $data); + $this->load->view('music_details', $data); + $this->load->view('layout/footer_dark'); + } } diff --git a/CodeIgniter-3.1.13/application/models/Model_music.php b/CodeIgniter-3.1.13/application/models/Model_music.php index 8e481c9..70c5e67 100644 --- a/CodeIgniter-3.1.13/application/models/Model_music.php +++ b/CodeIgniter-3.1.13/application/models/Model_music.php @@ -299,5 +299,53 @@ class Model_music extends CI_Model { $this->db->join('album', 'track.albumid = album.id'); $this->db->where('album.artistid', $artist_id); return $this->db->get()->result(); + } + + public function get_music_details($song_id) { + // Requête pour récupérer les détails de la chanson + $query = $this->db->query(" + SELECT song.id, song.name, artist.id as artist_id, artist.name as artistName, album.name as album_name, track.albumid as album_id, cover.jpeg as cover_base64, track.duration + FROM song + JOIN track ON song.id = track.songid + JOIN album ON track.albumid = album.id + JOIN artist ON album.artistid = artist.id + JOIN cover ON album.coverid = cover.id + WHERE song.id = ?", array($song_id) + ); + + return $query->row(); // Renvoie le résultat unique sous forme d'objet + } + + public function get_recommended_songs($genre_id, $artist_id, $limit = 3) { + $where_clause = ''; + $params = array(); + + if ($genre_id) { + $where_clause .= " WHERE genre.id = ?"; + $params[] = $genre_id; + } elseif ($artist_id) { + $where_clause .= " WHERE artist.id = ?"; + $params[] = $artist_id; + } + + // Requête pour récupérer des musiques recommandées en fonction du genre ou de l'artiste + $query = $this->db->query(" + SELECT song.id, song.name, artist.id as artist_id, artist.name as artistName, album.id as album_id, album.name as album_name, cover.jpeg as cover_base64 + FROM song + JOIN track ON song.id = track.songid + JOIN album ON track.albumid = album.id + JOIN artist ON album.artistid = artist.id + JOIN cover ON album.coverid = cover.id + JOIN genre ON album.genreid = genre.id + $where_clause + ORDER BY RAND() + LIMIT $limit + ", $params); + + + return $query->result(); } + + + } diff --git a/CodeIgniter-3.1.13/application/views/music_details.php b/CodeIgniter-3.1.13/application/views/music_details.php new file mode 100644 index 0000000..1b9100c --- /dev/null +++ b/CodeIgniter-3.1.13/application/views/music_details.php @@ -0,0 +1,51 @@ +
Artiste : artistName; ?>
+Album : album_name; ?>
+ cover_base64)) : ?> + + +Durée : duration); ?>
+ + session->userdata('user_id')): ?> + + + + +Vous n'avez pas encore de playlist. Créez-en une pour ajouter cette chanson !
+ + + +Aucune information sur la musique n'a été trouvée.
+ + + +