Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Połączenie php z mysql oraz próbą odtworzenia mp3.
Forum PHP.pl > Forum > PHP
romantyk
Witam wszystkich,

Na zaliczenie do szkoły muszę zrobić projekt z zakresu php oraz mysql. Jego minimalne wymagania to:
1) dodawanie/usuwanie recordów w tabeli - zrobione
2) edytowanie recordów w tabeli - zrobione
3) wyświetlanie w jakiś sposób danych - zrobione

Mógłbym na tym zakończyć projekt. Chciałbym jednak do opcji EDIT | DEL dołożyć opcję PLAY.
Już tłumaczę o co mi chodzi. Dane, które są wyświetlane w tabeli wygladają bardzo prosto:

"nazwa" | opcja - EDIT | opcja - DEL <- tak wygląda tabela - pokrótce. Do tego chce dołożyć PLAY jak pisałem.
"nazwa" | opcja - EDIT | opcja - DEL | opcja - PLAY

Chciałbym aby odtwarzana była "nazwa" a tą nazwą był plik, który byłby uploadowany na serwer i automatycznie
dodawany w tabeli mysql (jego nazwa - bądź adres, nie wiem co jest potrzebne). (Samo dołożenie opcji to nie problem.
Problem jest kod, który by odtwarzał plik.)

Moje pytanie brzmi czy jest coś takiego w ogóle możliwe, czy to jest bardzo dużo pracy i czy laik taki jak ja, który po raz
pierwszy w życiu ma styczność z php + mysql może zrobić coś takiego?
krowal
Możliwe jest np za pomocą tego: http://www.schillmania.com/projects/soundmanager2/ flash+JS, korzystanie z tego jest naprawdę proste. Daj znać jak czegoś nie będziesz umiał zrobić.
romantyk
hmmm ręce mi opadły sad.gif możesz krowal powiedzieć jak mam zacząć współpracę z tym sm2?
http://www.schillmania.com/projects/soundm...tstarted/#intro
z tej strony rozumiem że musi być script js, który łączy się z odpowiednim plikem swf.
czyli chodzi o ten script :
CODE
<script>
soundManager.url = '/path/to/swf-files/';
soundManager.flashVersion = 9; // optional: shiny features (default = 8)
soundManager.useFlashBlock = false; // optionally, enable when you're ready to dive in
// enable HTML5 audio support, if you're feeling adventurous. iPad/iPhone will always get this.
// soundManager.useHTML5Audio = true;
soundManager.onready(function() {
// Ready to use; soundManager.createSound() etc. can now be called.
});
</script>


a ten wrzucamy gdzieś w pliku html aby łączył się ze scryptem wyżej tak?:
CODE
<script src="soundmanager2.js"></script>


no te pliki swf podejrzewam, że odpowiednie wezmę, jak ściągnę całego sm2.
Tylko tutaj zaczynają się schody bo reszty tego powiedzmy "how to" link1 nie rozumiem.
Tzn niby rozumiem co tam jest napisane tylko nie wiem jak to odnieść do tego co chce uzyskać.


EDIT::

Ok. Popatrzyłem trochę na to co jest napisane, i ... Wiem (chyba) już, że z tych plików, które się ściąga z sm2 trzeba sobie wybrać
przykładowy odtwarzacz. np: ten 360. Potem przerabia się jego index.html i dodaje pliki te, które są opisane w tym pliku i wymagane.
Podaje się ścieżki do nich. Te pliki znajdują się w całym folderze sm2. - Tak?! Dobrze to rozumiem?
Ok. hehe .mp3 się odpalają biggrin.gif ...


Pozostaje kolejna kwestia. Jak przerobić plik upload aby dodawał np: ścieżkę pliku bądź nazwę do tabeli w bazie danych. Natomiast ten sm2
sam pobierał sobie ścieżkę z bazy. Po prostu by aby dodać nowy plik .mp3 wystarczyło go upload'ować na serwer?


EDIT2::
Witam mam pewien problem. Jak połączyć kod php, który wyświetla tabelę a w niej dane z bazy danych. Ze skryptem js do odtwarzania mp3.
Tak aby obok nazwy można było kliknąć na "grafikę" i grała piosenka. Poniżej zamieszam dwa skrypty. Jeden do tabeli z php + mysql a drugi
do odtwarza mp3 obydwa działają tylko nie mogę ich połączyć w całość.


SKRYPT PHP + MySQL
CODE
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Neries PlayLista mp3</title>
</head>
<body>
<A href="/index.php">Strona Główna.</A>.
<br/>
<?php

/*

W TYM MIEJSCU
NASTĘPUJE POŁĄCZENIE Z BAZĄ DANYCH
ORAZ WYŚWIETLANIE DANYCH Z TABELI

*/

