Jump to content


Photo

Upload de multiplos arquivos cadastrando no banco MySQL


  • Faça o login para participar
1 reply to this topic

#1 bobsap

bobsap

    Normal

  • Usuários
  • 82 posts
  • Sexo:Masculino
  • Localidade:marilia

Posted 11/02/2015, 05:12

Estou desenvolvendo um sistema onde tem a parte de cadastros, possui campos para serem preenchidos  e um input file multiple. 

 

Preciso que essas informações inseridas sejam  armazenadas no banco de dados e que faça um upload dos arquivos anexados para uma pasta especifica. E preciso depois fazer uma pagina onde visualiza essas informações e tenha a opção de fazer o download do arquivo.

 

A forma que eu fiz, se selecionar só um arquivo, ele funciona perfeitamente, porém se coloco acima de um arquivo, ele cadastra também porém cadastra o mesmo numero de vezes que tem de arquivo selecionado. Se selecionei 3 arquivos, vai cadastrar 3 vezes a mesma informação porém cada campo do arquivo com um arquivo diferente.

 

Lembrando que os nomes dos arquivos selecionados devem ficar todos no mesmo campo do banco de dados separados por vírgula.

 

Segue como eu fiz:

<input multiple="" name="anexos[]" type="file"/>

PHP

$img = $_FILES["anexos"]; 
$pasta = '../downloads/';
$contar = count(array_filter($img['name']));
$ok = 0;
$erro = 0;
for($i = 0; $i < $contar; $i++){
$anexosMultiplos = $img['name'][$i];
    $tmp  = $img['tmp_name'][$i];
 
    if(!empty($anexosMultiplos)){
 
     if(move_uploaded_file($tmp, $pasta.$anexosMultiplos)){ 
  $sql = mysql_query("INSERT INTO licitacoes_firecracker (numero_licitacao, modalidade, objeto, data_hora_abertura, status, anexos, data_cadastro) 
VALUES ('{$numero_licitacao}', '{$modalidade}', '{$objeto}', '{$data_hora_abertura}', '{$status}', '{$anexosMultiplos}',  now())") or die( mysql_error() );
 echo("<script>javascript:alert('Licitação cadastrada com sucesso!');location.href='index.php';</script>"); 
  
  
} 
}
 
else{
$erro++;
 
     }


#2 Danilomaru

Danilomaru

    Ativo

  • Moderadores
  • 300 posts
  • Sexo:Masculino
  • Localidade:brasil

Posted 12/02/2015, 03:05

Sugiro mudar a modelagem, seguindo esta lógica, criando uma tabela separada: http://rberaldo.com.br/usando-campos-multivalorados/ No seu código, você faz INSERT dentro do loop. Se você quiser manter a modelagem atual, separando os arquivos por vírgula, deve executar apenas um INSERT, ou seja, colocá-lo fora do loop. Dentro do loop você apenas gera o valor do campo, concatenando os nomes dos arquivos






1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq