This commit is contained in:
2024-05-22 10:37:19 +02:00
parent 6f069f8487
commit 8ee6549815
8 changed files with 119 additions and 0 deletions

19
bd/README.md Normal file
View File

@@ -0,0 +1,19 @@
# Base de données de musique
La [base de données](./music.sql) est structuré de la manière suivante :
```
album (id,name,year,#artistid,#genreid,#coverid)
--
artist (id,name)
--
track (id,#albumid,#songid,diskNumber,number,duration)
--
song(id,name)
--
genre(id,name)
--
cover(id,jpeg)
--
```
Vous aurez certainement besoin de rajouter des tables pour la gestion des playlists.

BIN
bd/music.sql.gz Normal file

Binary file not shown.

20
src/assets/style.css Normal file
View File

@@ -0,0 +1,20 @@
section.list
{
display : flex;
justify-content : space-between;
flex-wrap:wrap;
}
section.list > div
{
width : 30%;
}
section.list img {
display:inline-block;
}
.short-text {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}

View File

@@ -0,0 +1,18 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Albums extends CI_Controller {
public function __construct(){
parent::__construct();
$this->load->model('model_music');
}
public function index(){
$albums = $this->model_music->getAlbums();
$this->load->view('layout/header');
$this->load->view('albums_list',['albums'=>$albums]);
$this->load->view('layout/footer');
}
}

View File

@@ -0,0 +1,20 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Model_music extends CI_Model {
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();
}
}

14
src/views/albums_list.php Normal file
View File

@@ -0,0 +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>";
}
?>
</section>

View File

@@ -0,0 +1,3 @@
</main>
</body>
</html>

View File

@@ -0,0 +1,25 @@
<!doctype html>
<html lang="en" class="has-navbar-fixed-top">
<head>
<meta charset="UTF-8" />
<title>MUSIC APP</title>
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css"
/>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<?=link_tag('assets/style.css')?>
</head>
<body>
<main class='container'>
<nav>
<ul>
<li><strong>Music APP</strong></li>
</ul>
<ul>
<li><?=anchor('albums','Albums');?></li>
<li><?=anchor('artistes','Artistes');?></li>
<li><?=anchor('playlist','Playlist');?></li>
</ul>
</nav>