From 46674a1b0568c4e250a859e5ff2621153547542f Mon Sep 17 00:00:00 2001 From: stiti Date: Mon, 10 Jun 2024 19:50:27 +0200 Subject: [PATCH] Commit de louay --- .../application/controllers/Musiques.php | 34 ++++++- .../application/models/Model_music.php | 48 ++++++++++ .../application/views/music_details.php | 51 +++++++++++ .../assets/css/music_details.css | 89 +++++++++++++++++++ 4 files changed, 221 insertions(+), 1 deletion(-) create mode 100644 CodeIgniter-3.1.13/application/views/music_details.php create mode 100644 CodeIgniter-3.1.13/assets/css/music_details.css 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 @@ +
+ +

name; ?>

+

Artiste : artistName; ?>

+

Album : album_name; ?>

+ cover_base64)) : ?> + Couverture de l'album + +

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.

+ + + +

Musiques recommandées

+ + +
+ + \ No newline at end of file diff --git a/CodeIgniter-3.1.13/assets/css/music_details.css b/CodeIgniter-3.1.13/assets/css/music_details.css new file mode 100644 index 0000000..1a1addb --- /dev/null +++ b/CodeIgniter-3.1.13/assets/css/music_details.css @@ -0,0 +1,89 @@ +/* Style général */ +body { + font-family: Arial, sans-serif; + background-color: #f7f7f7; + color: #333; +} + +.music-details { + background-color: #fff; + border-radius: 10px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + padding: 20px; + margin: 20px auto; + max-width: 600px; +} + +h1, h3 { + margin: 0; + color: #4a154b; /* Violet foncé */ +} + +strong { + color: #6a336a; /* Violet moyen */ +} + +a { + color: #880088; /* Violet */ + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +p { + margin: 5px 0; +} + +img { + max-width: 100%; + height: auto; + border-radius: 5px; + margin-bottom: 10px; +} + +.select-playlist, .btn-add-to-playlist { + padding: 5px 10px; + border: none; + border-radius: 5px; + background-color: #880088; /* Violet */ + color: #fff; + cursor: pointer; + margin-bottom: 10px; +} + +.select-playlist { + margin-right: 10px; +} + +.btn-add-to-playlist { + transition: background-color 0.3s ease; +} + +.btn-add-to-playlist:hover { + background-color: #660066; /* Violet foncé au survol */ +} + +/* Section recommandée */ +.recommended-songs { + margin-top: 20px; +} + +.recommended-song { + border-bottom: 1px solid #ddd; + padding: 10px 0; + display: flex; + align-items: center; +} + +.recommended-song img { + width: 80px; + height: 80px; + margin-right: 10px; + border-radius: 5px; +} + +.titre{ + margin-right: 10px; +} \ No newline at end of file