$connection = @mysql_connect('mysql3.ugu.pl', 'db201355', 'baza1')
or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());
$db = @mysql_select_db('db201355', $connection)
or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error());
$wynik = mysql_query("SELECT * FROM muzyka")
or die('Błąd zapytania');
if(mysql_num_rows($wynik) > 0) {
echo "<table cellpadding=\"2\" border=1>";
while($r = mysql_fetch_assoc($wynik)) {
echo "<tr>";
echo "<td>".$r['nazwa']."</td>";
echo "<td>
TUTAJ CHCĘ ABY BYŁA GRAFIKA Z DRUGIEGO SKRYPTU TZN DRUGI SKRYPT I BY DZIAŁAŁ
</td>";
echo "</tr>";
}
echo "</table>";
}
?>
<!--
<a href=\"/player/index.html\">Play.</a>
-->
<br/>
</body>
</html>



SKRYPT JS DO ODTWARZANIA MP3:
CODE
<!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" lang="en" xml:lang="en">
<head>
<title>Player.</title>
<link rel="stylesheet" type="text/css" href="/player/360player.css" />
<script type="text/javascript" src="/player/script/berniecode-animator.js"></script>
<script type="text/javascript" src="/player/script/soundmanager2.js"></script>
<script type="text/javascript" src="/player/script/360player.js"></script>

<script type="text/javascript">
soundManager.url = '/player/soundmanager2_flash9_debug.swf'
</script>
<link rel="stylesheet" type="text/css" href="/player/index.css" />
<link rel="stylesheet" type="text/css" href="/player/demo.css" />
<link rel="stylesheet" type="text/css" href="/player/flashblock/flashblock.css" />
<style type="text/css">
/* Demo page, general layout */

#left {
position:relative;
width:950px;
max-width:100%;
}

#left h2 {
padding-top:0px;
margin-bottom:0.25em;
color:#666;
}

pre.block {
margin-top:0.5em;
}
</style>
</head>
<body>
<div style="margin-top:1.25em">
<div style="float:left;display:inline"> <!-- float is just for this demo layout, you don't need it. -->
<div class="ui360" style="margin-top:-0.55em"><a href="/player/mp3/rain.mp3"></a></div>
</div>
</body>
</html>





Z góry przepraszam, że piszę nowy post. Może mi ktoś podpowiedzieć jak rozwiązać moją zagwostkę ?
krowal
Jedyne co musisz zrobić to wrzucić wymagany plik .js do siebie na stronę:
  1. <script type="text/javascript" src="/js/soundmanager2-nodebug-jsmin.js"></script>

Druga sprawa to ustawienie ścieżki dostępu do odpowiedniego pliku swf, zależy czy korzystasz z 'debug mode' czy nie:
[JAVASCRIPT] pobierz, plaintext
  1. <script>
  2. soundManager.url = '/js/'; //tu powinien być plik soundmanager2.swf i soundmanager2_flash9.swf
  3. function play(id){
  4. soundManager.createSound({
  5. id:id,
  6. url:'/sound/mp3_'+id+'.mp3'
  7. }).play();
  8. }
  9. </script>
[JAVASCRIPT] pobierz, plaintext

Później wystarczy dać pod linkiem lub przyciskiem:
  1. <a href="#" onclick="play(43); return false;">Graj mp3 nr 43</a>

Ile linków sobie wygenerujesz i jak je będziesz obsługiwał to już twoja sprawa. Można to zrobić na tysiąc sposobów. Pod linkiem może być obrazek jak wolisz lub cokolwiek innego. Obok linka możesz też dać funkcję stop:
[JAVASCRIPT] pobierz, plaintext
  1. function stop(id){
  2. soundManager.stop(id);
  3. }
[JAVASCRIPT] pobierz, plaintext

  1. <a href="#" onclick="stop(43); return false;">Zatrzymaj mp3 nr 43</a>


Wszystko pisane z palca, bacz na błędy wink.gif
romantyk
nie rozumiem sad.gif i nie działa. zrobiłem plik upload na serwer i do bazy danych.
poprawnie mi się łączy i wrzuca plik do bazy danych mój jedyny rekord w bazie to np "piosenka1.mp3" pod id 18
kod poniżej:
CODE
<?php
echo '<?xml version="1.0" encoding="iso-8859-2"?>';
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
transitional.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
<title>Upload</title>
</head>
<body>

<div>
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input name="plik" type="file" />
<input type="submit" value="Wyślij plik" />
</form>
</div>
</br>
</br>
</br>
<A href="index.php">Strona Główna.</A>
</br>
<?php

$connection = @mysql_connect('serwer bazy danych', 'uztkownik bazy danych', 'haslo do bazy danych')
or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());
//echo "Udało się połączyć z serwerem!<br />";
$db = @mysql_select_db('baza danych', $connection)
or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error());
//echo "Udało się połączyć z bazą danych!";

$plik_tmp = $_FILES['plik']['tmp_name'];
$plik_nazwa = $_FILES['plik']['name'];

