Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: lista plików
Forum PHP.pl > Forum > PHP
kris280
Witam. Mam taki kłopot. Otóż mam skrypt, który pobiera mi listę plików uploadowanych w odpowiednim katalogu. Są to pliki mp3. Teraz gdy wyświetla mi tą listę chciałbym zrobić coś takiego, żeby obok każdego pliku muzycznego wstawić przycisk posłuchaj, i jak go nacisnę to żeby dana piosenkę odtwarzało. Takie coś jak przykładowo na stronie eska gdzie mamy listy piosenek a obok przycisk umożliwiający ich odsłuchanie. Za bardzo nie wiem jak się do tego zabrać, dlatego piszę tutaj i liczę na jakąś pomoc. Mam nadzieję że w miarę jasno wytłumaczyłem o co mi chodzi.
vermis
Możesz do tego wykorzystać ten player: http://flash-mp3-player.net/
darko
Dokładnie, jak radzi mój przedmówca - możesz wykorzystać jakiś gotowy odtwarzacz mp3 np. flashowy, któremu podajesz odpowiednie dane umożliwiające odtworzenie pliku mp3 (zobacz w dokumentacji odtwarzacza, w jaki sposób można "zmusić go" do odtworzenia danego utworu).
kris280
No ok mam gotowy odtwarzacz we flashu, tylko żeby mi odtwarzało piosenkę to muszę wcześniej do pliku XML podać ścieżkę do piosenki i wtedy odtwarza. Ale kłopotem jest automatyczne generowanie tej ścieżki lub całego pliku XML.
nospor
Skądżeś tego xmla wytrzasnął? Ja tam w kodzie na stronie co dostaleś widzę taki kod na podanie mp3:
<param name="FlashVars" value="mp3=/medias/ca_colle.mp3&amp;bgcolor1=189ca8&amp;bgcolor2=085c68" />
kris280
No ja mam inny odtwarzacz i na takiej zasadzie odtwarza te piosenki ze z xmla pobiera ścieżkę. Ale ok tu sprawdziłem i jest inaczej. Ale w tym ręcznie trzeba zapisać tytuł piosenki żeby odtwarzało. A żeby dynamicznie generowało ścieżkę się nie da.
nospor
Cytat
Ale w tym ręcznie trzeba zapisać tytuł piosenki żeby odtwarzało. A żeby dynamicznie generowało ścieżkę się nie da.


PHP słuzy do dynamicznego generowanie kodu html oraz php. Skoro używasz PHP więc możesz dynamicznie wygenerować wszystko co się zażyczy.
echo '<b>To jest dynamicznie wygenerowanyc pogrubiony tekst</b>';
Na tej samej zasadzie generuj sobie sciezke do mp3
kris280
No ja wiem że to się musi jakoś dać zrobić, tylko za bardzo nie wiem jak, ale szukam jakichś pomocnych funkcji i może coś wymyślę.
nospor
Jakich funkcji? ECHO to wszystko co masz użyć smile.gif
kris280
Hmmm albo Ty mnie źle rozumiesz, albo mi wydaje się że to co mam zrobić jest skomplikowane a w rzeczywistości jest bardzo poste smile.gif
Może jeszcze raz wyjaśnię. Za pomocą readdir pobieram sobie zawartość katalogu z piosenkami, a następnie ją wyświetlam. Obok piosenek umieszczam przycisk posłuchaj i jak go nacisnę włącza się ten odtwarzacz i mogę słuchać piosenkę. I żeby automatycznie tą ścieżkę do piosenki(raz ta raz inna) generowało wystarczy, że użyję ECHO??
nospor
echo $piosenka;
gdzie $piosenka to ściezka do piosenki która przecież masz bo uzywasz scandir

A konkretnie (nie wiem czy wpadłbyś na to):
  1. echo '<object type="application/x-shockwave-flash" data="/medias/player_mp3_maxi.swf" width="200" height="20">';
  2. echo '<param name="movie" value="/medias/player_mp3_maxi.swf" />';
  3. echo '<param name="FlashVars" value="mp3='.$piosenka.'&amp;bgcolor1=189ca8&amp;bgcolor2=085c68" />';
  4. echo '<p>Musique de démonstration.</p>';
  5. echo '</object>';
kris280
No tak próbowałem, ale niestety nie działa mi.
Zamieszczam skrypt pobierania zawartości katalogu.
  1.  
  2. <?php
  3. $katalog="../kftp/upload/";
  4. $katalog1=opendir($katalog);
  5. $file_list="<UL>";
  6. while($file_name=readdir($katalog1))
  7. {
  8. if(($file_name!=".")&&($file_name!=".."))
  9. {
  10. $file_list.="<LI>$file_name";
  11. }
  12. }
  13. $file_list.="</UL>";
  14. closedir($katalog1);
  15. Pliki w $katalog:
  16. $file_list";
  17. print( '<br><a href="index.php">powrót do strony głównej<br> </a>' );
  18. ?>
  19. <html>
  20. <body>
  21. <form action="odtwarzacz.php" method="post">
  22. <input type="submit" value="słuchaj" />
  23. </form>
  24. </body>
  25. </html>

