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 {
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');
}
}

@ -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 = '') {

@ -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>
}
</script>