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

Não altera

Prezados,

A inclusão funciona mas quando tento alterar diz que não foi instanciado na linha if(alteraProduto($conexao, $produto)) {

Já tentei colocar Produto $produto e continua o erro.

Descrição exata do erro: Catchable fatal error: Argument 2 passed to alteraProduto() must be an instance of Produto, null given, called in C:\wamp\www\aula01\loja\altera-produto.php on line 20 and defined in C:\wamp\www\aula01\loja\banco-produto.php on line 27

banco-produto.php

function alteraProduto($conexao, Produto $produto) {

    $query = "update produtos set nome = '{$produto->nome}', 
        preco = {$produto->preco},
        descricao = '{$produto->descricao}', 
        categoria_id= {$produto->categoria_id}, 
        usado = {$produto->usado} where id = '{$produto->id}'";

    return mysqli_query($conexao, $query);
}

altera-produto.php

<?php
require_once("cabecalho.php");
require_once("banco-produto.php");
require_once("class/Produto.php");

$produto = new Produto();

$produto->id = $_POST['id'];
$produto->nome = $_POST['nome'];
$produto->preco = $_POST['preco'];
$produto->descricao = $_POST['descricao'];
$produto->categoria_id = $_POST['categoria_id'];

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

if(alteraProduto($conexao, $produto)) { 
?>
    <p class="text-success">O produto <?= $produto->nome ?>, <?= $produto->preco ?> foi alterado.</p>
<?php 
} else {
    $msg = mysqli_error($conexao);
?>
    <p class="text-danger">O produto <?= $produto->nome ?> não foi alterado: <?= $msg?></p>
<?php
}
?>

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

Salvou o arquivo

Pelo que eu vi falta tu passar a conexão cade ela ali onde ela está

solução!

Consegui! Foi burrice minha porque eu havia criado o projeto em um diretório e daí copiei para a pasta www do wamp. Quando fui corrigir alterei no diretório antigo haushuash

Desculpa aí e obrigado por responder.

só da como solucionado ai então valeu

Sim, muito obrigado!