Może teraz będzie trochę łatwiej.
nospor
Nie widzę tu kodu, o którym ci pisałem.

Poza tym jak otwierasz LI to wypadałoby je również zamknąć.
kris280
No tak mój błąd że nie zamknąłem.
  1. <object type="application/x-shockwave-flash" data="player_mp3_multi.swf" width="200" height="20">
  2. <param name="movie" value="player_mp3_multi.swf" />
  3. <param name="FlashVars" value="mp3=$file_list">
  4. </object>


Tyle że to jest źle, bo nie może być zmienna file_list. Czy w skrypcie na pobieranie zawartości powinienem gdzieś umieścić zmienną piosenka?
nospor
Kod co ci podałem ma być częścią Twojej pętli...oczywiście masz to dostosować a nie bezmyślnie wkleić
Przecież dla każdej piosenki masz wygenerować taki kod. Wówczas za $piosenka masz wstawić ścięzkę do pliku mp3. Tę ścięzkę przecież znasz... w $file_name masz nazwe pliku a ścieżka sklada się z katalogu oraz nazwy. katalog masz w zmiennej $katalog a nazwę w $file_name

No weź trochę pomyśl sam.
kris280
Kurde wciąż nie mogę sobie z tym poradzić :/
Do pętli pobierania zawartości z katalogu dodałem pobieranie ścieżki do piosenki.
  1. while($file_name=readdir($katalog1))
  2. {
  3. if(($file_name!=".")&&($file_name!=".."))
  4. {
  5.  
  6. $file_list.="<LI>$file_name</LI>";
  7. $piosenka.=$katalog.$file_name;
  8. }
  9. }


kod odtwarzacza mam:
  1. <object type="application/x-shockwave-flash" data="player_mp3_multi.swf" width="200" height="20">
  2. <param name="movie" value="player_mp3_multi.swf" />
  3. <param name="FlashVars" value=mp3=$piosenka;>
  4. </object>

Teraz mam już ścieżke pod zmienną $piosenka. Ale w odtwarzaczu nie odsłucham piosenki.
nospor
Ale gdzie ty ten odtwarzac wkladasz? Mowilem, że ten kod odtwarzacza tez ma byc w petli. PRzeciez dla kazdej piosenki chcesz go wkladac, tak?
kris280
Tak dla każdej piosenki tak chcę, ale narazie próbowałem zrobić to dla jednego utworu i mi nie wychodziło, więc próbować z większą ilością utworów mija się z celem.

Zrobiłem tak jak mówiłeś nospor i moja pętla while wygląda teraz następująco:
  1. while($file_name=readdir($katalog1))
  2. {
  3. if(($file_name!=".")&&($file_name!=".."))
  4. {
  5. echo '<object type="application/x-shockwave-flash" data="player_mp3_multi.swf" width="200" height="20">';
  6. echo'<param name="movie" value="player_mp3_multi.swf" />';
  7. echo '<param name="FlashVars" value="mp3=\upload\$file_name">';
  8. echo '</object>';
  9. $file_list.="<LI>$file_name</LI>";
  10. }
  11. }


Odtwarzacz wyświetla tylko muzyki nie odtwarza. Jeżeli w odtwarzaczu jako ścieżkę do pliku określę:
  1. <object type="application/x-shockwave-flash" data="player_mp3_multi.swf" width="200" height="20">
  2. <param name="movie" value="player_mp3_multi.swf" />
  3. <param name="FlashVars" value="mp3=\upload\test.mp3">
  4. </object>

to wówczas piosenka jest odtwarzana. Natomiast jeżeli będzie tak jak w pętli użyta zmienna $file_name to nie odtwarza, a pod tą zmienną mam właśnie tą nazwę test.mp3. Jakby ktoś mógł pomóc byłbym bardzo wdzięczny.
nospor
Zajrzyj w źródło wygenerowanej przez ciebie strony, dla opcji gdy wkladasz $file_name.
Przyjrzyj się temu co tam ci się tak naprawdę wygenerowało.

Jak już się przyjrzysz, to zapoznaj się podstawami obsługi stringów:
http://pl.php.net/manual/pl/language.types.string.php
kris280
No dzięki widzę już różnicę w kodzie i wiem co mam źle. Teraz poczytam o stringach i postaram się zrobić poprawnie.

No działa mi fajnie wszystko elegancko tak jak chciałem smile.gif
Dziękuje nospor za cierpliwość i wyrozumiałość i za rady.
nospor
A ja ci skolei dziękuję, że korzystałeś ze wskazówek i w miarę możliwości drążyłeś sam. Nie waliłeś tekstem "ale ja jestem początkujący i masz mi to napisać".
Naprawdę dziękuję. smile.gif Ostatnimi czasy taka postawa to rzadkość na forum
Przywracasz mi wiarę w użytkowników forum smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.