Dynamische muziekspeler met html5 en php script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Stefan Vermunt

Stefan Vermunt

27/01/2011 22:59:40
Quote Anchor link
Hoi allemaal,

Voor mijn muziek website ben ik bezig met een php script in combinatie met het html5 audio element om een dynamische muziekspeler + playlist te maken.

Hier de code voor de html5 audio speler:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<audio src="http://www.radiostereo.nl/paginas/muziek/afspeellijsten/html5.php" controls="controls" autoplay="autoplay" loop="loop">
</audio>


En hier de code voor de dynamische playlist

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?

// Verbinding maken met de database
mysql_connect("***","***","***");
mysql_select_db("***");

// Kijken of er een nummer in de playlist_tabel staat
$sql = "SELECT muziek_id FROM playlist ORDER BY id ASC";
$query = mysql_query($sql);
$rij = mysql_fetch_object($query);
$muziek_id = htmlspecialchars($rij->muziek_id);
// Zo ja, dan informatie uit de muziek_tabel halen
$sql = "SELECT * FROM `muziek` WHERE id='$muziek_id'";
$query = mysql_query($sql);
$rij = mysql_fetch_object($query);
$id = htmlspecialchars($rij->id);
$artiest = htmlspecialchars($rij->artiest);
$titel = htmlspecialchars($rij->titel);
$link = htmlspecialchars($rij->link);
$album = htmlspecialchars($rij->album);
// Nummer uit de playlist_tabel verwijderen
$sql = "DELETE FROM playlist WHERE muziek_id=$muziek_id";
$query = mysql_query($sql);
// Aantal keer afgespeeld van het gekozen nummer verhogen met 1
mysql_query("UPDATE muziek SET afgespeeld=afgespeeld + 1 WHERE id= '$id' ");


// Wanneer er geen nummers in de playlist_tabel staan een random nummer kiezen
if(!$link){
// Aantal nummers tellen
$sql = "SELECT id FROM `muziek` ORDER BY id DESC ";
$query = mysql_query($sql);
$rij = mysql_fetch_object($query);
$tot = htmlspecialchars($rij->id);
// Random nummer bepalen
$random = rand(1, $tot);
// Informatie uit de muziek_tabel halen
$sql = "SELECT * FROM `muziek` WHERE id='$random'";
$query = mysql_query($sql);
$rij = mysql_fetch_object($query);
$id = htmlspecialchars($rij->id);
$artiest = htmlspecialchars($rij->artiest);
$titel = htmlspecialchars($rij->titel);
$link = htmlspecialchars($rij->link);
$album = htmlspecialchars($rij->album);
}


// Speciale characters in de link omzetten
$link = str_replace("&amp;", "&", $link);
$link = str_replace(" ", "%20", $link);
$link = str_replace("é", "%c3%a9", $link);

//Header
header('Content-type: audio/mpeg');
header('Content-Length: '.filesize($link));
header("Expires: -1");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
readfile($link);

?>


Nu werkt het script redelijk goed.
Behalve wanneer ik een nummer aan de playlist toevoeg.
In plaats van dat het nummer in de playlist wordt afgespeeld wordt er toch een random nummer afgespeeld.
Nu lijkt het dus dat het eerste gedeelte van het script niet werkt
(waar het nummer uit de playlist wordt gekozen)
maar wanneer ik de onderstaande regels verwijder:

// Nummer uit de playlist_tabel verwijderen
$sql = "DELETE FROM playlist WHERE muziek_id=$muziek_id";
$query = mysql_query($sql);


wordt het nummer uit de playlist WEL afgespeeld.

Maar dan heb ik dus het probleem dat het nummer oneindig gekozen blijft worden, omdat het nummer niet wordt verwijdert uit de playlist.

Iemand enig idee hoe dit kan?

Je kunt het script proberen door naar deze pagina te gaan met bijvoorbeeld google chrome http://www.radiostereo.nl?frame
En dan nummers toe te voegen aan de playlist

Bedankt alvast!

Stefan
Gewijzigd op 27/01/2011 23:02:17 door Stefan Vermunt
 
PHP hulp

PHP hulp

24/11/2024 12:24:20
 
Gerhard l

gerhard l

28/01/2011 10:04:43
Quote Anchor link
probeer eens de $sql's en $query's een verschillende namen te geven zoals
$sqlid
$queryid

en daarna

$sqlinfo
$queryinfo

want nu gebruik je 2x dezelfde, dit werkt niet goed denk ik,
gebruik liever ook geen * geef aan wat je wilt ophalen zoals bij de 1e query

edit
je gebruikt zelfs 4x $sql en $query, probeer ze allemaal eens een aparte naam te geven
Gewijzigd op 28/01/2011 10:06:57 door gerhard l
 
- Ariën  -
Beheerder

- Ariën -

28/01/2011 10:20:46
Quote Anchor link
En is de foutafhandeling op vakantie ofzo?
 
Stefan Vermunt

Stefan Vermunt

29/01/2011 09:31:39
Quote Anchor link
Gerhard lubbers op 28/01/2011 10:04:43:
probeer eens de $sql's en $query's een verschillende namen te geven zoals
$sqlid
$queryid

en daarna

$sqlinfo
$queryinfo

want nu gebruik je 2x dezelfde, dit werkt niet goed denk ik,
gebruik liever ook geen * geef aan wat je wilt ophalen zoals bij de 1e query

edit
je gebruikt zelfs 4x $sql en $query, probeer ze allemaal eens een aparte naam te geven


Sorry, maar het heeft niet geholpen..
nog meer ideën ?



Toevoeging op 29/01/2011 09:32:32:

- Aar - op 28/01/2011 10:20:46:
En is de foutafhandeling op vakantie ofzo?


Ik heb de foutmeldingen weggelaten omdat de header anders niet meer werkt..
(header allready send)
 
- Ariën  -
Beheerder

- Ariën -

29/01/2011 09:36:39
Quote Anchor link
het gaat erom dat je gewoon goede foutafhandeling gebruikt.
Zolang je geen foutmeldingen ziet, zien je ook geen 'header already sent'-error.
 
Obelix Idefix

Obelix Idefix

29/01/2011 09:43:45
Quote Anchor link
Stefan Vermunt op 29/01/2011 09:31:39:
Ik heb de foutmeldingen weggelaten omdat de header anders niet meer werkt..
(header allready send)


Struisvogelpolitiek: wat ik niet zie, is er niet....

Zoals Aar ook aangeeft: zorg voor goede foutafhandeling en je hebt geen foutmeldingen en dus geen probleem met 'headers already sent'.
 
Milo S

Milo S

29/01/2011 09:46:50
Quote Anchor link
Niet alleen de foutafhandeling is op vakantie, ook de insping gedeeltes...

Voorbeeld van een nette query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$sql
=
"
SELECT
    veld1,
    veld2,
    veld3
FROM
    tabel
WHERE
    veld1 = '"
.mysql_real_escape_string( $_GET['veld'] )."'
"
;
?>


Mits je dat doet gaat het er al een stuk beter uitzien, voeg dan nog foutafhandeling toe, en laat dat htmlspecialchars is achterwege... Naar mijn idee is dat echt een overbodige functie, zeker wat id's betreft...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.