Ajout trie croissant decroissanant, recherche de genre
This commit is contained in:
parent
af51088be9
commit
08fdeb6dd0
codeigniter
application
assets
@ -5,7 +5,6 @@ class Albums extends CI_Controller {
|
||||
|
||||
private $sort = 'Tri';
|
||||
|
||||
|
||||
public function __construct(){
|
||||
parent::__construct();
|
||||
$this->load->model('model_music');
|
||||
@ -13,11 +12,19 @@ class Albums extends CI_Controller {
|
||||
$this->load->helper('url');
|
||||
$this->load->helper('form');
|
||||
}
|
||||
|
||||
public function index(){
|
||||
$albums = $this->model_music->getAlbums();
|
||||
$genres = $this->model_music->getGenres();
|
||||
$num_results = count($albums);
|
||||
$this->load->view('layout/header');
|
||||
$this->load->view('albums_list', ['albums' => $albums, 'sort' => $this->sort, 'num_results' => $num_results, 'is_search' => false]);
|
||||
$this->load->view('albums_list', [
|
||||
'albums' => $albums,
|
||||
'sort' => $this->sort,
|
||||
'num_results' => $num_results,
|
||||
'is_search' => false,
|
||||
'genres' => $genres
|
||||
]);
|
||||
$this->load->view('layout/footer');
|
||||
}
|
||||
|
||||
@ -31,20 +38,35 @@ class Albums extends CI_Controller {
|
||||
public function tri(){
|
||||
$Ctri = $this->input->get('Ctri');
|
||||
$trie = $this->model_music->get_tri_Albums($Ctri);
|
||||
$genres = $this->model_music->getGenres();
|
||||
$num_results = count($trie);
|
||||
$this->load->view('layout/header');
|
||||
$this->load->view('albums_list', ['albums' => $trie, 'sort' => $this->sort, 'num_results' => $num_results, 'is_search' => false]);
|
||||
$this->load->view('albums_list', [
|
||||
'albums' => $trie,
|
||||
'sort' => $this->sort,
|
||||
'num_results' => $num_results,
|
||||
'is_search' => false,
|
||||
'genres' => $genres
|
||||
]);
|
||||
$this->load->view('layout/footer');
|
||||
}
|
||||
|
||||
public function search(){
|
||||
$query = $this->input->get('query');
|
||||
$albums = $this->model_music->searchAlbums($query);
|
||||
$genre = $this->input->get('genre');
|
||||
$albums = $this->model_music->searchAlbums($query, $genre);
|
||||
$genres = $this->model_music->getGenres();
|
||||
$num_results = count($albums);
|
||||
$this->load->view('layout/header');
|
||||
$this->load->view('albums_list', ['albums' => $albums, 'sort' => $this->sort, 'num_results' => $num_results, 'is_search' => true]);
|
||||
$this->load->view('albums_list', [
|
||||
'albums' => $albums,
|
||||
'sort' => $this->sort,
|
||||
'num_results' => $num_results,
|
||||
'is_search' => true,
|
||||
'genres' => $genres
|
||||
]);
|
||||
$this->load->view('layout/footer');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -76,28 +76,59 @@ class Model_music extends CI_Model {
|
||||
}
|
||||
|
||||
public function get_tri_Albums($Ctri){
|
||||
$orderBy = '';
|
||||
if ($Ctri == 'year ASC') {
|
||||
$orderBy = 'ORDER BY year ASC';
|
||||
} elseif ($Ctri == 'year DESC') {
|
||||
$orderBy = 'ORDER BY year DESC';
|
||||
} elseif ($Ctri == 'ASC' || $Ctri == 'DESC') {
|
||||
$orderBy = "ORDER BY album.name $Ctri";
|
||||
}
|
||||
|
||||
$query = $this->db->query(
|
||||
"SELECT album.name, album.id, year, artist.name as artistName, genre.name as genreName, jpeg
|
||||
FROM album
|
||||
JOIN artist ON album.artistid = artist.id
|
||||
JOIN genre ON genre.id = album.genreid
|
||||
JOIN cover ON cover.id = album.coverid
|
||||
ORDER BY album.name $Ctri
|
||||
"
|
||||
$orderBy"
|
||||
);
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function searchAlbums($query){
|
||||
$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');
|
||||
$this->db->like('album.name', $query);
|
||||
$this->db->or_like('artist.name', $query);
|
||||
$this->db->order_by('album.id', 'ASC');
|
||||
$query = $this->db->get();
|
||||
public function getGenres(){
|
||||
$query = $this->db->query("SELECT * FROM genre");
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function searchAlbums($query, $genre){
|
||||
$sql = "SELECT album.name, album.id, year, artist.name as artistName, genre.name as genreName, jpeg
|
||||
FROM album
|
||||
JOIN artist ON album.artistid = artist.id
|
||||
JOIN genre ON genre.id = album.genreid
|
||||
JOIN cover ON cover.id = album.coverid";
|
||||
|
||||
$conditions = [];
|
||||
$params = [];
|
||||
|
||||
if (!empty($query)) {
|
||||
$conditions[] = "(album.name LIKE ? OR artist.name LIKE ?)";
|
||||
$params[] = "%{$query}%";
|
||||
$params[] = "%{$query}%";
|
||||
}
|
||||
|
||||
if (!empty($genre)) {
|
||||
$conditions[] = "genre.id = ?";
|
||||
$params[] = $genre;
|
||||
}
|
||||
|
||||
if (count($conditions) > 0) {
|
||||
$sql .= " WHERE " . implode(' AND ', $conditions);
|
||||
}
|
||||
|
||||
$sql .= " ORDER BY album.id ASC";
|
||||
|
||||
$query = $this->db->query($sql, $params);
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
|
@ -1,11 +1,23 @@
|
||||
<h5>Albums list</h5>
|
||||
<div class="sorting-search">
|
||||
<form action="<?= site_url('Albums/tri'); ?>" method="get" class="tri-form">
|
||||
<button type="submit" name="Ctri" value="ASC" class="tri-button">Tri A-Z</button>
|
||||
<button type="submit" name="Ctri" value="DESC" class="tri-button">Tri Z-A</button>
|
||||
<select name="Ctri" class="tri-select">
|
||||
<option value="">Trier</option>
|
||||
<option value="ASC"<?php echo isset($_GET['Ctri']) && $_GET['Ctri'] == 'ASC' ? ' selected' : ''; ?>>Trie A-Z</option>
|
||||
<option value="DESC"<?php echo isset($_GET['Ctri']) && $_GET['Ctri'] == 'DESC' ? ' selected' : ''; ?>>Trie Z-A</option>
|
||||
<option value="year ASC"<?php echo isset($_GET['Ctri']) && $_GET['Ctri'] == 'year ASC' ? ' selected' : ''; ?>>Trie par année (croissant)</option>
|
||||
<option value="year DESC"<?php echo isset($_GET['Ctri']) && $_GET['Ctri'] == 'year DESC' ? ' selected' : ''; ?>>Trie par année (décroissant)</option>
|
||||
</select>
|
||||
<button type="submit" class="tri-button">Appliquer le tri</button>
|
||||
</form>
|
||||
</ul>
|
||||
<form action="<?= site_url('Albums/search'); ?>" method="get" class="search-form">
|
||||
<select name="genre" class="search-genre">
|
||||
<option value="">Tous les genres</option>
|
||||
<?php foreach($genres as $genre): ?>
|
||||
<option value="<?= $genre->id ?>"><?= $genre->name ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<input type="text" name="query" placeholder="Chercher des albums" class="search-input">
|
||||
<button type="submit" class="search-button">Rechercher</button>
|
||||
</form>
|
||||
@ -17,7 +29,6 @@
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
|
||||
<?php if(isset($is_search) && $is_search): ?>
|
||||
<p>Nombre de résultats : <?php echo $num_results; ?></p>
|
||||
<?php endif; ?>
|
||||
|
@ -21,9 +21,10 @@
|
||||
<ul class="option">
|
||||
<li><?=anchor('albums','Albums');?></li>
|
||||
<li><?=anchor('artistes','Artistes');?></li>
|
||||
<li><?=anchor('playlist','Playlist');?></li>
|
||||
<?php if ($this->session->userdata('pseudo')) : /* Vérifier si l'utilisateur est connecté */ ?>
|
||||
|
||||
<li><?=anchor('playlist','Playlist');?></li>
|
||||
<?php endif; ?>
|
||||
<?php if ($this->session->userdata('pseudo')) : /* Vérifier si l'utilisateur est connecté */ ?>
|
||||
<li class="deroulant"><a><?= $this->session->userdata('pseudo'); ?></a>
|
||||
<ul class="sous">
|
||||
|
||||
|
@ -18,6 +18,15 @@ section.list img {
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
strong {
|
||||
margin-left: 233px;
|
||||
}
|
||||
|
||||
ul.option li {
|
||||
margin-right: 50px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* modification par Yann */
|
||||
@ -35,8 +44,8 @@ main.container {
|
||||
}
|
||||
|
||||
|
||||
.options {
|
||||
margin-right : 20px!important;
|
||||
ul.options {
|
||||
margin-right : 50px;
|
||||
|
||||
}
|
||||
|
||||
@ -172,3 +181,17 @@ div.new {
|
||||
.back-form {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.search-genre {
|
||||
margin-right: 10px;
|
||||
padding: 5px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.tri-select {
|
||||
width: 55%;
|
||||
}
|
||||
|
||||
.tri-button {
|
||||
width: 55%!important;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user