Plunder 0 Denunciar post Postado Setembro 24, 2014 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. Compartilhar este post Link para o post Compartilhar em outros sites
Massaki 47 Denunciar post Postado Setembro 25, 2014 Quando há novo arquivo, você apaga o arquivo antigo, mas não salva o novo no diretório. ... if($arquivo != "none") {// verifica campo arquivo if ($_FILES['arquivo']['tmp_name']){ // ** Altere aqui $arquivo = $_FILES['arquivo']['name']; copy($_FILES['arquivo']['tmp_name'], $uploaddir . arquivo); // ** Coloque isto aqui } } ... Compartilhar este post Link para o post Compartilhar em outros sites
Plunder 0 Denunciar post Postado Outubro 12, 2014 Boa tarde Massaki, Continua apagando o antigo sem substituir ou escrever o nome do arquivo no bd. Mesmo assim, agradeço. Boa noite, A correção é impossível, pessoal? Compartilhar este post Link para o post Compartilhar em outros sites