Gravar no banco de dados e substituir arquivo
Boa noite,
Tenho um formulário para cadastrar áudio em um site e funciona perfeitamente. Baseado nele eu coloquei um formulário em outro site para cadastrar/alterar-dados em outro site.
Fiz 10 cadastros manualmente e esperava, através de um formulário, apenas alterar informações e trocar os arquivos. Com imagem funciona bem, mas não funciona com arquivo de áudio.
Quando clico em Alterar apaga o nome do arquivo no banco de dados e apaga o arquivo na pasta. Deveria substituir.
BANCO DE DADOS:
--
-- Estrutura da tabela 10mais
--
CREATE TABLE IF NOT EXISTS `10mais` (
`id` int(4) NOT NULL auto_increment,
`titulo` varchar(255) NOT NULL default '',
`interprete` varchar(255) NOT NULL default '',
`arquivo` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
--
-- Extraindo dados da tabela 10mais
--
INSERT INTO 10mais (id, titulo, interprete, arquivo) VALUES
(1, 'Música 1', 'Interprete 1', 'audio1.mp3'),
(2, 'Música 2', 'Interprete 2', 'audio2.mp3'),
(3, 'Música 3', 'Interprete 3', 'audio3.mp3'),
(4, 'Música 4', 'Interprete 4', 'audio4.mp3'),
(5, 'Música 5', 'Interprete 5', 'audio5.mp3'),
(6, 'Música 6', 'Interprete 6', 'audio6.mp3'),
(7, 'Música 7', 'Interprete 7', 'audio7.mp3'),
(8, 'Música 8', 'Interprete 8', 'audio8.mp3'),
(9, 'Música 9', 'Interprete 9', 'audio9.mp3'),
(10, 'Música 10', 'Interprete 10', 'audio10.mp3');
alterar_form.php
<?
$id = $_GET[id];
$sql = mysql_query("SELECT * FROM 10mais where id='$id'");
$dados=mysql_fetch_array($sql);
?>
<style type="text/css">
.sim {
border: 1px solid #7F9DB9;
}
.nao {
background-color: #CCCCCC;
border: 1px solid #7F9DB9;
}
</style>
<script>
function Habilitar() {
nForm = document.forms['alterar'];
if(nForm.elements['novo_arquivo'].checked = true) {
nForm.elements['arquivo'].disabled = false;
nForm.elements['arquivo'].className= "sim";
}
}
function desabilitar() {
nForm.elements['arquivo'].disabled = true;
nForm.elements['arquivo'].className = "nao";
}
</script>
<script type="text/javascript" src="../swfobject.js"></script>
<form action="?pg=../estrutura/10mais/alterar_db.php" method="post" enctype="multipart/form-data" name="alterar">
<input type="hidden" name="id" value="<? echo $id; ?>">
<h3>Alteração de As 10 Mais</h3>
<table width="440" border="0" align="center" cellpadding="2" cellspacing="0">
<tr><td colspan="2" align="right"></td>
</tr>
<tr>
<td align="right" valign="middle"><b>Cantor(a):</b></td>
<td valign="middle"> <input name="titulo" type="text" value="<? echo $dados[titulo];?>" size="45" maxlength="255"> </td>
</tr>
<tr>
<td align="right" valign="middle"><b>Música:</b></td>
<td valign="middle"> <input name="interprete" type="text" value="<? echo $dados[interprete];?>" size="45" maxlength="255"> </td>
</tr>
<TR>
<td align="right"><strong>Áudio:</strong></td>
<td colspan="5" valign="middle">
<? if($dados[arquivo] != ""){?>
<div id="flashPlayer">
</div>
<script type="text/javascript">
var so = new SWFObject("../10mais/player.swf", "mymovie", "75", "30", "7", "#FFFFFF");
so.addVariable("autoPlay", "yes");
so.addVariable("soundPath", "../10mais/<?=$dados[arquivo]?>");
so.write("flashPlayer");
</script>
<? } else {?>
<? }?>
<b>Trocar arquivo?</b><BR>
<input name="novo_arquivo" type="radio" value="nao" checked onClick="javascript:desabilitar()">
Não
<input name="novo_arquivo" type="radio" onClick="javascript: Habilitar();" value="sim">
Sim
<input name="novo_arquivo" type="radio" value="nada" onClick="javascript:desabilitar()">
Sem arquivo <br><input name="arquivo_antigo" type="hidden" value="<?=$dados[arquivo]?>">
<input name='arquivo' type='file' disabled class="nao" size=14> </td>
</TR>
</table>
<table align="center">
<tr>
<td width="436" colspan="2"> <p align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<input type='submit' value='Alterar'>
</font></p></td>
</tr>
</table>
</form>
alterar_db.php
<?
$id = $_POST["id"];
$titulo = $_POST[titulo];
$interprete = $_POST[interprete];
$arquivo = $_POST[arquivo];
$arquivo_antigo = $_POST[arquivo_antigo];
$novo_arquivo = $_POST[novo_arquivo];
// aqui executa o upload da foto
$dir = "../10mais";
//echo "$dir";
$uploaddir="$dir/";
//echo $uploaddir;
if($novo_arquivo == nao){
$sql = "UPDATE 10mais SET titulo='$titulo',interprete='$interprete' WHERE id='$id'";}
if($novo_arquivo == sim){
@unlink("$dir/$arquivo_antigo");
if($arquivo != "none") {// verifica campo arquivo
if (($_FILES['arquivo']['tmp_name'], $uploaddir . $_FILES['arquivo']['name'])) {
$arquivo = $_FILES['arquivo']['name'];
}}// termina a função para enviar a foto
$sql = "UPDATE 10mais SET titulo='$titulo',interprete='$interprete',arquivo='$arquivo' WHERE id='$id'";
}
if($novo_arquivo == nada){
@unlink("$dir/$arquivo_antigo");
$sql = "UPDATE 10mais SET titulo='$titulo',interprete='$interprete',arquivo='' WHERE id='$id'";
}
$sql2 = mysql_query($sql);
?>
<h3>As 10 Mais alteradas com sucesso!</h3>
<br>
<meta http-equiv="refresh" content="2;URL=?pg=../estrutura/10mais/listar.php">
<a href='?pg=../estrutura/10mais/listar.php'>Voltar</a>
Eu quero alterar título (da música), nome (do cantor) e enviar um novo arquivo (mp3) substituindo o anterior.
Onde estou errando?
Desde já agradeço.
Discussão (2)
Carregando comentários...