Bom dia, agradeceria ajuda de onde estou errando:
Estou tentando fazer upload de imagens através da pagina altera-produto (caso o usuário não tenha a imagem no momento do cadastramento do produto ele poderá fazer o upload depois, para isso, bastando alterar o produto) .
erro:
Notice: Undefined variable: nome_imagem in C:\Bitnami\wampstack-5.6.19-0\apache2\htdocs\beladuquesa\sys\banco-produto.php on line 81
O produto Saia Rita foi alterado.
Segue o arquivo produto-altera-adiciona
<?php
require_once 'conecta.php';
require_once 'banco-cor.php';
require_once 'banco-tamanho.php';
require_once 'banco-categoria.php';
require_once 'banco-produto.php';
require_once 'produto.php';
require_once 'cor.php';
require_once 'tamanho.php';
require_once 'categoria.php';
require_once 'logica-usuario.php';
?>
<?php
verificaUsuario();
?>
<!--require_once 'logica-usuario.php';
verificaUsuario(); -->
<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">
<!-- 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:</label>
<input type="file" name="foto" class="form-control"
value="foto">
<br>
<button class="btn btn-danger" type="submit">Salvar</button>
</form>
</article>
</main>
</div> <!-- /container -->
arquivo altera-produto
<?php
require_once 'conecta.php';
require_once 'banco-produto.php';
require_once 'banco-cor.php';
require_once 'banco-tamanho.php';
require_once 'banco-categoria.php';
require_once 'produto.php';
require_once 'cor.php';
require_once 'tamanho.php';
require_once 'categoria.php';
$produto = new Produto();
$produto->setId( $_POST['id'] );
$produto->setCodigo( $_POST["codigo"]) ;
$produto->setNome( $_POST["nome"]);
$produto->setPreco( $_POST["preco"]);
$produto->setDescricao( $_POST["descricao"]);
$cor = new Cor();
$cor->setId( $_POST["cor_id"]);
$produto->setCor($cor);
$tamanho = new Tamanho();
$tamanho->setId( $_POST["tamanho_id"]);
$produto->setTamanho($tamanho);
$categoria = new Categoria();
$categoria->setId( $_POST["categoria_id"]);
$produto->setCategoria($categoria);
$produto->setFoto( $_POST["foto"]);
if(alteraProduto($conexao, $produto)) { ?>
<!--<script type="text/javascript">
setTimeout(function(){window.location="produto-lista.php"} , 20000);
</script>-->
<p class="text-success">
O produto <?=$produto->getNome() ?> foi alterado.
</p>
<noscript>
Se não for direcionado automaticamente, clique <a href="produto-lista.php">aqui</a>.
</noscript>
<?php
} else {
$msg = mysqli_error($conexao);
?>
<p class="text-danger">O produto <?=$produto->getNome() ?>
não foi alterado: <?= $msg?></p>
<?php
}
?>
<!--<script language="JavaScript">
window.location="produto-lista.php";
</script>
classe Produto
<?php
class Produto
{
private $id;
private $codigo;
private $nome;
private $preco;
private $descricao;
private $categoria;
private $cor;
private $tamanho;
private $foto;
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 getFoto()
{
return $this->foto;
}
public function setFoto($foto)
{
// Se a foto estiver sido selecionada
if (!empty($foto["name"])) {
// Largura máxima em pixels
$largura = 150;
// Altura máxima em pixels
$altura = 180;
// Tamanho máximo do arquivo em bytes
$tamanho = 1000;
// 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) {
// Pega extensão da imagem
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto["name"], $ext);
// Gera um nome único para a imagem
$nome_imagem = md5(uniqid(time())) . "." . $ext[1];
// Caminho de onde ficará a imagem
$caminho_imagem = "fotos/" . $nome_imagem;
// Faz o upload da imagem para seu respectivo caminho
move_uploaded_file($foto["tmp_name"], $caminho_imagem);
$this->foto = $foto;
}
}
}
}
arquivo banco-produto na função alteraProduto
function alteraProduto($conexao, $produto) {
$query ="update produtos set nome = '{$produto->getNome()}', codigo = '{$produto->getCodigo()}',preco = {$produto->getPreco()}, descricao = '{$produto->getDescricao()}',
cor_id= {$produto->getCor()->getId()}, tamanho_id = {$produto->getTamanho()->getId()},
categoria_id= {$produto->getCategoria()->getId()}, foto = '".$nome_imagem."' where id = {$produto->getId()}";
return mysqli_query($conexao, $query);
}