Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17563
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como fazer um update de imagens múltiplas MySQL

28-03-2015 07:34

Nesse post vou mostrar como fazer um update MySQL de múltiplas imagens, de várias imagens ao mesmo tempo.

Para upload múltiplo os inputs devem estar no formato de array, nome mais colchetes.

Esse script parte do seguinte:

- Você tem um banco de dados MySQL que armazena os nomes das imagens:
id - foto1 - foto2
1 | figura1.gif | figura2.gif


- Na atualização, o nome da imagem antiga no bd será trocado pelo nome da nova imagem;

- E obviamente, você tem a pasta que armazenas as fotos, deletando as fotos antiga "basada no nome antigo" e inserindo as fotos novas na pasta novamente;

No formulário que vai enviar as novas imagens você tem que passar o id da linha do banco de dados junto com os nomes antigos das imagens já armazenadas. Isso você faz puxando os dados via while. Creio que ai não tem problema.

Vamos ao formulário.

<form enctype="multipart/form-data" method="POST" action="atualizar.php"> <input type="text" name="id" value="25"> <br /> antiga1.gif <input type="hidden" name="antiga[]" value="antiga1.gif"> <input type="file" name="foto[]"> <br> antiga2.gif <input type="hidden" name="antiga[]" value="antiga1.gif"> <input type="file" name="foto[]"> <br> <input type="submit" name="envio"> </form>

Como mostrado acima são 2 campos de foto, referente a duas colunas para foto no banco de dados.

Puxo o id da linha que vou atualizar no banco de dados, que no exemplo é 25 e puxo os nomes das imagens já armazenadas no bd, que no exemplo são: antiga1.gif e antiga2.gif

Agora vejamos a parte do envio.

<?php if(isset($_POST['envio'])) { // PASTA QUE ARMAZENA AS FOTOS $uploaddir = "fotos/"; // NÚMERO DE INPUTS PARA FOTO, ATUALIZAR SE NECESSÁRIO $quantos = 2; $fotos = Array(); for($i = 0; $i < $quantos; $i++) { // CASO FOR TROCAR O NOME DA FOTO ORIGINAL, ATUALIZAR ABAIXO $nome_da_foto = $_FILES['foto']['name'][$i]; // PASTA MAIS FOTO $uploadfile = $uploaddir.$nome_da_foto; if($_FILES['foto']['name'][$i]=="") { $fotos[] = $_POST['antiga'][$i]; } else { @unlink("fotos/".$_POST['antiga'][$i]); if(@move_uploaded_file($_FILES['foto']['tmp_name'][$i], $uploadfile)) { $fotos[] = $nome_da_foto; } } } // SUA CONEXÃO COM O BANCO DE DADOS include("conexao.php"); // UPDATE mysql_query("UPDATE suatabela SET foto1='".$fotos[0]."', foto2='".$fotos[1]."' WHERE id='".$_POST['id']."'"); } ?>

Nesse exemplo acontece o seguinte:
Quando o usuário atualizar uma das fotos e deixar um input file vazio, o UPDATE vai atualizar somente o nome da foto nova, mantendo o nome da foto antiga na posição da coluna. Por exemplo:

antiga1.gif = colocou foto nova
antiga2.gif = não enviou foto


UPDATE ... foto1 = novafoto.gif, foto2 = antiga2.gif

Caso seja

antiga1.gif = não enviou foto
antiga2.gif = colocou foto nova


UPDATE ... foto1 = antiga1.gif, foto2 = novafoto.gif

0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado