Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Duvida na aula 6

Ao fazer as alterações mandadas na aula para mim continua dando um erro ao adicionar

O produto nome; ?> não foi adicionado: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 'Livro para programadores',1, false)' at line 2

Segue abaixo todos os meu códigos:

class/produto.php

<?php

    class Produto {
        public $id;
        public $nome;
        private $preco;
        public $descricao;
        public $categoria ;
        public $usado;  

        function __construct($nome = "Produto indefinido", $preco = 99999 ,$descricao = "contate o admnistrador",Categoria $categoria, $usado = "true"){
            $this->nome = $nome;
            $this->setPreco($preco);
            $this->descricao = $descricao;
            $this->categoria = $categoria;
            $this->usado = $usado;            

        }
        function __toString() {
             return $this->nome.":".$this->preco."<br/>";
        }

        public function valorComDesconto($valor = 0.1) {
            if ($valor <= 0.5 && $valor > 0) {
                $this->setPreco($this->preco -= $this->preco * $valor);
            }
            return $this->preco;
        }

       public function getPreco() 
    {
        return $this->preco;
    }

    public function setPreco($preco) 
    {
        $this->preco = $preco;
    }

    }
?>

banco-produto.php

<?php
require_once("class/produto.php");
require_once("class/categoria.php");
require_once("conecta.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 c.id=p.categoria_id");

    while($produto_atual = mysqli_fetch_assoc($resultado)) {
        $categoria = new Categoria;
        $categoria->nome = $produto_atual['categoria_nome'];

        $produto = new Produto($produto_atual['nome'], $produto_atual['preco'],$produto_atual['descricao'],$categoria, $produto_atual['usado']);

        $produto->id = $produto_atual['id'];

        array_push($produtos, $produto);
    }

    return $produtos;

}

function insereProduto($conexao, Produto $produto) {
    $query = "insert into produtos (nome, preco, descricao, categoria_id, usado)
              values ('{$produto->nome}', {$produto->getPreco}, '{$produto->descricao}',{$produto->categoria->id}, {$produto->usado})";
    return mysqli_query($conexao, $query);
}

function alteraProduto($conexao, $id, $nome, $preco, $descricao, $categoria_id, $usado) {
    $query = "update produtos set nome = '{$nome}', preco = {$preco}, descricao = '{$descricao}', 
        categoria_id= {$categoria_id}, usado = {$usado} where id = '{$id}'";
    return mysqli_query($conexao, $query);
}

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

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

adiciona-produto.php

<?php 
require_once("class/produto.php");
require_once("class/categoria.php");
require_once("cabecalho.php");
require_once("banco-produto.php");
require_once("logica-usuario.php");
verificaUsuario();

$categoria = new Categoria;
$categoria->id = $_POST['categoria_id'];

if(array_key_exists('usado',$_POST)){
    $usado = "true";
} else {
    $usado = "false";
}

$produto = new Produto($_POST['nome'],$_POST['preco'],$_POST['descricao'],$categoria, $usado);
$produto->usado = $usado;

if(insereProduto($conexao, $produto)) { ?>
    <p class="alert-success">O produto <?= $produto->nome; ?>, <?= $produto->getPreco(); ?> adicionado com sucesso!</p>
<?php } else {
    $msg = mysqli_error($conexao);
?>
    <p class="alert-danger">O produto <? = $produto->nome; ?> não foi adicionado: <?=$msg?></p>
<?php
}
?>

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

Agradeço a ajuda!

2 respostas
solução!

Bom dia !

Pelo que percebi você inseriu aspas simples apenas nas variáveis, em seu insert : '{$produto->nome}' '{$produto->descricao}'

Insira aspas simples nas demais variáveis.

att

Obrigado ... ja solucionou minha duvida

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