Ajout de la playlist, ajout et suppression de son dans l'onglet playlist

This commit is contained in:
Thomas FOLLEA 2024-06-18 17:00:04 +02:00
parent ec78b24e7a
commit ea4ced0442
7 changed files with 246 additions and 0 deletions

@ -26,12 +26,18 @@ class ConnexionController extends CI_Controller {
$result = $query->row(); // Récupérer la première ligne de résultat
if($result){ // Vérifier si l'utilisateur existe
$this->session->set_userdata('user_id', $result->id);
$this->session->set_userdata('pseudo', $result->pseudo);
redirect('../index.php');
} else {
$data['error_msg'] = "Email ou mot de passe incorrect.";
}
}
echo "<pre>";
print_r($this->session->userdata());
echo "</pre>";
$this->load->view('layout/header');
$this->load->view('connexion', $data);
$this->load->view('layout/footer');

@ -0,0 +1,83 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Playlist 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(){
$userId = $this->session->userdata('user_id');
$playlists = $this->model_music->getPlaylistsByUser($userId);
$this->load->view('layout/header');
$this->load->view('playlist_list', ['playlists' => $playlists]);
$this->load->view('layout/footer');
}
public function create(){
$name = $this->input->post('name');
$userId = $this->session->userdata('user_id');
$this->model_music->createPlaylist($name, $userId);
redirect('playlist');
}
public function delete($playlistId){
$this->model_music->deletePlaylist($playlistId);
redirect('playlist');
}
public function view($id) {
$songs = $this->model_music->getSongsByPlaylist($id);
$playlist = $this->model_music->getPlaylistById($id);
if ($playlist) {
$data['playlistName'] = $playlist->name; // Passez le nom de la playlist à la vue
$data['songs'] = $songs;
$data['playlistId'] = $id;
$this->load->view('layout/header');
$this->load->view('playlist_view', $data);
$this->load->view('layout/footer');
} else {
echo "Playlist non trouvée.";
}
}
public function add_song(){
$playlistId = $this->input->post('playlistId');
$songId = $this->input->post('songId');
$this->model_music->addSongToPlaylist($playlistId, $songId);
redirect('playlists/view/' . $playlistId);
}
public function remove_song(){
$playlistId = $this->input->post('playlistId');
$songId = $this->input->post('songId');
$this->model_music->removeSongFromPlaylist($playlistId, $songId);
redirect('playlist/view/' . $playlistId);
}
public function search_song(){
$playlistId = $this->input->post('playlistId');
$songName = $this->input->post('songName');
// Recherche la chanson par son nom
$song = $this->model_music->findSongByName($songName);
if ($song) {
// Si la chanson est trouvée, ajoutez-la à la playlist
$this->model_music->addSongToPlaylist($playlistId, $song->id);
}
// Redirige l'utilisateur vers la vue de la playlist mise à jour
redirect('playlist/view/' . $playlistId);
}
}
?>

@ -132,4 +132,52 @@ class Model_music extends CI_Model {
return $query->result();
}
public function createPlaylist($name, $userId) {
$data = array(
'name' => $name,
'userId' => $userId
);
return $this->db->insert('playlist', $data);
}
public function deletePlaylist($playlistId) {
$this->db->delete('playlist', array('id' => $playlistId));
$this->db->delete('playlistsong', array('playlistId' => $playlistId));
}
public function getPlaylistsByUser($userId) {
$query = $this->db->get_where('playlist', array('userId' => $userId));
return $query->result();
}
public function getPlaylistById($playlistId) {
$query = $this->db->get_where('playlist', array('id' => $playlistId), 1);
return $query->row(); // Renvoie la première ligne trouvée (la playlist correspondant à l'ID)
}
public function addSongToPlaylist($playlistId, $songId) {
$data = array(
'playlistId' => $playlistId,
'songId' => $songId
);
return $this->db->insert('playlistsong', $data);
}
public function removeSongFromPlaylist($playlistId, $songId) {
$this->db->delete('playlistsong', array('playlistId' => $playlistId, 'songId' => $songId));
}
public function getSongsByPlaylist($playlistId) {
$this->db->select('song.*');
$this->db->from('playlistsong');
$this->db->join('song', 'playlistsong.songId = song.id');
$this->db->where('playlistsong.playlistId', $playlistId);
$query = $this->db->get();
return $query->result();
}
public function findSongByName($songName) {
$query = $this->db->get_where('song', array('name' => $songName));
return $query->row();
}
}

