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

Item sendo incluso no BD mesmo com o campo preço em branco

Boa tarde.

Estou realizando o exercício da aula 2, porém meus itens são inseridos no BD mesmo com o campo preço em branco, e o campo no BD sendo not null. Conferindo meu código, o mesmo se encontra igual ao do professor, porém minha validação não funciona. (No BD, quando o campo preço é enviado em branco, na tabela o valor 0.00 o preenche).

<?php include("header.php") ?>

    <?php 
        $nome = $_GET['nome']; 
        $preco = $_GET['preco'];
        $connection = mysqli_connect('localhost', 'root', '', 'loja'); //Abre a conexão com o BD.

        $query = "insert into produtos (nome, preco) values ('{$nome}', '{$preco}')"; //Passa a query que queremos inserindo na tabela onde queremos

        if(mysqli_query($connection, $query)) { //Manda executar a query 
        ?> 
            <p class="alert alert-success" role="alert">Produto <?= $nome ?>, custando R$ <?= $preco ?> adicionado.</p>
        <?php    } else { 
        ?>
            <p class="alert alert-danger" role="alert"> Produto <?= $nome ?>, não foi adicionado.</p>
        <?php
        }

        mysqli_close($connection); //Fecha a conexão - Teoricamente, o php ja fecha a conexão, não sendo preciso essa linha

    ?>

<?php include("footer.php") ?>

Obrigado.

2 respostas
solução!

Oi Jean,

Talvez na sua tabela a coluna preco esteja com a opção default=0, e com isso quando o preço não é enviado ele preenche automático a coluna com o valor 0.0

Outra coisa, no seu código nessa linha:

$query = "insert into produtos (nome, preco) values ('{$nome}', '{$preco}')";

O campo preço não deveria estar entre aspas, pois ele não é um campo de texto, mas sim numérico.

Altere para:

$query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";

O problema era exatamente as aspas no campo preço. Após retirar, o problema foi resolvido.

Muito obrigado.