From 4f77b89eeb81bc06211fa20d7a0e28f52a6347e7 Mon Sep 17 00:00:00 2001 From: follea <thomas.follea@gmail.com> Date: Wed, 19 Jun 2024 15:26:24 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20de=20g=C3=A9n=C3=A9ration=20par=20genre?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/controllers/Playlist.php | 18 ++++++------- .../application/models/Model_music.php | 25 ++++++++++++++----- .../application/views/playlist_generate.php | 9 ++++++- .../application/views/playlist_list.php | 4 +-- 4 files changed, 37 insertions(+), 19 deletions(-) diff --git a/codeigniter/application/controllers/Playlist.php b/codeigniter/application/controllers/Playlist.php index a877cfa..92c3c3a 100644 --- a/codeigniter/application/controllers/Playlist.php +++ b/codeigniter/application/controllers/Playlist.php @@ -67,7 +67,7 @@ class Playlist extends CI_Controller { echo "Playlist non trouvée."; } }else{ - redirect('albums'); + redirect('playlist'); } @@ -136,20 +136,20 @@ public function choix_playlist($albumId) { redirect('playlist/view/' . $playlistId); } - public function generate(){ - - $this->load->view('layout/header'); - $this->load->view('playlist_generate'); - $this->load->view('layout/footer'); - } - + public function generate_random(){ + $genres = $this->model_music->getGenres(); + $this->load->view('layout/header'); + $this->load->view('playlist_generate', ['genres' => $genres]); + $this->load->view('layout/footer'); + + $genre = $this->input->post('genre'); $numSongs = (int)$this->input->post('numSongs'); $playlistName = $this->input->post('playlistName'); $userId = $this->session->userdata('user_id'); if ($numSongs > 0 && !empty($playlistName)) { - $playlistId = $this->model_music->generate_random_playlist($numSongs, $playlistName, $userId); + $playlistId = $this->model_music->generate_random_playlist($numSongs, $playlistName, $userId, $genre); redirect('playlist/view/' . $playlistId); } else { echo "Erreur : Veuillez entrer un nombre de chansons valide et un nom de playlist."; diff --git a/codeigniter/application/models/Model_music.php b/codeigniter/application/models/Model_music.php index 0e3d549..1b2fe75 100644 --- a/codeigniter/application/models/Model_music.php +++ b/codeigniter/application/models/Model_music.php @@ -197,10 +197,21 @@ class Model_music extends CI_Model { 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) - ); + public function generate_random_playlist($numSongs, $playlistName, $userId, $genre = '') { + $this->db->select('song.id'); + $this->db->from('song'); + $this->db->join('track', 'track.songId = song.id'); + $this->db->join('album', 'track.albumId = album.id'); + $this->db->join('genre', 'album.genreId = genre.id'); + if (!empty($genre)) { + $this->db->where('genre.name', $genre); + } + $this->db->order_by('RAND()'); + $this->db->limit($numSongs); + + $query = $this->db->get(); + + $songs = $query->result(); $playlistId = $this->createPlaylist($playlistName, $userId); @@ -208,10 +219,12 @@ class Model_music extends CI_Model { foreach ($songs as $song) { $this->addSongToPlaylist($playlistId, $song->id); } - - return $playlistId; + redirect('playlist/view/'.$playlistId); + } + + } \ No newline at end of file diff --git a/codeigniter/application/views/playlist_generate.php b/codeigniter/application/views/playlist_generate.php index 5369f9b..3cdc018 100644 --- a/codeigniter/application/views/playlist_generate.php +++ b/codeigniter/application/views/playlist_generate.php @@ -3,7 +3,14 @@ <form action="<?= site_url('playlist/generate_random'); ?>" method="post" class="generate-playlist-form"> <input type="text" name="playlistName" placeholder="Nom de la playlist" required> <input type="number" min="0" max="1000" name="numSongs" placeholder="Nombre de chansons" required> - <button type="submit">Générer</button> + + <select name="genre" > + <option value="">Tous les genres</option> + <?php foreach($genres as $genre): ?> + <option value="<?= $genre->name ?>"><?= $genre->name ?></option> + <?php endforeach; ?> + </select> + <button type="submit">Générer</button> </form> <a href="<?= site_url('playlist'); ?>" class="btn btn-secondary">Retour aux playlists</a> diff --git a/codeigniter/application/views/playlist_list.php b/codeigniter/application/views/playlist_list.php index d84f91d..0a92ebe 100644 --- a/codeigniter/application/views/playlist_list.php +++ b/codeigniter/application/views/playlist_list.php @@ -6,11 +6,10 @@ <button type="submit">Créer</button> </form> -<form action="<?= site_url('playlist/generate'); ?>" method="get" class="generate-playlist-form"> +<form action="<?= site_url('playlist/generate_random'); ?>" method="get" class="generate-playlist-form"> <button type="submit">Générer une Playlist</button> </form> -<!-- Affichez les playlist que nous avons --> <section class="playlists"> <?php foreach($playlists as $playlist): ?> <div> @@ -18,7 +17,6 @@ <header class="short-text"> <?= anchor("playlist/view/{$playlist->id}", "{$playlist->name}"); ?> </header> - <!-- Bouton pour supprimer la playlist --> <form action="<?= site_url('playlist/delete/' . $playlist->id); ?>" method="post" class="btn-supp" style="display:inline;"> <button type="submit">Supprimer</button> </form>