@ -0,0 +1,25 @@
<h5>Mes Playlists</h5>
<!-- Formulaire pour créer la playlist avec le nom voulu -->
<form action="<?= site_url('playlist/create'); ?>" method="post" class="create-playlist-form">
<input type="text" name="name" placeholder="Nom de la playlist" required>
<button type="submit">Créer</button>
</form>
<!-- Affichez les playlist que nous avons -->
<section class="playlists">
<?php foreach($playlists as $playlist): ?>
<div>
<article>
<header class="short-text">
<?= anchor("playlist/view/{$playlist->id}", "{$playlist->name}"); ?>
</header>
<!-- Bouton pour supprimer la playlist -->
<form action="<?= site_url('playlist/delete/' . $playlist->id); ?>" method="post" style="display:inline;">
<button type="submit">Supprimer</button>
</form>
</article>
</div>
<?php endforeach; ?>
</section>

@ -0,0 +1,53 @@
<!-- En-tête de la playlist -->
<h5>Playlist : <?= $playlistName; ?></h5>
<!-- Formulaire pour rechercher et ajouter une chanson -->
<form action="<?= site_url('playlist/search_song'); ?>" method="post" class="add-song-form">
<input type="hidden" name="playlistId" value="<?= $playlistId; ?>">
<input type="text" name="songName" placeholder="Nom de la chanson" required>
<button type="submit">Rechercher et Ajouter</button>
</form>
<!-- Section pour afficher les résultats de la recherche -->
<?php if (!empty($searchResults)): ?>
<section class="search-results">
<h5>Résultats de la recherche :</h5>
<ul>
<?php foreach($searchResults as $song): ?>
<li>
<?= $song->name; ?>
<!-- Formulaire pour ajouter la chanson à la playlist -->
<form action="<?= site_url('playlist/add_song'); ?>" method="post" style="display:inline;">
<input type="hidden" name="playlistId" value="<?= $playlistId; ?>">
<input type="hidden" name="songId" value="<?= $song->id; ?>">
<button type="submit">Ajouter</button>
</form>
</li>
<?php endforeach; ?>
</ul>
</section>
<p>Test</p>
<?php endif; ?>
<!-- Section pour afficher les chansons de son playlist -->
<?php if (!empty($songs)): ?>
<section class="current-songs">
<h5>Chansons actuelles :</h5>
<ul>
<?php foreach($songs as $song): ?>
<li>
<?= $song->name; ?>
<!-- Formulaire pour supprimer la chanson de la playlist -->
<form action="<?= site_url('playlist/remove_song'); ?>" method="post" style="display:inline;">
<input type="hidden" name="playlistId" value="<?= $playlistId; ?>">
<input type="hidden" name="songId" value="<?= $song->id; ?>">
<button type="submit">Supprimer</button>
</form>
</li>
<?php endforeach; ?>
</ul>
</section>
<?php endif; ?>
<a href="<?= site_url('playlist'); ?>" class="btn btn-secondary">Retour à toutes les playlists</a>

@ -0,0 +1,27 @@
<h5>Résultats de la recherche pour : <?= $this->input->get('query'); ?></h5>
<form action="<?= site_url('playlist/search_song'); ?>" method="get" class="search-song-form">
<input type="text" name="query" placeholder="Nom de la chanson" required>
<button type="submit">Rechercher</button>
</form>
<section class="songs">
<?php foreach($songs as $song): ?>
<div>
<article>
<header class="short-text">
<?= $song->name; ?>
<form action="<?= site_url('playlists/add_song'); ?>" method="post" style="display:inline;">
<input type="hidden" name="songId" value="<?= $song->id; ?>">
<select name="playlistId" required>
<?php foreach($playlists as $playlist): ?>
<option value="<?= $playlist->id; ?>"><?= $playlist->name; ?></option>
<?php endforeach; ?>
</select>
<button type="submit">Ajouter à la playlist</button>
</form>
</header>
</article>
</div>
<?php endforeach; ?>
</section>

@ -195,3 +195,7 @@ div.new {
.tri-button {
width: 55%!important;
}
form.search-form {
margin-left: -200px;
}