Ir ao conteúdo
  • Cadastre-se

Tutorial: Player PHP+MySQL com músicas aleatórias


JC Digital

Posts recomendados

Olá pessoal!

Vocês deste fórum me ajudam bastante, então vou retribuir com um tutorial testado e aprovado :eiei:

Ele basicamente funciona assim: Um arquivo.php se passa por um .asx, escrevendo nele um número X de músicas, pré gravadas em um banco MySQL, com ordem aleatória. É formado por 7 arquivos e vou mostrar cada um aqui.

Começamos com conf_.php, o arquivo que vai fazer guardar as informações do banco de dados:

<?php
//Configuração do Servidor
$server = 'localhost'; //servidor
$user = 'root'; //usuário
$pass = 'senha'; //senha
$db = 'mus'; //nome do banco
$tbl = 'nomes'; //nome da tabela

//Limite de músicas por sessão
$limite = '30';

//Primeira música a tocar
$prime = 'musica_bg/neo/vinheta.mp3';
?>

Detalhe da última linha: Este arquivo sempre vai ser tocado, é o primeiro. (pode ser uma vinheta com seu nome)

Agora vamos criar a tabela no banco (tabela.sql):

CREATE TABLE `nomes` 
( `id` INT NOT NULL AUTO_INCREMENT ,
`nome` VARCHAR( 100 ) NOT NULL ,
PRIMARY KEY ( `id` )
);

INSERT INTO `nomes` ( `id` , `nome` ) VALUES
( NULL, 'musica_bg/1.mp3');

Após criar o arquivo SQL, vamos criar aquele que vai escrever o nome das músicas. É o index.php

<?php
include 'conf_.php';

/* Chama o ASX */
echo '<asx Version="3.0">';
echo "\n";
echo '<entry><ref href="' . $prime . '"/></entry>';
echo "\n";

$conexao = mysql_connect($server,$user,$pass); /*Conecta no banco de dados MySql*/

mysql_select_db($db); /*seleciona o banco a ser usado*/

$res = mysql_query("select * from $tbl ORDER BY rand() LIMIT 0, $limite"); /*Executa o comando SQL, no caso para pegar todos os usuarios do sistema e retorna o valor da consulta em uma variavel ($res) */


/*Enquanto houver dados na tabela para serem mostrados será executado tudo que esta dentro do while */
while($escrever=mysql_fetch_array($res)){

/*Escreve cada linha da tabela*/
echo '<entry><ref href="' . $escrever['nome'] . '"/></entry>';
echo "\n";
}/*Fim do while*/
mysql_close($conexao);
echo '</asx>';
?>

Esse é o final. Opcionalmente, você pode criar um arquivo para colocar o nome das músicas na tabela. Ele fica na sub pasta chamada cad, que pode ser protegida por um arquivo .htacess, fica a seu critério.

cad/index.php

<html>
<head>
<style><!--
body{
font-size:12px;
font-family:Trebuchet MS;
}
-->
</style>
<?php
include './../conf_.php';

/* verifica se a variável de erro existe */
if(isset($_GET['err'])){
$alpha = $_GET['err'];

if ($alpha == '1'){
$err = '<big><b><span style="color: #FF0000;">Digite pelo menos uma URL!</span></b></big><br>';}


if ($alpha == '2'){
$err = '<big><b><span style="color: #FF0000;">Erro no POST!</span></b></big><br>';}


if ($alpha == '3'){
$err = '<big><b><span style="color: #FF0000;">Uma das músicas já está cadastrada! Tente novamente!</span></b></big><br>';}
}


else{
$err = '';}
?>
<title>Novo Lançamento - Músicas BG</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body onload="document.getElementById('url').focus();">
<center>
<div style="text-align: center;"><span style="font-size:30px">Cadastro de Músicas</div>
<br>
Para usar: Digite os nomes das músicas, separados por vírgulas (sem espaços) e selecione a pasta onde estas se encontram.<br><br><br>
<?php echo $err; ?></center>
<form name="form1" method="post" action="explode.php">
<div align="center">
<table width="300px" style="border:solid;" border="1">
<tr>
<td><div align="left">Nome(s): <textarea name="url" cols="40" rows="8" id="url"></textarea> <br>
<center><small>(URLs separadas por vírgulas)</small></center>
</div></td>
</tr>

<tr>
<td><div align="left">Endereço:
<select name="end" id="end">
<option>/musica_bg/neo/</option>
<option>/musica_bg/</option>
</select>
</div></td>
</tr>

<tr>
<td><div align="right"><button value="Enviar" name="Enviar" >Enviar</button>
</div></td>
</tr>
</table>
</div>
</form>
<center>
JC Produções ©<?php echo date('Y'); ?>
</center>
</body>
</html>

A página anterior tem uma variável que ela recebe por GET, caso haja algum erro na gravação do banco de dados. Ela envia o nome da(s) música(s) por post para a página cad/explode.php:

<?php
include './../conf_.php';


//Verificação inicial

if (isset($_POST['url'])) { //verifica se a variável foi recebida
$url = $_POST['url']; //String original
if ($url == ''){
echo "<meta http-equiv='refresh' content='0;URL=./?err=1'>";} //apresenta erro de string vazia
}
else {
echo "<meta http-equiv='refresh' content='0;URL=./?err=2'>";} //apresenta erro de post

$end = $_POST['end'];
/*-----------------------------------------------------------------------------------------*/


//PARTE 2


$msg[0] = "Conexão com o banco falhou!";
$msg[1] = "Não foi possível selecionar o banco de dados!";

// Fazendo a conexão com o servidor MySQL
$conexao = mysql_pconnect($server,$user,$pass) or die($msg[0]);
mysql_select_db($db,$conexao) or die($msg[1]);



/*-----------------------------------------------------------------------------------------*/


//PARTE 3

$valores = explode(",",$url); //explode as vírgulas
$n_valores = count($valores); //conta quantos valores têm
$e=0;
if (isset($url)) {
$r = explode(",",$url);
for ($z=0; $z<$n_valores; $z++) { //faz um loop, gravando todas as variáveis explodidas

//verifica se alguma entrada já existe
$query = mysql_query("SELECT * FROM `nomes` WHERE `nome` LIKE '$r[$z]'");
if(mysql_num_rows($query) > 0) {
echo "<meta http-equiv='refresh' content='0;URL=./?err=3'>"; //apresenta erro de entrada já existente
} else {
$x = mysql_query("INSERT INTO $tbl(nome) VALUES ('$end$r[$z]')");
}
}
if($x){
echo "<script>alert('Música(s) cadastrada(s)!')</script>";
echo "<meta http-equiv='refresh' content='0;URL=./'>";
}else{
echo "Erro no Cadastro!";
echo " - <a href='./'>Voltar</a>";
}
}
?>

Pronto ;) você já tem um arquivo php que cria uma playlist aleatória para cada ouvinte. Agora basta chamar este arquivo em uma página, com o código abaixo:

<object id="MediaPlayer" name="MediaPlayer" classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" standby="Loading Microsoft Windows Media Player components..." type="application/x-oleobject">
<param name="filename" value="" />
<param name="autostart" value="True" />
<param name="uimode" value="Mini" />
<param name="showcontrols" value="True" />
<param name="showstatusbar" value="True" /><embed type="application/x-mplayer2" pluginspage="http://www.microsoft.com/windows/mediaplayer/download/default.asp" uimode="mini" src="./cad/index.php" showstatusbar="1" autostart="1" showcontrols="1" width="247" height="63" align="texttop"></embed></object>

Use a abuse da sua criatividade!

Link para o comentário
Compartilhar em outros sites

  • 3 meses depois...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...