5
respostas

Problemas para implementar os get e set nos arquivos mencionados

Boa tarde Senhores , Estou com problemas e duvidas para usar os get e set nos arquivos mencionados no exercício ,por exemplo meu formulário sumiu o botão de cadastrar , as opções nas categorias também sumiram por favor olhem se está errado o uso dos encapsulamentos

Produto-formulario-base.php ---

 <tr>
                <td>Nome</td>
                <td> <input class="form-control" type="text" name="nome" value="<?=$produto->getNome()?>"></td>
            </tr>
            <tr>
                <td>Preço</td>
                <td><input  class="form-control" type="number" name="preco" 
                    value="<?=$produto->getPreco()?>"></td>
            </tr>
            <tr>
                <td>Descrição</td>
                <td><textarea class="form-control" name="descricao"><?=$produto->getDescricao()?></textarea></td>
            </tr>

            <tr>
    <td>Categoria</td>
    <td>
        <select name="categoria_id" class="form-control">
            <?php foreach($categorias as $categoria) : 
                $essaEhACategoria = $produto->categoria->setId($id) == $categoria->setId($id);
                $selecao = $essaEhACategoria ? "selected='selected'" : "";
            ?>
                <option value="<?=$categoria->setId($id)?>" <?=$selecao?>>
                    <?=$categoria->setNome($nome)?>
                </option>
            <?php endforeach ?>
        </select>
    </td>
</tr>

Bancoproduto.php

<?php
include("conecta.php"); 
require_once("class/Produto.php");
require_once("class/Categoria.php");
function listaProdutos($conexao) {
    $produtos = array();
    $resultado = mysqli_query($conexao, "select p.*, c.nome as categoria_nome from produtos as p join categorias as c on p.categoria_id = c.id");
    while($produto_atual = mysqli_fetch_assoc($resultado)) {
        $produto = new Produto;
        $categoria= new Categoria;
        $categoria->setNome($produto_atual['categoria_nome']);
        $produto->setId($produto_atual['id']);
        $produto->setNome($produto_atual['nome']);
        $produto->setPreco($produto_atual['preco']);
        $produto->setDescricao($produto_atual['descricao']);
        $produto->setCategoria($categoria);

        array_push($produtos, $produto);
    }

    return $produtos;

}

    function insereProduto($conexao, Produto $produto) {
    $query = "insert into produtos (nome, preco, descricao, categoria_id) 
        values ('{$produto->setNome($nome)}', {$produto->setPreco($preco)}, '{$produto->setDescricao($descricao)}', {$produto->setCategoria($categoria)->setId($id)})"; 
    $resultadoDaInsercao = mysqli_query($conexao, $query);
}

function removeProduto($conexao,$id){

    $query= "delete from produtos where id={$id}";
    return mysqli_query($conexao,$query);

}

function buscaProduto($conexao,$id){
    $query ="select * from produtos where id={$id}";
    $resultado = mysqli_query($conexao,$query);
    return mysqli_fetch_assoc($resultado);

}

function alteraProduto($conexao,Produto $produto){

     $query = "update produtos set nome = '{$produto->setNome($nome)}', preco = {$produto->setPreco($preco)}, descricao = '{$produto->setDescricao($descricao)}', 
        categoria_id= {$produto->setCategoria_id($categoria)} where id = '{$produto->setId($id)}'";
    return mysqli_query($conexao, $query);


}
5 respostas

Olá Ivanaldo

Meu Produto-formulario-base.php ficou assim:

        <tr>
                <td>Nome:</td> 
                <td><input class="form-control" type="text" name="nome" value="<?=$produto['nome']?>" /></td>
            </tr>

            <tr>
                <td>Preço:</td> 
                <td><input class="form-control" type="number" name="preco" value="<?=$produto['preco']?>" /></td>
            </tr>
            <tr>
                <td>Descrição</td> 
                <td><textarea class="form-control" name="descricao"><?=$produto['descricao']?></textarea></td>
            </tr>
            <tr>
                <td></td>
                <td><input type="checkbox" name="usado" <?=$usado?> value="true"> Usado</input></td>
            </tr>
            <tr>
                <td>Categoria</td>
                <td>
                    <select name="categoria_id" class="form-control">    
                        <?php foreach ($categorias as $categoria) : 
                            $essaEhAcategoria = $produto->categoria->id == $categoria->id;
                            $selecao = $essaEhAcategoria ? "selected='selected'" : "";
                        ?>
                        <option value="<?=$categoria->id?>" <?=$selecao?>>  
                                <?=$categoria->nome?>
                        </option>
                        <?php endforeach ?>
                    </select>
                </td>
            </tr>

Creio que nessa parte (produto-lista.php) não é usado nenhum objeto de Produto.

No arquivo produto-lista.php sim é usado o objeto que a função listaProdutos() retorna.

Att,

Pois é , se eu deixar assim como você me mostrou sem utilizar o objeto o formulário não lista :/

Blz , Já consigo adicionar o produto .. só falta aparecer as categorias no menu.. e listar os produtos novos cadastrados no produto-lista.php

Blz , Já consigo adicionar o produto .. só falta aparecer as categorias no menu.. e listar os produtos novos cadastrados no produto-lista.php

Segue o Produto-lista.php <?php require_once("cabecalho.php"); ?> <?php require_once("banco-produto.php");?> <?php require_once("logica-usuario.php"); require_once("class/Produto.php"); require_once("class/Categoria.php"); verificaUsuario(); if(isset($_SESSION["success"])) { ?>

<?= $_SESSION["success"]?>

<?php unset($_SESSION["success"]); } ?>

<?php $produtos = listaProdutos($conexao); ?>

<?php if(array_key_exists("removido", $_GET) && $_GET['removido']=='true') { ?>

Produto apagado com sucesso.

<?php } ?>

<?php

foreach ($produtos as $produto) : ?>

<?= $produto->getNome() ?><?= $produto->getPreco() ?><?= $produto->valorComDesconto(0.1) ?><?= substr($produto->getDescricao(),0,40) ?><?= $produto->getCategoria()->getNome() ?>alterar

<?php endforeach ?>

<?php include("rodape.php"); ?>

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software