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

Dúvida no Ex. 5 da Aula 3 - Criando Funções no PHP

<?php include 'cabecalho.php'; ?>
<?php

$nome = $_GET["nome"];
$preco = $_GET["preco"];
$conexao = mysqli_connect('localhost', 'root', '', 'loja');

function insereProduto($conexao, $nome, $preco) {
    $query = "insert into produtos (nome, preco) values ('{$nome}', '{$preco}')";
    return mysqli_query($conexao, $query);
}

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

Consigo inserir produtos sem colocar nome e preço. Mesmo no banco de dados estando como not null. O que esta acontecendo?

2 respostas
solução!

Gabriel, quando você envia os dados via web, os campos que estão em branco não são enviados como null, mas como string vazia. É por isso que ele está aceitando gravar os campos em branco. Para resolver, você precisará fazer uma teste em seu código verificando se os campos estão em branco.

Improvisado. Mas foi:

function insereProduto($conexao, $nome, $preco) { if($nome != empty('') && $preco != empty('')) { $query = "insert into produtos (nome, preco) values ('{$nome}', '{$preco}')"; $resultadoDaInsercao = mysqli_query($conexao, $query); return $resultadoDaInsercao; } }