Boa tarde; Tinha fechado um problema anteriormente, achado que tinha resolvido mas me enganei. Ao fazer outros testes o problema persiste. Ao criar um novo produto, na hora de cadastrar eu deixei uma mensagem que o produto foi cadastrado corretamente.
O Sr(a). Mariana comprou o produto Polo 1.6 2011, no valor de R$ 18000. Produto adicionado com sucesso!
Mas quando vou na lista produto, o campo produto não aparece corretamente... Fica em branco. O produto Polo 1.6 2011 é o nome do produto (imprimir para ver se mostra o produto). No meu produtoFactory.php onde cria um novo produto está correto, mas não passa para a lista.
<?php
class ProdutoFactory {
private $classes = array("OutrosProdutos", "Ebook", "LivroFisico");
public function criaPor($tipoProduto, $params) {
$produtoNome = $params['produto'];
$preco = $params['preco'];
$descricao = $params['descricao'];
$categoria = new Categoria();
$usado = $params['usado'];
if (in_array($tipoProduto, $this->classes)) {
return new $tipoProduto($produtoNome, $preco, $descricao, $categoria, $usado);
} else {
return new OutrosProdutos($produtoNome, $preco, $descricao, $categoria, $usado);
}
}
}
?>
Meu adicionaproduto.php me mostra essa mensagem
/* criação do autoload - carregamento automatico no cabecalho.php - não é mais necessário carrecar as classes aqui.
require_once("class/Produto.php");
require_once("class/Categoria.php");
*/
verificaUsuario();
$nome = $_POST['nome'];
$produtonome = $_POST['produto'];
$tipoProduto = $_POST['tipoProduto'];
$categoria_id = $_POST["categoria_id"];
//instanciar o produtoFactory()
$factory = new ProdutoFactory();
$produto = $factory->criaPor($tipoProduto, $_POST);
$produto->atualizaBaseadoEm($_POST);
$produto->getCategoria()->setId($categoria_id);
if(array_key_exists('usado', $_POST)){
$produto->setUsado("true");
} else{
$produto->setUsado("false");
}
//instanciar o produtoDao
$produtoDao = new produtoDao($conexao);
if ($produtoDao->insereProduto($produto)){
?>
<p class = "text-success"> O Sr(a). <?=$nome; ?> comprou o produto <?= $produto->getProduto() ?>, no valor de R$ <?= $produto->getPreco() ?>. Produto adicionado com sucesso!
<li><a class="btn btn-primary" href="produto-formulario.php">OK</a></li>
<?php
} else {
$msg = mysqli_error($conexao);
?>
<p class = "text-danger"> Erro ao inserir o produto <?= $produto->getProduto() ?>, no valor de R$ <?= $produto->getPreco() ?>. Erro inserção nos campos: <?= $msg ?>
<?php
}
mysqli_close($conexao);
?>
<?php require_once ("rodape.php"); ?>
Conferi o ProdutoDao.php se estava faltando alguma coisa, mas o produto não é mostrado. Notei que quando mudo o $produtoNome = $params['produto']; passo para $produtoNome = $params['nome']; aparece minha lista, porem com os produtos novos com o nome do comprador, que não é correto. Poderia me ajudar; Estou passando meu Github: https://github.com/flavio-magela/PHP-O.Objeto