IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

génération de playlist en PHP [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 506
    Par défaut génération de playlist en PHP
    Bonjour,

    je souhaite avoir une "playlist" qui se génère en fonction des mp3 chargés dans un dossier (/mp3...) et également en fonction des informations de ma base SQL :
    Merci beaucoup !


    mes codes ci-dessous :

    morceaux.php (récupère les informations de ma base SQL => OK) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />	
    <title>MON SITE</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
    <body>
    <?php include('bandeau.php'); ?> <!-- insère le bandeau principal en haut -->
     
    <div id="mainContent">
    <br />
    <a><strong>Morceaux de la semaine :</strong></a>
    <p />			
    <object type="application/x-shockwave-flash" data="dewplayer-playlist.swf" width="240" height="200" id="dewplayer" name="dewplayer">
    <param name="wmode" value="transparent" />
    <param name="movie" value="dewplayer-playlist.swf" />
    <param name="flashvars" value="showtime=true&amp;autoreplay=true&amp;xml=playlist.xml" />
    </object>
    <br />
    <a><strong>Informations sur les auteurs :</strong></a>
    <br />
    <br />
     
    <!-- debut de la requête pour récupérer les informations des groupes de musique -->
    <?php
    // connexion à la base
    require("configuration.php");
    $sql = connect_sql();
    // on écrit la requête
    $select = "SELECT * FROM morceaux_groupe ORDER BY numero";
    $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
    //On vérifie que la table contient quelque chose
    if
    (mysql_num_rows($result) == 0)
    {
    echo '<p>'.'<b>'.'Aucun morceau ! '.'</b>'.'</p>'.'<br>'.'</br>';
    echo '<a href="javascript:window.history.go(-1)">'.'Retour'.'</a>'; // retour en page précédente
    }
    //Si il y a des entrées
    else
    {
    //On fait une boucle pour sortir toutes les entrées
    while($affiche = mysql_fetch_array($result))
     {
    //On affiche les entrées
    echo '<br />';
    echo '<b>'.$affiche["nom_groupe"]."   ".'</b>';
    echo '<div class="autre">';
    echo '<span style="color:#8E236B;">';
    echo '<strong>';
    echo "     ".$affiche["titre"]."   ";
    echo '</strong>';
    echo '</span>';
    echo '<div class="cache">';
    echo '<strong>';
    echo '<br />';
    echo '<a href="'.$affiche["site_web"].'">'.'Site web du groupe'.'</a>';
    echo '<br />';
    echo "     ".$affiche["descriptif_groupe"]."   ";
    echo '<br />';
    echo '<br />';
    echo " mis en ligne par  ".$affiche["pseudo_groupe"]."   ";
    echo '</strong>';
    echo '</div>';
    echo '</div>';
    echo '<br />';
    }	//On ferme la boucle while
     
    }	//on ferme le else
     
    // Fermeture de la connexion à la base de données
    mysql_close();		
    ?>
     
    </div>
    <?php include('bas_de_page.php'); ?> <!-- insère le bas de page  -->
    </body>
    </html>
    playlist.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?xml version="1.0" encoding="UTF-8"?>
    <playlist version="1" xmlns="http://xspf.org/ns/0/">
    	<title>Playlist</title>
        <creator>Dew</creator>
        <trackList>
            <track>
              <location>mp3/test1.mp3</location>
              <title>La Moldau (Smetana)</title>
            </track>
            <track>
              <location>mp3/test2.mp3</location>
              <title>Saia Travada</title>
            </track>
            <track>
              <location>mp3/test3.mp3</location>
              <title>Katusha</title>
            </track>
        </trackList>
    </playlist>

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    J'ai fait un truc de ce genre par le passé, inspire toi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <?php  
    	include_once('./includes/config.php');
      $db = new PDO(DB_CONNECTION_STRING, DB_USER, DB_PASSWORD);
      $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $db->query('SET NAMES utf8');
    	$sql = 'SELECT titres.titre as titre, titres.demo as demo, albums.titre as album, auteurs.nom as auteur FROM album_titres
    	        INNER JOIN titres ON titres.id = album_titres.titre
    					INNER JOIN albums ON albums.id = album_titres.album
    					INNER JOIN auteurs ON auteurs.id = albums.auteur
    					ORDER BY rand() LIMIT 10';
      $statement = $db->prepare($sql);
      $statement->execute(array());
      $tabl_results = $statement->fetchAll();
     
      $xml = '<?xml version="1.0" encoding="UTF-8"?>' ;
    	$xml .= '<playlist version="1" xmlns="http://xspf.org/ns/0/">' ;
    	$xml .= '<title>Votre titre </title>';
    	$xml .= '<creator>Dew</creator>';
    	$xml .= '<link>http://www.votre-site.com/</link>';
    	$xml .= '<info>The Best Playlist</info>';
    	$xml .= '<image></image>';
    	$xml .= '<trackList>' ;
    	foreach($tabl_results as $tabl_result) {
    	$xml .= '<track>';
    	$xml .= '<location>uploads/demo/'.$tabl_result['demo'].'</location>';
    	$xml .= '<creator>'.$tabl_result['auteur'].'</creator>';
    	$xml .= '<album>'.$tabl_result['album'].'</album>';
    	$xml .= '<title>'.$tabl_result['auteur'].' - '.$tabl_result['album'].' | '.$tabl_result['titre'].'</title>';
    	$xml .= '<annotation></annotation>';
    	$xml .= '<duration></duration>';
    	$xml .= '<info></info>';
    	$xml .= '</track>';
    	}
    	$xml .= '</trackList>';
    	$xml .= '</playlist>';
    	echo $xml;
    ?>

  3. #3
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 506
    Par défaut
    j'ai essayé ceci mais cela ne fonctionne pas (pas de message d'erreur mais la playlist reste vide...!)
    Merci de vos suggestions

    morceaux.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />	
    <title>MON SITE</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
    <body>
    <?php include('bandeau.php'); ?> <!-- insère le bandeau principal en haut -->
     
    <div id="mainContent">
    <br />
    <a><strong>Morceaux de la semaine :</strong></a>
    <p>
    <object type="application/x-shockwave-flash" data="dewplayer-playlist.swf" width="240" height="200" id="dewplayer" name="dewplayer">
    <param name="wmode" value="transparent" />
    <param name="movie" value="dewplayer-playlist.swf" />
    <param name="flashvars" value="showtime=true&amp;autoreplay=true&amp;xml=playlist.php" />
    </object>
    </p>
    <br />
    <a><strong>Informations sur les auteurs :</strong></a>
    <br />
    <br />
     
    <?php
    // connexion à la base
    require("configuration.php");
    $sql = connect_sql();
    // debut de la requête pour récupérer les informations des groupes de musique -->
    // on écrit la requête
    $select = "SELECT * FROM morceaux_groupe ORDER BY numero";
    $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
    //On vérifie que la table contient quelque chose
    if
    (mysql_num_rows($result) == 0)
    {
    echo '<p>'.'<b>'.'Aucun morceau ! '.'</b>'.'</p>'.'<br>'.'</br>';
    echo '<a href="javascript:window.history.go(-1)">'.'Retour'.'</a>'; // retour en page précédente
    }
    //Si il y a des entrées
    else
    {
    //On fait une boucle pour sortir toutes les entrées
    while($affiche = mysql_fetch_array($result))
     {
    //On affiche les entrées
    echo '<br />';
    echo '<b>'.$affiche["nom_groupe"]."   ".'</b>';
    echo '<div class="autre">';
    echo '<span style="color:#8E236B;">';
    echo '<strong>';
    echo "     ".$affiche["titre"]."   ";
    echo '</strong>';
    echo '</span>';
    echo '<div class="cache">';
    echo '<strong>';
    echo '<br />';
    echo '<a href="'.$affiche["site_web"].'">'.'Site web du groupe'.'</a>';
    echo '<br />';
    echo "     ".$affiche["descriptif_groupe"]."   ";
    echo '<br />';
    echo '<br />';
    echo " mis en ligne par  ".$affiche["pseudo_groupe"]."   ";
    echo '</strong>';
    echo '</div>';
    echo '</div>';
    echo '<br />';
    }	//On ferme la boucle while
    }	//on ferme le else
     
     
    // début de la requête sur les morceaux
    echo '<form method="post" action="voter.php">';
    echo '<fieldset>';
    echo '<legend>'."VOTEZ POUR VOTRE MORCEAU PREFERE".'</legend>';
    echo '<label>'.'</label>';
    echo '<select name="votez" class="ev" tabindex="1" onfocus="this.className=\'textarea_focus\';" onblur="this.className=\'\';">';
    $affich_form3 = "SELECT * FROM morceaux_groupe" ;
    $resultat3 = mysql_query($affich_form3) or die ('Erreur : '.mysql_error() );
    $total3 = mysql_num_rows($resultat3);
    //On vérifie que la table contient quelque chose
    if
    (mysql_num_rows($resultat3) == 0)
    {
    echo '<option>Aucun</option>';
    } // fin si rien dans la liste
    else
    {
    while ( $list3 = mysql_fetch_array( $resultat3 ) )
    {
    echo '<option value="'.$list3['titre'].'">'.$list3['titre'].'</option>';
    } // fin du while
    } // fin du else
    echo '</select>';
    // fin de la requête sur les morceaux
    echo '<br />';
    echo '<br />';
    echo '<input type="submit" class="ev" tabindex="2" value="VOTER POUR CE MORCEAU" onfocus="this.className=\'textarea_focus\';" onblur="this.className=\'\';">';
    echo '</fieldset>';
     
    // Fermeture de la connexion à la base de données
    mysql_close();		
    ?>
     
    <br />
    <br />
     
    </div>
    <?php include('bas_de_page.php'); ?> <!-- insère le bas de page  -->
    </body>
    </html>
    playlist.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    <?php
    // connexion à la base
    require("configuration.php");
    $sql = connect_sql();
     
    // essai de playlist
    $affich_form4 = "SELECT * FROM morceaux_groupe" ;
    $resultat4 = mysql_query($affich_form4) or die ('Erreur : '.mysql_error() );
    $total4 = mysql_num_rows($resultat4);
    //On vérifie que la table contient quelque chose
    if
    (mysql_num_rows($resultat4) == 0)
    {
    echo '<p>'.'<b>'.'Rien dans la playlist ! '.'</b>'.'</p>'.'<br>'.'</br>';
    } // fin si rien dans la liste
    else
    {
    $valeur = mysql_fetch_array( $resultat4 );
     
    foreach ( $valeur as $list4 )
    {
    $xml = '<?xml version="1.0" encoding="UTF-8"?>' ;
    $xml .= '<playlist version="1" xmlns="http://xspf.org/ns/0/">' ;
    $xml .= '<title>PLAYLIST</title>';
    $xml .= '<creator>DEW</creator>';
    $xml .= '<link></link>';
    $xml .= '<info></info>';
    $xml .= '<image></image>';
    $xml .= '<trackList>' ;
     
    $xml .= '<track>';
    $xml .= '<location>mp3/'.$list4['numero'].'.'mp3'.</location>';
    $xml .= '<creator>'.$list4['nom_groupe '].'</creator>';
    $xml .= '<album></album>';
    $xml .= '<title>'.$list4['nom_groupe '].'.'.$list4['titre'].'</title>';
    $xml .= '<annotation></annotation>';
    $xml .= '<duration></duration>';
    $xml .= '<info></info>';
    $xml .= '</track>';
    $xml .= '</trackList>';
    $xml .= '</playlist>';
    echo $xml;
     
    } // fin du foreach
    } // fin du else
     
    // FIN essai de playlist
     
     
    // Fermeture de la connexion à la base de données
    mysql_close();		
    ?>

  4. #4
    Membre émérite

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Par défaut
    Pas bien compris ton besoin mais :
    • il faudrait passer de mysql_* à mysqli_* ou PDO (ce n'est pas une obligation mais bon...)
    • Pour gérer le XML : DomDocument ou SimpleXML ? Histoire d'utiliser les outils adaptés au besoin.


    serait un début.

  5. #5
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 506
    Par défaut
    Désolé Shikiryu mais je suis débutant...

    de mysql_* à mysqli_* ou PDO
    => je suis chez Free en MYSQL...

    XML : DomDocument ou SimpleXML ?
    => je ne comprends pas ?

    Merci de votre aide.

  6. #6
    Membre émérite

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Par défaut
    Citation Envoyé par fazpedro Voir le message
    Désolé Shikiryu mais je suis débutant...
    Heureusement, ce n'est pas un défaut. On y est tous passé.

    Citation Envoyé par fazpedro Voir le message
    => je suis chez Free en MYSQL...
    Déjà, si tu es chez free et que tu ne l'as pas fait, je te conseille de passer en PHP5 en mettant un fichier ".htaccess" à la racine de ton site avec comme contenu "php 1".
    les fonctions mysql_* et mysqli_* servent à se connecter à des bases MySQL. PDO a l'atout (dont tu n'as peut-être pas besoin immédiatement) de pour travailler avec d'autres types de base, en plus, d'utiliser le paradigme objet.
    Les fonctions Mysqli_* peuvent être considérés comme l'évolution de celles de Mysql_*. C'est juste que les fonctions mysql fonctionnent mais sont un peu obsolète depuis la sortie de PHP5 (qui commence à dater ).
    Je te conseille de lire des tutos avec ça plutôt que mysql (ou d'apprendre à les adapter, ce n'est pas difficile, à part quelques points, elles s'utilisent de la même manière).
    Pour ton infos sur les principales différences, regarde le tableau en bas de cette page : http://www.php.net/manual/fr/mysqli.overview.php

    Citation Envoyé par fazpedro Voir le message
    XML : DomDocument ou SimpleXML ?
    => je ne comprends pas ?
    DomDocument et SimpleXML sont des classes natives de PHP5 et qui permettent de parser (lire) et construire des fichiers XML (ou XHTML) propre et simplement.

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    Citation Envoyé par Shikiryu Voir le message
    Pas bien compris ton besoin mais :
    • il faudrait passer de mysql_* à mysqli_* ou PDO (ce n'est pas une obligation mais bon...)
    • Pour gérer le XML : DomDocument ou SimpleXML ? Histoire d'utiliser les outils adaptés au besoin.
    Ce n'est pas indispensable.
    Exécutes ceci sous phpMyAdmin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM morceaux_groupe ORDER BY numero
    Qu'est le résultat?
    NB. Faut etre réactif pour qu'on puisse t'aider.

  8. #8
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 506
    Par défaut
    Voici le résultat de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM morceaux_groupe ORDER BY numero
    numero nom_groupe titre
    1 La tchoucrav&apos; Attentat musical
    2 Guns Of Brixton Mogwai
    3 Kim Novak Turn a rabbit
    4 PopTheFish Le R&ecirc;ve de l&apos;Homme

  9. #9
    Membre émérite

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Par défaut
    Citation Envoyé par okoweb Voir le message
    Ce n'est pas indispensable.
    Pouvez-vous etayer par quelques arguments ?
    Comme statuer préalablement, évidemment, utiliser mysql_* fonctionnera. Mais quitte à être en PHP5, autant utiliser les outils adéquats et non dépréciés ! Je ne pense pas que vous ayez un réel bon argument pour rester en mysql_*.

    A part avec DomDocument ou SimpleXML, comment créeriez-vous votre fichier XML ? Tout "à la mano" ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transcription script génération de passe (bash -> php)
    Par gogy13 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 02/06/2011, 17h02
  2. Réponses: 2
    Dernier message: 10/07/2008, 11h36
  3. [SimpleXML] Génération automatique de fichier PHP à partir d'XML
    Par une_tite_question dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 12/03/2008, 11h42
  4. [MySQL] Génération d'hyperliens en PHP à partir d'infos tirées de MySQL
    Par delcada dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/06/2007, 20h04
  5. [FPDF] Génération de PDF en PHP
    Par Bomba dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 16/03/2006, 15h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo