2
respostas

Aula 9 - formulário de alteração do produto

Boa tarde,

Quando NÃO coloco que o produto é usado da erro no SQL.

Segue o erro:

"Produto bicicleta não foi alterado: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 'where id = '26'' at line "

Segue o print da $qury:

update produtos set nome = 'bicicleta', preco = 12.00, descricao = '12.00', categoria_id = 3, usado = where id = '26'

Abraços

2 respostas

Oi Allan, tudo bem?

O problema esta aqui:

update produtos set nome = 'bicicleta', preco = 12.00, descricao = '12.00', categoria_id = 3, usado = // aqui estamos sem valor

isso significa que precisamos validar nosso parametro $usado em algum momento... Acredito que se você a fizer essa validação no seu alteraProduto.php seu problema vai deixar de existir. Algo como:

<?php include("cabecalho.php");         
 include("conecta.php");            
 include("banco-produto.php"); 

$nome = $_POST['nome'];
$preco = $_POST['preco'];
$descricao = $_POST['descricao'];
$categoria_id = $_POST['categoria_id'];
// aqui validamos se a chave usado ja existe em $_POST
if(array_key_exists('usado', $_POST)) {
    $usado = "true";
} else {
    $usado = "false";
}

Caso a chave usado exista em $_POST vamos definir $usado como true. Caso contrario, significa que não selecionaram o checkbox então definimos como false =)

seu alteraProduto.php deve ficar algo parecido com:

<?php include("cabecalho.php");         
 include("conecta.php");            
 include("banco-produto.php"); 

$nome = $_POST['nome'];
$preco = $_POST['preco'];
$descricao = $_POST['descricao'];
$categoria_id = $_POST['categoria_id'];
if(array_key_exists('usado', $_POST)) {
    $usado = "true";
} else {
    $usado = "false";
}

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

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

O código acima e algumas explicações mais aprofundadas, estão na transcrição do video:

https://cursos.alura.com.br/course/php-mysql-e-fundamentos-da-web/task/4091

Qualquer dificuldade, compartilha com a gente!

Abraço e bons estudos =)

Olá Allan boa tarde,

o erro acontece pois quando você não coloca que o produto é usado você deixa a coluna no update, tenta executar da seguinte forma:

update produtos set 
nome = 'bicicleta', 
preco = 12.00, 
descricao = '12.00', 
categoria_id = 3
where id = '26'

retirando o usado = do update