Bonjour à tous,

Je suis en train de faire un quiz musical, sous forme de site php.
Le principe du quiz est de choisir une catégorie de question. Avec un peu de php, on tire une question au sort dans la catégorie sélectionnée (dans une base de données MySQL, qui regroupe les titres, les chemins de mes morceaux de musique...)
(et jusqu'à ce point, mon site fonctionne...)

J'aimerais pouvoir lire le morceau de musique tiré au sort avec Dewplayer, mais comment faire pour intégrer l'url dans le code de Dewplayer ?
Est-ce que je dois générer une playlist à chaque tirage au sort ? (et si oui, comment ???? )

Je précise que je débute en php... Donc si vous pouviez m'expliquer avec des mots simples Smiley confused ...

Merci par avance.
Hello,

Il faudrait créer une nouvelle table dans ta base avec une jointure sur la table de tes questions.
Cette table sauvegardera le nom du fichier mp3

Ensuite dans le code du dewplayer, tu concatènes le code avec la réponse de ta requête avec la racine où se trouve le dossier contenant tes musiques, cela évite de sauvegarder tout le chemin dans ta base et d'éviter de te tirer une balle le jour où tu changes l'arborescence de ton site (même si tu peux traiter le problème en langage SQL)

Pour un quizz normalement c'est une musique par question, pour une playlist je ne sais pas si le dewplayer le supporte mais si c'est le cas il faudrait alors une table de jointure en plus.

C'est sûr que ça va pas te super aider ce que je viens de te dire mais ça te donne les pistes de recherches. Smiley smile

@+

Edit: Si tu passes par du xml, pour ma part j'utilise l'extension simpleXML de php5 ... parce qu'il est très simple à utiliser Smiley lol , cela te permettra de créer ou de modifier le fichier xml contenant les infos dont l'url des musiques.
Modifié par AspiGeek (14 Apr 2010 - 09:57)
Bonjour AspiGeek, et merci de ta réponse.

A vrai dire, je n'ai pas encore étudié le chapitre sur les jointure de table mySQL dans le tuto que j'ai suivi ;p

Mais d'après ce que je comprends de ta réponse, j'ai peut-être mal posé ma question:
une fois ma question tirée au sort, je récupère l'url du mp3 dans une variable $url_mp3, mais je ne sais pas la réinjecter dans le code de Dewplayer, à la place de l'url du mp3 d'exemple (ça me renvoie une erreur).

C'est pourquoi je me demandais si la solution ne passait pas par un moyen d'envoyer automatiquement cette variable dans un xml de playlist (ne contenant que cette url-là), qui serait entièrement régénéré à chaque tirage au sort de question...

PS: merci de ta remarque sur les chemins. A dire vrai, j'avais évacué cela, en me disant que ce n'était pas si contraignant que cela d'exporter la base en csv, mettre à jour les url dans excel et reloader le tout dans MySQL, mais je vais réfléchir à la concatenation...
Bah à vrai dire j'avais bien compris ta question mais comment veux tu que je t'explique le remplacement de ta $url_mp3 par la flashvars correspondante ?

Mais bon ça doit donner un truc comme ça :
...dewplayer.swf?mp3='.$url_mp3.'&autoplay=1&...

Je pense que ton problème vient plutôt de l'erreur retournée, si tes tests sont en lignes un lien pourrait nous aider sinon à froid ça sent le problème de chemin.

Peux tu nous montrer le code de la balise object dans la page html généré please.

@+
En fait, ça ne retourne pas d'erreur.
Le lecteur est présent sur la page. Quand je le lance, la barre de lecture progresse (en boucle et rapidement) mais le compteur affiche 00 00 et je n'ai pas de son.

J'ai rectifié le chemin via une concaténation, comme tu me l'as conseillé, et je récupère ce chemin dans une variable $url_mp3 (et quand je l'affiche sur la page, elle me semble correcte)

Je te mets mon code Dewplayer (en même temps, je n'ai aps changé grand'chose au code sorti du générateur...):


<?php $titre = $donnees['titre_mp3'];
$url_mp3 = 'Audio\\'.$sous_dossier.'\\'.$titre.'.mp3';
echo $url_mp3 ?>

<object type="application/x-shockwave-flash" data="dewplayer.swf" width="200" height="20" id="dewplayer" name="dewplayer">
<param name="wmode" value="transparent" />
<param name="movie" value="dewplayer.swf" />
<param name="flashvars" value="mp3='.$url_mp3.'&showtime=1" />
</object>


Sinon, est-ce que ca pourrait venir de l'arborescence ?
Dans le dossier www de Wamp, j'ai mon dossier de site.
Dedans, j'ai les composants Dewplayer en vrac (dewplayer.swf, ...), avec mes pages index.php...
Les morceaux de musique sont dans un dossier Audio dans ce dossier là, puis dans des sous-dossier par catégorie.
Ca donne donc:
Site\Audio\categorie_1\titre.mp3

Mille mercis par avance
Hello,

Y a des fautes dans ton code, ça ne marchera pas...
Ta concaténation est mauvaise soit tu fais :
<param name="flashvars" value="mp3=<?php echo $url_mp3 ?>&showtime=1" /> 
</object> 

soit :
<?php echo ' <object type="application/x-shockwave-flash" data="dewplayer.swf" width="200" height="20" id="dewplayer" name="dewplayer"> 
<param name="wmode" value="transparent" /> 
<param name="movie" value="dewplayer.swf" /> 
<param name="flashvars" value="mp3='.$url_mp3.'&showtime=1" /> 
</object>'; ?> 


Le choix de l'un ou de l'autre dépend du projet mais comme tu as du php juste avant autant tout englober avec la 2ème solution, surtout si tu veux rajouter des variables dynamiques dans les flashvars, ça évite d'ouvrir et de refermer 36000 fois les balises php...mais ce n'est qu'une préférence perso, libre à toi après Smiley smile

Par contre je ne comprends pas pourquoi il y a 2 antislashes dans ton URI et pourquoi tu affiches ta variable $ url_mp3 en plein milieu de ton code ?

Le plus simple est de regarder le code source de ta page html, tu aurais vu que la concaténation était mauvaise, regarde aussi si le chemin retourné est le bon.

@+
Bonsoir,

Bon, ben ça marche toujours pas...
Aucune des deux méthodes de concaténation ne fonctionne.

Je suis revenue aux fondamentaux: j'ai mis le code du Dewplayer dans une page vide, en linkant - une première fois vers un fichier mp3 précis via son url exacte (ca marche très bien),
- puis en mettant cette url dans une variable php et en attribuant à flashvars la value= à cette variable, et çà marche paaaaaaaaaaaaaaaaaaaaaaas

Donc c'est la syntaxe d'attribution de valeur qui ne fonctionne pas.
Pourtant, j'ai encore cherché longtemps ce soir, et la syntaxe <?php echo ?> autour de la valeur semble exacte...
Je ne sais plus quoi faire pour cela...
Merci pour ton aide (et si tu as d'autres idées...)

La solution alternative me semble être de générer automatique un fichier playlist.xml ne contenant que l'url $url_mp3 et demander à Dewplayer de la charger automatiquement.
Je crois que je ne suis pas sortie de l'auberge...



PS: les deux antislashes, c'est parce que j'ai lu qu'il fallait "échapper" certains caractères spéciaux: " '`\, c'est à dire préciser à php que là, ces caractères sont du texte simple et pas des caractères de code... Et dreamweaver semblait d'accord avec moi, puisqu'avec une seule antislash, toute la fin de ma page était considérée comme du texte, alors qu'avec 2, le reste de mon code conservait ses couleurs normales
PS2: j'ai affiché ma variable $url_mp3 dans le texte pour vérifier que sa concaténation était OK. Je l'enlèverai quand je n'aurai plus de problème de code Smiley cligne
Bon, commence à virer ces double slashes, l'échappement des caractères spéciaux est valable pour l'enregistrement SQL.

Je ne comprends pas pourquoi tu ne vérifies pas directement dans le code source de ta page et que tu vérifies avec le code qui a marché lors de ton retour aux sources.

Je te propose que de garder un unique slashe comme séparateur dans l'url et de nous poster le code source (navigateur>afficher code source) de cette portion de code Smiley smile

@+
Dans le doute, hier soir, j'ai aussi testé avec une seule antislash. Et avec une slash au lieu d'antislash.
Et ça marche toujours pas, ça ne vient pas de là...

J'ai vraiment l'impression que ça provient d'une mauvaise interprétation de la variable $url_mp3 comme valeur flashvars, puisque même quand mon mp3 est à la racine du site et que j'attribue son seul nom comme valeur à $url_mp3, Dewplayer ne fonctionne pas
Modifié par Miss Anna (16 Apr 2010 - 20:32)
Hum, je ne pensais pas assez calée pour lire et comprendre du code source dans le texte, mais j'ai l'impression finalement que c'est dans ma bdd que ça coince.
Les titres des mp3 apparaissent bizarrement dans le code source (avec beaucoup d'espace à l'intérieur entre la fin du titre et l'extension)

Je vais retravailler ma bdd...
Pffffffffffffffffffffff, victoire !!!!
Tu avais raison sur la surveillance du code source: j'avais des espaces mal placés dans mes titres mp3 de la bdd... donc forcément els chemins étaient faux, hi, hi...

Merci pour ton aide: j'ai appris plein de choses (mais je reste un petit scarabée du php...)
A bientôt peut-être