0
Thanks help, I have a problem that when I change the products I am not able to persist in the comic the way the product photo. I’ve tried a lot of ways to do it, but I haven’t been successful. Here’s what I’ve tried: 1) In the product image display I put a Hidden input to send the photo path but it didn’t work. 2) I changed the code in the product class and included an Else $this->foto = $name_imagem; in case you found a photo, send the path to the BD but I was not successful either. I don’t know what else I can do someone could fix my code to work? page where I make changes to product data
<main class="container">
<article class="principal">
<?php
$categorias = listaCategorias($conexao);
$marcas = listaMarcas($conexao);
$subcategorias = listaSubcategorias($conexao);
$produto = new Produto();
$produto->setCategoria(new Categoria());
$produto->setSubcategoria(new Subcategoria());
$produto->setMarca(new Marca());
$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() ;
//Carrega 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; ?>" />
<br>
//estes campos mexem com a foto (inclui e exibe)
<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"/>
<input type="hidden" value="<?=$produto->getFoto() ?>" />
</div>
<div class="form-group">
<label>Alterar Imagem:</label>
<input type="file" name="foto" class="form-control"
value="foto">
<br>
this is the product class in the fields where I have the photo:
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;
}
else
{
echo "<pre>";
echo "Opa!, foto com os seguintes problemas: <br>";
echo implode("<br>", $error);
exit;
}
return $nome_imagem;
}
}
this and the file changes product:
<?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';
$produto = new Produto();
$produto->setId( $_POST['id'] );
$produto->setCodigo( $_POST['codigo'] );
$produto->setReferencia( $_POST['referencia'] );
$produto->setPeso( $_POST['peso'] );
$produto->setNome( $_POST['nome'] );
$produto->setDescricao( $_POST['descricao'] );
$produto->setPreco( $_POST['preco'] );
$produto->setMedida( $_POST['medida'] );
$produto->setNcm( $_POST['ncm'] );
$produto->setMarca(new Marca());
$produto->getMarca()->setId( $_POST['marca_id'] );
$produto->setCategoria(new Categoria());
$produto->getCategoria()->setId( $_POST['categoria_id'] );
$produto->setSubcategoria(new Subcategoria());
$produto->getSubcategoria()->setId( $_POST['subcategoria_id'] );
$produto->setDestaque( $_POST['destaque'] );
$nome_imagem = $produto->setFoto( $_FILES["foto"]);
Don’t have Insert or update? I’m only seeing that you move the image to a path and return and the rest?
– Don't Panic
Just like @Everson said. If the problem is in the insertion or editing in the database, it is important that you post the code that inserts this image.
– Andrei Coelho