Ir para conteúdo

Arquivado

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

Plunder

Gravar no banco de dados e substituir arquivo

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.