<?php
/*
Générer une playlist WinAMP
Source: http://mario.monsiteinfo.info
*/
define('FICHIER', 'playlist.m3u'); // nom du fichier m3u à générer
define('ENVOI_NAV', TRUE); // TRUE: ouverture de la playlist dans le navigateur
$tab_mp3 = array('goldorak.mp3', 'albator.mp3', 'casimir.mp3', 'gogogadget.mp3',
'tom.mp3', 'flam.mp3', 'abeille.mp3', 'k2k.mp3'); // Noms des fichiers
$contenu = '';
foreach($tab_mp3 AS $fichier){ // parcours le tableau
$contenu.= $fichier."\n"; // stocke le nom du fichier et un retour à la ligne
}
if ($fp = fopen(FICHIER, 'w+')){ // ouvre le fichier en mode écriture et écrasement de données
fwrite($fp, $contenu); // écrit la liste des fichiers
fclose($fp); // ferme le fichier
if (ENVOI_NAV == TRUE){
header('Content-Type: application/octet-stream');
header('Content-disposition: attachment; filename="'.FICHIER.'"');
readfile(FICHIER); // envoi le fichier au navigateur
}
}
else
{
echo 'La playlist n\'a pas pu être générée.';
}
?>
Liste des fichiers issue d'une table MySQL
Le visiteur a la possibilité de voir la liste des titres disponibles et de les sélectionner pour générer la playlist
La structure de la table:
Code : Tout sélectionner
--
-- Structure de la table `fichiers`
--
CREATE TABLE `fichiers` (
`id` int(10) unsigned NOT NULL auto_increment,
`interprete` varchar(25) NOT NULL,
`titre` varchar(60) NOT NULL,
`fichier` varchar(40) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Contenu de la table `fichiers`
--
INSERT INTO `fichiers` VALUES (1, 'Noam', 'Goldorak (version originale)', 'goldorak.mp3');
INSERT INTO `fichiers` VALUES (2, 'Jean-Pierre Savelli', 'Albator, le Corsaire de l''Espace', 'albator.mp3');
INSERT INTO `fichiers` VALUES (3, 'Annie Germain', 'L''île aux enfants', 'casimir.mp3');
INSERT INTO `fichiers` VALUES (4, 'Inconnu', 'Inspecteur Gadget', 'gogogadget.mp3');
INSERT INTO `fichiers` VALUES (5, 'Inconnu', 'Tom Sawyer', 'tom.mp3');
INSERT INTO `fichiers` VALUES (6, 'Inconnu', 'La chevauchée du Capitaine Flam', 'flam.mp3');
INSERT INTO `fichiers` VALUES (7, 'Nadine Delanoe et Brigitt', 'Maya l''abeille', 'abeille.mp3');
INSERT INTO `fichiers` VALUES (8, 'Inconnu', 'K 2000 Instrumental', 'k2k.mp3');<?php
/*
Générer une playlist WinAMP
Source: http://mario.monsiteinfo.info
*/
define('MYSQLSRV', 'localhost'); // serveur MySQL
define('MYSQLUSR', 'root'); // utilisateur MySQL
define('MYSQLPSW', ''); // mot de passe MySQL
define('MYSQLDB', 'exemple'); // base de donnée MySQL
define('FICHIER', 'playlist.m3u'); // nom du fichier m3u à générer
// Connexion MySQL
mysql_connect(MYSQLSRV, MYSQLUSR, MYSQLPSW) or die(mysql_error());
mysql_select_db(MYSQLDB) or die(mysql_error());
// Traitement de la sélection
if ( isset($_POST['choix']) ){ // Si une sélection a été faite
$nb_case = count($_POST['choix']); // Compte le nombre de sélection
// Construction dynamique de la requête MySQL
$sql = "SELECT fichier FROM fichiers WHERE id IN (";
$i = 0; // Variable pour détecter le dernier fichier sélectionné
foreach($_POST['choix'] as $id){
$sql.= $id;
$i++;
if ($i != $nb_case) $sql.= ','; // Si nous ne sommes pas arrivé au dernier
// fichier sélectionné, ajoute une ,
}
$sql.= ") ORDER BY interprete";
$req = mysql_query($sql) or die(mysql_error());
$contenu = ''; // initialise une variable pour stocker le contenu du fichier PLS
while($ligne = mysql_fetch_assoc($req)){
$contenu.= $ligne['fichier']."\n";
}
if ($fp = fopen(FICHIER, 'w+')){ // ouvre le fichier en mode écriture et écrasement de données
fwrite($fp, $contenu); // écrit la liste des fichiers
fclose($fp); // ferme le fichier
header('Content-Type: application/octet-stream');
header('Content-disposition: attachment; filename="'.FICHIER.'"');
readfile(FICHIER); // envoi le fichier au navigateur
exit();
}
}
// -----------------------------------------------------------------------------
// Affichage de la liste des titres
$sql = "SELECT id, interprete, titre FROM fichiers ORDER BY interprete";
$req = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($req) !== 0){
?>
<form name="selection" method="POST">
<table cellspacing="2" cellpadding="5">
<tr><th>Interprète</th><th>Titre</th><th>Sélection</th></tr>
<?php
while($ligne = mysql_fetch_assoc($req)){
echo '<tr><td>'.$ligne['interprete'].'</td><td>'.$ligne['titre'].'</td>';
echo '<td><input type="checkbox" name="choix[]" value="'.$ligne['id'].'"/></td></tr>';
}
?>
<tr><td colspan="3" align="center"><input type="submit" value="Télécharger la playlist"/></td></tr>
</table>
</form>
<?php
}
else
{
echo 'Aucun titre disponible';
}
?>