From be76f14c4a198862344a3f78781932d85096fb07 Mon Sep 17 00:00:00 2001 From: charmett <charmett@localhost> Date: Mon, 17 Jun 2024 15:10:10 +0200 Subject: [PATCH] vraiment bon travail --- codeigniter/application/controllers/Music.php | 28 +++++ .../application/models/Model_music.php | 100 +++++++++++++----- .../application/views/album_musics.php | 17 +++ codeigniter/application/views/albums_list.php | 15 ++- .../application/views/artistes_list.php | 3 +- 5 files changed, 126 insertions(+), 37 deletions(-) create mode 100644 codeigniter/application/controllers/Music.php create mode 100644 codeigniter/application/views/album_musics.php diff --git a/codeigniter/application/controllers/Music.php b/codeigniter/application/controllers/Music.php new file mode 100644 index 0000000..0625bc0 --- /dev/null +++ b/codeigniter/application/controllers/Music.php @@ -0,0 +1,28 @@ +<?php +defined('BASEPATH') OR exit('No direct script access allowed'); + +class Music extends CI_Controller { + + public function __construct(){ + parent::__construct(); + $this->load->model('model_music'); + $this->load->helper('html'); + $this->load->helper('url'); + $this->load->helper('form'); + } + + public function index(){ + $musics = $this->model_music->getMusics(); + $this->load->view('layout/header'); + $this->load->view('musics_list', ['musics' => $musics]); + $this->load->view('layout/footer'); + } + + public function view($albumId){ + // Récupérer les musiques pour un album spécifique + $musics = $this->model_music->getMusicsByAlbum($albumId); + $this->load->view('layout/header'); + $this->load->view('album_musics', ['musics' => $musics]); + $this->load->view('layout/footer'); + } +} diff --git a/codeigniter/application/models/Model_music.php b/codeigniter/application/models/Model_music.php index 621da0f..8564460 100644 --- a/codeigniter/application/models/Model_music.php +++ b/codeigniter/application/models/Model_music.php @@ -1,33 +1,77 @@ -<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); +<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Model_music extends CI_Model { - public function __construct(){ - $this->load->database(); - } + public function __construct(){ + $this->load->database(); + } - public function getAlbums(){ - $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 year - " - ); - return $query->result(); - } + public function getAlbums(){ + $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 year" + ); + return $query->result(); + } - public function getArtistes(){ - $query = $this->db->query( - "SELECT artist.id AS artistId, artist.name AS artistName, album.name AS albumName, album.year, cover.jpeg - FROM album - INNER JOIN artist ON album.artistId = artist.id - JOIN cover ON cover.id = album.coverId - GROUP BY artist.name, album.year - " - ); - - return $query->result(); - } + public function getArtistes(){ + $query = $this->db->query( + "SELECT artist.id AS artistId, artist.name AS artistName, album.name AS albumName, album.id AS albumId, album.year, cover.jpeg + FROM album + INNER JOIN artist ON album.artistId = artist.id + JOIN cover ON cover.id = album.coverId + GROUP BY artist.name, album.year" + ); + return $query->result(); + } + + public function getMusics(){ + $query = $this->db->query( + "SELECT + track.id AS trackId, + track.number AS trackNumber, + track.duration AS trackDuration, + track.diskNumber AS diskNumber, + album.id AS albumId, + album.name AS albumName, + album.year AS albumYear, + artist.name AS artistName, + song.id AS songId, + song.name AS songName, + cover.jpeg AS coverImage + FROM track + JOIN album ON track.albumId = album.id + JOIN artist ON album.artistId = artist.id + JOIN song ON track.songId = song.id + JOIN cover ON album.coverId = cover.id + ORDER BY album.id, track.diskNumber, track.number" + ); + return $query->result(); + } + + public function getMusicsByAlbum($albumId){ + $query = $this->db->query( + "SELECT + track.id AS trackId, + track.number AS trackNumber, + track.duration AS trackDuration, + track.diskNumber AS diskNumber, + album.id AS albumId, + album.name AS albumName, + artist.name AS artistName, + song.id AS songId, + song.name AS songName + FROM track + JOIN album ON track.albumId = album.id + JOIN artist ON album.artistId = artist.id + JOIN song ON track.songId = song.id + WHERE album.id = ? + ORDER BY track.diskNumber, track.number", + array($albumId) + ); + return $query->result(); + } } diff --git a/codeigniter/application/views/album_musics.php b/codeigniter/application/views/album_musics.php new file mode 100644 index 0000000..f9cde1c --- /dev/null +++ b/codeigniter/application/views/album_musics.php @@ -0,0 +1,17 @@ +<h5>Liste des Musiques de l'Album</h5> +<section class="list"> +<?php +foreach ($musics as $music) { + + echo "<div><article>"; + echo "<ul>"; + echo "<li>Durée: {$music->trackDuration} secondes</li>"; + echo "<li>$music->songName</li>"; + echo "</ul>"; + echo "</article></div>"; +} +?> +</section> + + +// songs/view/{$music->songId}, \ No newline at end of file diff --git a/codeigniter/application/views/albums_list.php b/codeigniter/application/views/albums_list.php index 31ba141..92c15ef 100644 --- a/codeigniter/application/views/albums_list.php +++ b/codeigniter/application/views/albums_list.php @@ -1,15 +1,14 @@ <h5>Albums list</h5> <section class="list"> <?php - foreach($albums as $album){ - echo "<div><article>"; - echo "<header class='short-text'>"; - echo anchor("albums/view/{$album->id}","{$album->name}"); - echo "</header>"; - echo '<img src="data:image/jpeg;base64,'.base64_encode($album->jpeg).'" />'; - echo "<footer class='short-text'>{$album->year} - {$album->artistName}</footer> - </article></div>"; + echo "<div><article>"; + echo "<header class='short-text'>"; + echo anchor("music/view/{$album->id}", "{$album->name}"); + echo "</header>"; + echo '<img src="data:image/jpeg;base64,'.base64_encode($album->jpeg).'" />'; + echo "<footer class='short-text'>{$album->year} - {$album->artistName}</footer> + </article></div>"; } ?> </section> diff --git a/codeigniter/application/views/artistes_list.php b/codeigniter/application/views/artistes_list.php index 68716d7..53d55d1 100644 --- a/codeigniter/application/views/artistes_list.php +++ b/codeigniter/application/views/artistes_list.php @@ -10,6 +10,7 @@ foreach ($artistes as $artist) { } $artistAlbums[$artist->artistName][] = array( 'albumName' => $artist->albumName, + 'albumId' => $artist->albumId, 'year' => $artist->year ); } @@ -21,7 +22,7 @@ foreach ($artistAlbums as $artistName => $albums) { echo "</header>"; echo "<ul>"; foreach ($albums as $album) { - echo "<li>" . $album['albumName'] . " - " . $album['year'] . "</li>"; + echo "<li>" . anchor("music/view/{$album['albumId']}", $album['albumName']) . " - " . $album['year'] . "</li>"; } echo "</ul>"; echo "</article></div>";