if(is_uploaded_file($plik_tmp)) {
move_uploaded_file($plik_tmp, "_mp3/$plik_nazwa");
echo "Plik: <strong>$plik_nazwa</strong> został przesłany na serwer!";
}
$query = mysql_query("INSERT INTO muzyka VALUES('id','$plik_nazwa')");

?>
</body>
</html>


nie wiem teraz jak to co napisałeś niżej ma działać z tym co jam.
Rozumiem Twój kod tak przynajmniej myślę ... Ta część ma odpowiadać za pobieranie id z bazy i odtwarzanie tak?
Jednak mi to nie działą bo albo źle coś robię albo nie wiem. Zmieniłem folder "/sound/mp3_" na mój "_mp3"
<script>
soundManager.url = '/js/'; //tu powinien być plik soundmanager2.swf i soundmanager2_flash9.swf
function play(id){
soundManager.createSound({
id:id,
url:'/sound/mp3_'+id+'.mp3'
}).play();
}
</script>
krowal
Skoro twój plik nazywa się "piosenka1.mp3" to jak chcesz się do niego odwołać przez "mp3_'+id+'.mp3" ? Brak Ci podstaw programistycznego myślenia. Ciężko komuś takiemu coś wytłumaczyć smile.gif i proszę nie pisz do mnie na priv zaraz po napisaniu posta. Po to jest forum aby napisać i czekać cierpliwie, jednocześnie myśląc nad rozwiązaniem smile.gif
romantyk
Ok. Tylko ja powiedzmy nie wiem jakie piosenki, ktoś będzie uplodował na serwer. I chciałbym aby 'oryginalny' tytuł piosenki był widoczny na stronie.
hmm spróbuj mi wytłumaczyć na pewno Ci się uda smile.gif
a i przepraszam za ten priv.
krowal
Masz dwie możliwości, albo odczytywać tytuł z tagów ukrytych w każdym pliku mp3 albo dać użytkownikowi jeszcze jedno pole podczas uploadu, w które sam wpisze tytuł piosenki którą wrzuca na serwer. Jakbyś nie zrobił - zapisuj tą nazwę w bazie razem ze ścieżką do uploadowanego pliku.
romantyk
W ten sposób nie da rady tego zrobić? Bo ogólnie zrobiłem coś takiego. Mam plik upload. Mam też plik idnex1.php który jest plikiem od tego player'a do, którego dałeś mi wyżej link. Tego player'a uruchomiłem. Zrobiłem na serwerze folder "mp3". W tym pliku index1.php ustawiłem link do piosenki "rain.mp3" według opisu na stronie player'a. Uploadowałem ten plik "rain.mp3" do tego folderu i działało. Teraz chce w tym linku zrobić na podstawie zapytania mysql aby sam wybierał sobie nazwę pliku ... pogrubiony kod poniżej:

CODE
<!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" lang="en" xml:lang="en">
<head>
<title>Player.</title>
<link rel="stylesheet" type="text/css" href="/player/360player.css" />
<script type="text/javascript" src="/player/script/excanvas.js"></script>
<script type="text/javascript" src="/player/script/berniecode-animator.js"></script>
<script type="text/javascript" src="/player/script/soundmanager2.js"></script>
<script type="text/javascript" src="/player/script/360player.js"></script>

<script type="text/javascript">
soundManager.url = '/player/soundmanager2_flash9_debug.swf'
</script>
<link rel="stylesheet" type="text/css" href="/player/index.css" />
<link rel="stylesheet" type="text/css" href="/player/demo.css" />
<link rel="stylesheet" type="text/css" href="/player/flashblock/flashblock.css" />
<style type="text/css">
/* Demo page, general layout */

#left {
position:relative;
width:950px;
max-width:100%;
}

#left h2 {
padding-top:0px;
margin-bottom:0.25em;
color:#666;
}

pre.block {
margin-top:0.5em;
}
</style>
</head>
<body>

<?php
$connection = @mysql_connect('mysql3.ugu.pl', 'db201355', 'baza1')
or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());
//echo "Udało się połączyć z serwerem!<br />";
$db = @mysql_select_db('db201355', $connection)
or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error());
//echo "Udało się połączyć z bazą danych!";

echo'<div style="margin-top:1.25em">';
echo'<div style="float:left;display:inline">';
echo'<div class="ui360" style="margin-top:-0.55em">';
//echo'<a href="/player/mp3/rain.mp3"></a>';

$piosenka = "SELECT nazwa FROM muzyka WHERE nazwa = '" . $_GET['id'] . "'";
$wynik = mysql_query($piosenka);
?><a href="/player/mp3/<? echo $piosenka; ?>"></a><?


echo'</div>';
echo'</div>';
?>
</body>
</html>


To działała tylko wiadomo trzeba usunąć komentarz -> //echo'<a href="/player/mp3/rain.mp3"></a>';
Teraz to działa w ten sposób, że jak wchodzę na stronę to player pokazuje się na chwilę a potem od razu znika :/ ...
Moja tabela to muzyka a w niej jedyne pola to id,nazwa.
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.