Bom dia, agradeceria ajuda. Tenho um formulário de alteração e gostaria de exibir uma foto do produto em um dos campos " imagem do produto" mas não estou conseguindo. Poderiam me corrigir onde estou errando?
formulário produto-altera-adiciona
<main class="container">
<article class="principal">
<?php
$categorias = listaCategorias($conexao);
$cores = listaCores($conexao);
$tamanhos = listaTamanhos($conexao);
$produto = new Produto();
$produto->setCategoria(new Categoria());
$produto->setcor(new Cor());
$produto->settamanho(new Tamanho());
$ehAlteracao = false;
$action = "adiciona-produto.php";
$id = "";
//Campos do formulario
//Inserir os demais campos do formulario
if (array_key_exists('id', $_GET)) {
$id = $_GET['id'];
if ($id <> ""){
$produto = buscaProduto($conexao, $id);
$ehAlteracao = true;
$nome = $produto->getNome() ;
//Carregar os demais campos do formulário
$action = "altera-produto.php";
}
}
?>
<h1><?=$ehAlteracao ? "Alterar" : "Cadastrar" ?> produto</h1>
<form action="<?=$action ?>" method="post" enctype="multipart/form-data">
<!-- Adicionar os demais campos do formulário -->
<input type="hidden" name="id" value="<?=$id; ?>" />
<div class="form-group">
<label>Codigo Barras:</label>
<input type="text" name="codigo" class="form-control"
value="<?=$produto->getCodigo() ?>" >
</div>
<div class="form-group">
<label>Nome:</label>
<input class="form-control" type="text" name="nome"
value="<?=$produto->getNome() ?>">
</div>
<div class="form-group">
<label>Preco:</label>
<input type="text" name="preco" class="form-control"
value="<?=$produto->getPreco() ?>">
</div>
<div class="form-group">
<label>Descricao:</label>
<textarea class="form-control" name="descricao"><?=$produto->getDescricao() ?></textarea>
</div>
<div class="form-group">
<label>Cor:</label>
<select name="cor_id" class="form-control">
<?php
foreach($cores as $cor) :
$essaEhACor = $produto->getCor()->getId()
== $cor->getId();
$selecao = $essaEhACor ? "selected='selected'" : "";
?>
<option value="<?=$cor->getId() ?>" <?=$selecao ?> >
<?=$cor->getNome() ?>
</option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Tamanho:</label>
<select name="tamanho_id" class="form-control">
<?php
foreach($tamanhos as $tamanho) :
$essaEhATamanho = $produto->getTamanho()->getId()
== $tamanho->getId();
$selecao = $essaEhATamanho ? "selected='selected'" : "";
?>
<option value="<?=$tamanho->getId() ?>" <?=$selecao ?> >
<?=$tamanho->getNome() ?>
</option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Categoria:</label>
<select name="categoria_id" class="form-control">
<?php
foreach($categorias as $categoria) :
$essaEhACategoria = $produto->getCategoria()->getId()
== $categoria->getId();
$selecao = $essaEhACategoria ? "selected='selected'" : "";
?>
<option value="<?=$categoria->getId() ?>" <?=$selecao ?> >
<?=$categoria->getNome() ?>
</option>
<?php endforeach ?>
</select>
</div>
<div class="form-group">
<label>Imagem do Produto:</label>
<img src="fotos/<?= $produto->getFoto() ?>.jpg">
</div>
<div class="form-group">
<label>Upload da Imagem:</label>
<input type="file" name="foto" class="form-control"
value="foto">
<br>
<button class="btn btn-danger" type="submit">Enviar</button>
</form>
</article>
</main>
classe produto
<?php
class Produto
{
private $id;
private $codigo;
private $nome;
private $preco;
private $descricao;
private $categoria;
private $cor;
private $tamanho;
private $foto;
private $gerarNovoNome;
private $quantidade;
private $atualizado;
function __construct()
{
}
public function getId()
{
return $this->id;
}
public function setId($id)
{
$this->id = $id;
}
public function getCodigo()
{
return $this->codigo;
}
public function setCodigo($codigo)
{
$this->codigo = $codigo;
}
public function getNome()
{
return $this->nome;
}
public function setNome($nome)
{
$this->nome = $nome;
}
public function getPreco()
{
return $this->preco;
}
public function setPreco($preco)
{
if(!is_numeric($preco))
{
$preco_convertido = str_replace("R$ ", "", $preco);
$preco_convertido = str_replace(".", "", $preco_convertido);
$preco_convertido = (float) str_replace(",", ".", $preco_convertido);
$this->preco = $preco_convertido;
}
else
{
$this->preco = $preco;
}
}
public function getDescricao()
{
return $this->descricao;
}
public function setDescricao($descricao)
{
$this->descricao = $descricao;
}
public function getCategoria()
{
return $this->categoria;
}
public function setCategoria($categoria)
{
$this->categoria = $categoria;
}
public function getCor()
{
return $this->cor;
}
public function setCor($cor)
{
$this->cor = $cor;
}
public function getTamanho()
{
return $this->tamanho;
}
public function setTamanho($tamanho)
{
$this->tamanho = $tamanho;
}
public function getQuantidade()
{
return $this->quantidade;
}
public function setQuantidade($quantidade)
{
$this->quantidade = $quantidade;
}
public function getAtualizado()
{
return $this->atualizado;
}
public function setAtualizado($atualizado)
{
$this->atualizado= $atualizado;
}
public function getFoto()
{
return $this->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 = 300;
// Altura máxima em pixels
$altura = 500;
// Tamanho máximo do arquivo em bytes
$tamanho = 100000;
// 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;
}
else
{
echo "<pre>";
echo "Opa!, foto com os seguintes problemas: <br>";
echo implode("<br>", $error);
exit;
}
return $nome_imagem;
}
}
}
banco produto na função listaProdutos
<?php
function listaProdutos($conexao){
$produtos = array();
$resultado = mysqli_query($conexao, "select p.*, c.nome as categoria_nome, co.nome as cor_nome, t.nome as tamanho_nome from produtos p
inner join categorias c on(p.categoria_id = c.id)
inner join cor co on(p.cor_id = co.id)
inner join tamanho t on(p.tamanho_id = t.id)
order by p.nome, c.nome, co.nome, t.nome ");
while($array = mysqli_fetch_assoc($resultado)) {
$produto = new Produto();
$produto->setId($array['id']);
$produto->setNome($array['nome']);
$produto->setPreco($array['preco']);
$produto->setCodigo($array['codigo']);
$produto->setDescricao($array['descricao']);
$produto->setCor(new Cor());
$produto->getCor()->setId($array['cor_id']);
$produto->getCor()->setNome($array['cor_nome']);
$produto->setTamanho(new Tamanho());
$produto->getTamanho()->setId($array['tamanho_id']);
$produto->getTamanho()->setNome($array['tamanho_nome']);
$produto->setCategoria(new Categoria());
$produto->getCategoria()->setId($array['categoria_id']);
$produto->getCategoria()->setNome($array['categoria_nome']);
$produto->setQuantidade($array['quantidade']);
$produto->setFoto($array['foto']);
array_push($produtos, $produto);
}
return $produtos;
}