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

Ao adicionar, recebo somente a mensagem de que não foi adicionado.

Verifiquei em todos os vídeos que acompanhei até o momento, mas nenhum me ajudou a detectar o erro. Ao adicionar o produto, me é exibida somente a mensagem de que o produto não foi adicionado, porém ao verificar a página produtos, ele está lá. Consigo remover e adicionar normalmente, consigo visualizar ele, mas não consigo consertar a mensagem errada que está sendo exibida. Alguem pode me ajudar?

8 respostas

Oi Aislan, tudo certo?

Você pode compartilhar seu arquivo adiciona-produto.php com a gente? Assim fica mais facil te ajudar a encontrar o problema =)

Se você quiser, também pode dar uma olhada nos arquivos prontos desse curso pra consultar. De repente é algo simples que a gente deixa passar =)

https://github.com/alura-cursos/php-mysql-e-fundamentos-da-web-parte-2/archive/master.zip

Nesse link você encontra os arquivos prontos desse curso, dentro da pasta loja

Aguardo retorno.

Abraço!

Olá André! Obrigado pela dica, vou dar uma olhada nos arquivos do curso. Não sabia que havia algum lugar com os arquivos! Tenho certeza que deve ser algo simples, mas eu conferi algumas vezes com o que foi exibido em vídeo com o instrutor e não achei erro. Talvez alguem de fora e com mais experiência ache. Te agradeço desde já.

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

$nome = $_POST['nome'];
$preco = $_POST['preco'];
$descricao = $_POST['descricao'];


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

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

Seu código não me parece ter nada de errado.

Aparentemente seu insereProduto não está retornando true. Mesmo inserindo o produto no banco.

Verifica se lá no seu insereProduto você está retornando o resultado da query. Algo como:

    return mysqli_query($conexao, $query);

É o mesmo conteúdo. nada diferente, no insere produto.

Estranho... verifica qual está sendo o retorno da sua query.

A menssagem de erro te diz algo além de que o produto não foi adicionado? Adiciona esse bloco de código e vê se não recebe uma menssagem melhor:

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

Oi Aislan, talvez seja interessante jogar o retorno do insereProduto em uma variável e verificar qual está sendo o valor que ela recebe ao inserir (dando um echo, ou var_dump), para depois verificar o porque dela não estar retornando true na inserção.

$insere = insereProduto($conexao, $nome, $preco, $descricao);
var_dump($insere);
die();

Recebi uma mensagem de erro ao inserir o conteúdo que você me passou, mas ela apontava para a variável $insere. Então preferi copiar e colocar aqui como está esse trecho meu código para que você dê uma olhada e me indique onde inserir o conteúdo para testar.

function insereProduto($conexao, $nome, $preco, $descricao, $categoria_id, $usado) {
    $query = "insert into produtos (nome, preco, descricao, categoria_id, usado) values ('{$nome}', {$preco}, '{$descricao}', {$categoria_id}, {$usado})";
    $return = mysqli_query($conexao, $query);
solução!

Antes que me corrijam, agradeço o empenho do Breno e do André em me ajudar a achar o erro. Acabo de realizar uma verificação com os arquivos que o André me indicou a baixar e localizei dois erros de sintaxe. Logo que corrigi, o problema não mais persistiu. Abaixo está meu erro e a correção. Agradeço novamente a tentativa de me auxiliar! (Y)

$return = mysqli_query($conexao, $query);
return mysqli_query($conexao, $query);