test filtre 2/?

This commit is contained in:
Vincent TEISSIER 2024-06-04 16:18:03 +02:00
parent ea2e857196
commit 4b5b72f2c0
3 changed files with 84 additions and 69 deletions
application
controllers
models
views/layout

@ -3,34 +3,34 @@ defined('BASEPATH') OR exit('No direct script access allowed');
class Albums extends CI_Controller { class Albums extends CI_Controller {
public function __construct(){ public function __construct(){
parent::__construct(); parent::__construct();
$this->load->model('model_music'); $this->load->model('model_music');
$this->load->library('session'); $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(){ $albums = $this->model_music->getAlbums($genre, $order, $artist);
$genre = $this->input->get('genre');
$order = $this->input->get('order');
$artist = $this->input->get('artist');
$albums = $this->model_music->getAlbums($genre, $order, $artist); $genres = $this->model_music->researchtype();
$genres = $this->model_music->researchtype(); $artists = $this->model_music->nameArtist();
$artists = $this->model_music->nameArtist();
$is_logged_in = $this->session->userdata('logged_in'); $is_logged_in = $this->session->userdata('logged_in');
$data = array( $data = array(
'albums' => $albums, 'albums' => $albums,
'is_logged_in' => $is_logged_in, 'is_logged_in' => $is_logged_in,
'genres' => $genres, 'genres' => $genres,
'artistes' => $artists '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');
}
$this->load->view('layout/header', $data);
$this->load->view('layout/getter', $data);
$this->load->view('albums_list', $data);
$this->load->view('layout/footer');
}
} }

@ -5,32 +5,42 @@ class Model_music extends CI_Model {
$this->load->database(); $this->load->database();
} }
public function getAlbums($genre = '', $order = '', $artist = '') { 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->select('album.name, album.id, year, artist.name as artistName, genre.name as genreName, jpeg');
$this->db->from('album'); $this->db->from('album');
$this->db->join('artist', 'album.artistid = artist.id'); $this->db->join('artist', 'album.artistid = artist.id');
$this->db->join('genre', 'genre.id = album.genreid'); $this->db->join('genre', 'genre.id = album.genreid');
$this->db->join('cover', 'cover.id = album.coverid'); $this->db->join('cover', 'cover.id = album.coverid');
if(!empty($genre)){
$this->db->where('genre.name', $genre);
}
if(!empty($genre)){ if(!empty($artist)){
$this->db->where('genre.name', $genre); $this->db->where('artist.name', $artist);
} }
if(!empty($artist)){ if($order == 'asc' || $order == 'desc'){
$this->db->where('artist.name', $artist); $this->db->order_by('album.name', $order);
} }
$query = $this->db->get();
return $query->result();
}
public function researchtype(){
if($order == 'asc' || $order == 'desc'){ $this->db->select('name');
$this->db->order_by('album.name',$order ); $this->db->from('genre');
} $query = $this->db->get();
return $query->result();
}
$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 = '') { public function getArtists($genre = '', $order = '') {

@ -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;"> <div id="filters" style="display: none;">
<form method="GET" action=""> <form method="GET" action="">
<input type="text" name="query" placeholder="Rechercher..." value="<?= isset($_GET['query']) ? $_GET['query'] : '' ?>"> <!-- Filtre par artiste -->
</form> <select name="artist" id="artist" onchange="this.form.submit()">
<form method="GET" action="">
<select name="artist" id="artist" onchange="submitForm()>
<option value=''>Tous</option> <option value=''>Tous</option>
<?php foreach($artistes as $artiste): ?> <?php foreach($artistes as $artiste): ?>
<option value="<?= $artiste->name ?>" <?= isset($_GET['artist']) && $_GET['artist'] == $artiste->name ? 'selected' : '' ?>><?= $artiste->name ?></option> <option value="<?= $artiste->name ?>" <?= isset($_GET['artist']) && $_GET['artist'] == $artiste->name ? 'selected' : '' ?>><?= $artiste->name ?></option>
<?php endforeach; ?> <?php endforeach; ?>
</select> </select>
<select name="genre" id="genre" onchange="submitForm()> <!-- Filtre par genre -->
<select name="genre" id="genre" onchange="this.form.submit()">
<option value=''>Tous</option> <option value=''>Tous</option>
<?php foreach($genres as $genre): ?> <?php foreach($genres as $genre): ?>
<option value="<?= $genre->name ?>" <?= isset($_GET['genre']) && $_GET['genre'] == $genre->name ? 'selected' : '' ?>><?= $genre->name ?></option> <option value="<?= $genre->name ?>" <?= isset($_GET['genre']) && $_GET['genre'] == $genre->name ? 'selected' : '' ?>><?= $genre->name ?></option>
<?php endforeach; ?> <?php endforeach; ?>
</select> </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="">Ordre :</option>
<option value="asc" <?= isset($_GET['order']) && $_GET['order'] == 'asc' ? 'selected' : '' ?>>Croissant</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> </select>
</form> </form>
</div> </div>
</div>
<script> <script>
function toggleFilters() { // Fonction pour afficher/masquer les filtres
var filters = document.getElementById('filters'); function toggleFilters() {
if (filters.style.display === 'none') { var filters = document.getElementById('filters');
filters.style.display = 'block'; if (filters.style.display === 'none') {
} else { filters.style.display = 'block';
filters.style.display = 'none'; } else {
} filters.style.display = 'none';
} }
}
function submitForm() { </script>
document.getElementById('filters').submit();
}
</script>