From 4b5b72f2c086dff0fe14b1f85a2dc84f466c11ad Mon Sep 17 00:00:00 2001 From: Vince <vi.teissier@gmail.com> Date: Tue, 4 Jun 2024 16:18:03 +0200 Subject: [PATCH] test filtre 2/? --- application/controllers/Albums.php | 50 +++++++++++++-------------- application/models/Model_music.php | 52 +++++++++++++++++------------ application/views/layout/getter.php | 51 +++++++++++++++------------- 3 files changed, 84 insertions(+), 69 deletions(-) diff --git a/application/controllers/Albums.php b/application/controllers/Albums.php index 25f419b..602c9a9 100644 --- a/application/controllers/Albums.php +++ b/application/controllers/Albums.php @@ -3,34 +3,34 @@ defined('BASEPATH') OR exit('No direct script access allowed'); class Albums extends CI_Controller { - public function __construct(){ - parent::__construct(); - $this->load->model('model_music'); - $this->load->library('session'); - } + public function __construct(){ + parent::__construct(); + $this->load->model('model_music'); + $this->load->library('session'); + } + public function index(){ + $order = $this->input->get('order'); + $genre = $this->input->get('genre'); + $artist = $this->input->get('artist'); + $query = $this->input->get('query'); - public function index(){ - $genre = $this->input->get('genre'); - $order = $this->input->get('order'); - $artist = $this->input->get('artist'); + $albums = $this->model_music->getAlbums($genre, $order, $artist); - $albums = $this->model_music->getAlbums($genre, $order, $artist); - $genres = $this->model_music->researchtype(); - $artists = $this->model_music->nameArtist(); + $genres = $this->model_music->researchtype(); + $artists = $this->model_music->nameArtist(); - $is_logged_in = $this->session->userdata('logged_in'); - $data = array( - 'albums' => $albums, - 'is_logged_in' => $is_logged_in, - 'genres' => $genres, - 'artistes' => $artists - ); - $this->load->view('layout/header',$data); - $this->load->view('layout/getter',$data); - $this->load->view('albums_list', $data); - $this->load->view('layout/footer'); - } + $is_logged_in = $this->session->userdata('logged_in'); + $data = array( + 'albums' => $albums, + 'is_logged_in' => $is_logged_in, + 'genres' => $genres, + 'artistes' => $artists + ); + $this->load->view('layout/header', $data); + $this->load->view('layout/getter', $data); + $this->load->view('albums_list', $data); + $this->load->view('layout/footer'); + } } - diff --git a/application/models/Model_music.php b/application/models/Model_music.php index fed9d72..9541852 100644 --- a/application/models/Model_music.php +++ b/application/models/Model_music.php @@ -5,32 +5,42 @@ class Model_music extends CI_Model { $this->load->database(); } - public function getAlbums($genre = '', $order = '', $artist = '') { - $this->db->select('album.name, album.id, year, artist.name as artistName, genre.name as genreName, jpeg'); - $this->db->from('album'); - $this->db->join('artist', 'album.artistid = artist.id'); - $this->db->join('genre', 'genre.id = album.genreid'); - $this->db->join('cover', 'cover.id = album.coverid'); + public function getAlbums($genre = '', $order = 'asc', $artist = '') { + $this->db->select('album.name, album.id, year, artist.name as artistName, genre.name as genreName, jpeg'); + $this->db->from('album'); + $this->db->join('artist', 'album.artistid = artist.id'); + $this->db->join('genre', 'genre.id = album.genreid'); + $this->db->join('cover', 'cover.id = album.coverid'); + if(!empty($genre)){ + $this->db->where('genre.name', $genre); + } - if(!empty($genre)){ - $this->db->where('genre.name', $genre); - } + if(!empty($artist)){ + $this->db->where('artist.name', $artist); + } - if(!empty($artist)){ - $this->db->where('artist.name', $artist); - } + if($order == 'asc' || $order == 'desc'){ + $this->db->order_by('album.name', $order); + } + $query = $this->db->get(); + return $query->result(); + } - - if($order == 'asc' || $order == 'desc'){ - $this->db->order_by('album.name',$order ); - } - - - $query = $this->db->get(); - return $query->result(); - } + public function researchtype(){ + $this->db->select('name'); + $this->db->from('genre'); + $query = $this->db->get(); + return $query->result(); + } + + public function nameArtist(){ + $this->db->select('name'); + $this->db->from('artist'); + $query = $this->db->get(); + return $query->result(); + } public function getArtists($genre = '', $order = '') { diff --git a/application/views/layout/getter.php b/application/views/layout/getter.php index d0b35f7..75aeaa1 100644 --- a/application/views/layout/getter.php +++ b/application/views/layout/getter.php @@ -1,45 +1,50 @@ -<button onclick="toggleFilters()">Filtrer</button> +<div> + <!-- Champ de recherche --> + <form method="GET" action=""> + <input type="text" name="query" placeholder="Rechercher..." value="<?= isset($_GET['query']) ? $_GET['query'] : '' ?>"> + <button type="submit">Rechercher</button> + </form> + <!-- Bouton pour afficher/masquer les filtres --> + <button type="button" onclick="toggleFilters()">Filtrer</button> + + <!-- Div contenant les filtres, cachée par défaut --> <div id="filters" style="display: none;"> <form method="GET" action=""> - <input type="text" name="query" placeholder="Rechercher..." value="<?= isset($_GET['query']) ? $_GET['query'] : '' ?>"> - </form> - - <form method="GET" action=""> - <select name="artist" id="artist" onchange="submitForm()> + <!-- Filtre par artiste --> + <select name="artist" id="artist" onchange="this.form.submit()"> <option value=''>Tous</option> <?php foreach($artistes as $artiste): ?> <option value="<?= $artiste->name ?>" <?= isset($_GET['artist']) && $_GET['artist'] == $artiste->name ? 'selected' : '' ?>><?= $artiste->name ?></option> <?php endforeach; ?> </select> - <select name="genre" id="genre" onchange="submitForm()> + <!-- Filtre par genre --> + <select name="genre" id="genre" onchange="this.form.submit()"> <option value=''>Tous</option> <?php foreach($genres as $genre): ?> <option value="<?= $genre->name ?>" <?= isset($_GET['genre']) && $_GET['genre'] == $genre->name ? 'selected' : '' ?>><?= $genre->name ?></option> <?php endforeach; ?> </select> - <select name="order" id="order" onchange="submitForm()"> + <!-- Filtre par ordre --> + <select name="order" id="order" onchange="this.form.submit()"> <option value="">Ordre :</option> <option value="asc" <?= isset($_GET['order']) && $_GET['order'] == 'asc' ? 'selected' : '' ?>>Croissant</option> - <option value="desc" <?= isset($_GET['order']) && $_GET['order'] == 'desc' ? 'selected' : '' ?>>Decroissant</option> + <option value="desc" <?= isset($_GET['order']) && $_GET['order'] == 'desc' ? 'selected' : '' ?>>Décroissant</option> </select> - </form> </div> +</div> - <script> - function toggleFilters() { - var filters = document.getElementById('filters'); - if (filters.style.display === 'none') { - filters.style.display = 'block'; - } else { - filters.style.display = 'none'; - } +<script> + // Fonction pour afficher/masquer les filtres + function toggleFilters() { + var filters = document.getElementById('filters'); + if (filters.style.display === 'none') { + filters.style.display = 'block'; + } else { + filters.style.display = 'none'; } - - function submitForm() { - document.getElementById('filters').submit(); - } - </script> \ No newline at end of file + } +</script>