Fatal error: Call to a member function getId () on string

1

I can not seem to find the error that is appearing in my product bank. Could someone help me find it? I thank you in advance.

 Fatal error: Call to a member function getId() on string in         C:\Bitnami\wampstack-5.6.19-0\apache2\htdocs\beladuquesa\sys\banco-produto.php on line 85

this is the function alterProduct:

    function alteraProduto($conexao, $produto) {


echo ("* inicio funcao alteraProduto * "); //Aviso de teste

81)$query = "update produtos set nome = '{$produto->getNome()}',
82)codigo = {$produto->getCodigo()},
83)preco = {$produto->getPreco()},
84)descricao = '{$produto->getDescricao()}',
85)categoria_id = {$produto->getCategoria()->getId()},
86)cor_id = {$produto->getCor()->getId()},
87)tamanho_id = {$produto->getTamanho()->getId()} where id = 88)'{$produto->getId()}'";**

return mysqli_query($this->conexao, $query);

echo ($query); //Aviso de teste
}

This is my test of what's coming from the alter-product:

* inicio alteração * * Envia para Banco Produto * array(8) { ["id"]=> string(1) "1" ["codigo"]=> string(2) "12" ["nome"]=> string(13) "Vestido Paula" ["preco"]=> string(6) "100.00" ["descricao"]=> string(20) "Vestido em Tricoline" ["cor_id"]=> string(2) "20" ["tamanho_id"]=> string(1) "5" ["categoria_id"]=> string(1) "2" } * inicio funcao alteraProduto *

This is the alter-product file:

    <?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();
echo ("* inicio alteração * "); //Aviso de teste
$produto->setId( $_POST['id'] );
$produto->setCodigo( $_POST["codigo"]) ;
$produto->setNome( $_POST["nome"]);
$produto->setPreco( $_POST["preco"]);
$produto->setDescricao( $_POST["descricao"]);
$produto->setCor(new Cor());
$produto->setCor( $_POST["cor_id"]);
$produto->setTamanho(new Tamanho());
$produto->setTamanho( $_POST["tamanho_id"]);
$produto->setCategoria(new Categoria());
$produto->setCategoria( $_POST["categoria_id"]);
echo ("* Envia para Banco Produto * "); //Aviso de teste
var_dump($_POST);
    
asked by anonymous 23.02.2017 / 01:55

1 answer

0

Your code is setting the category twice, one as an object and another as the content of $_POST["categoria_id"] .

Try changing your product alteration routine to look like this:

$produto->setCategoria(new Categoria());
$produto->getCategoria()->setId( $_POST["categoria_id"]);
echo ("* Envia para Banco Produto * "); //Aviso de teste

Note that you have this same problem with the Tamanho property. You create an object, and then you right-click the contents of $_POST["tamanho_id"] .

    
24.02.2017 / 13:07