Pessoal, estou com um problema na hora de alterar os dados do produto. Quando chamo a pagina de altera produto ele carrega todos os dados, incluindo a imagem, mas no submit para alterar os dados do produto, o caminho da imagem é deletado do BD e a imagem permanece na pasta. Se escolho uma nova foto ele cria um novo caminho e guarda uma nova foto. Como posso alterar meu codigo para que durante a alteração, sem alterar a foto, eu consiga manter o caminho e a foto que já existia no BD?
segue pagina de alteração onde exibe a foto e se quiser altera a foto também
<div class="form-group">
<label>Imagem do Produto:</label>
<img width="177px" height="177px" width="auto" height="auto" img src="fotos/<?=$produto->getFoto() ?>" alt="Sem Imagem"/>
</div>
<div class="form-group">
<label>Alterar Imagem:</label>
<input type="file" name="foto" class="form-control"
value="foto">
segue abaixo a classe produto nos get e set foto:
public function getFoto()
{
return $this->foto;
}
public function carregaCaminhoFoto($foto) {
$this->foto = $foto;
}
public function gerarNovoNome( $nomeAntigo )
{
// Pega extensão da imagem
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $nomeAntigo, $ext);
// Gera um nome único para a imagem
$nome_imagem = md5(uniqid(time())) . "." . $ext[1];
return $nome_imagem;
}
public function setFoto($foto)
{
// esta variavel precisa existir, mesmo que vazia
$nome_imagem = null;
// armazena erros se houver
$error = array();
// Se a foto estiver sido selecionada
if (!empty($foto["name"]))
{
// Largura máxima em pixels
$largura = 1200;
// Altura máxima em pixels
$altura = 1200;
// Tamanho máximo do arquivo em bytes
$tamanho = 1500000;
// Verifica se o arquivo é uma imagem
if(!preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", $foto["type"]))
{
$error[1] = "Isso não é uma imagem.";
}
// Pega as dimensões da imagem
$dimensoes = getimagesize($foto["tmp_name"]);
// Verifica se a largura da imagem é maior que a largura permitida
if($dimensoes[0] > $largura)
{
$error[2] = "A largura da imagem não deve ultrapassar ".$largura." pixels";
}
// Verifica se a altura da imagem é maior que a altura permitida
if($dimensoes[1] > $altura)
{
$error[3] = "Altura da imagem não deve ultrapassar ".$altura." pixels";
}
// Verifica se o tamanho da imagem é maior que o tamanho permitido
if($foto["size"] > $tamanho)
{
$error[4] = "A imagem deve ter no máximo ".$tamanho." bytes";
}
// Se não houver nenhum erro
if (count($error) == 0)
{
$nome_imagem = $this->gerarNovoNome($foto["name"]);
// caso o diretório não exista
if( !is_dir("fotos") )
mkdir("fotos", "0777", true);
// Caminho de onde ficará a imagem
$caminho_imagem = "fotos" . DIRECTORY_SEPARATOR . $nome_imagem;
// Faz o upload da imagem para seu respectivo caminho
move_uploaded_file($foto["tmp_name"], $caminho_imagem);
$this->foto = $foto;
}
if (!count($error) == 0)
{
echo "<pre>";
echo "Opa!, foto com os seguintes problemas: <br>";
echo implode("<br>", $error);
exit;
}
else{
$this->foto = $nome_imagem;
}
return $nome_imagem;
}
segue o arquivo de altera produto na parte de setFoto
<?php
require_once 'conecta.php';
require_once 'banco-produto.php';
require_once 'produto.php';
require_once 'categoria.php';
require_once 'subcategoria.php';
require_once 'marca.php';
$nome_imagem = $produto->setFoto( $_FILES["foto"]);