4
respostas

Conjunto de Erros ao Inserir dados vazios

Estava escrevendo acompanhando o código do professor nas aulas, e o código final dele é o seguinte:

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

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

$conexao = mysqli_connect('localhost', 'root', '', 'loja');

if(insere($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"); ?>

Porém, desta maneira, estava sendo adicionado dados vazios ao banco. Dando uma olhada no fórum, vi que uma solução seria alterar a função para:

function insere ($conexao,$nome, $preco)
 {
    if($nome != '' && $preco > 0)
    {    
        $query = "insert into produtos (nome, preco) values ('{$nome}','{$preco}')";//comando usado para a inserção no banco
        return mysqli_query($conexao,$query);
    }
    else
    {
        return false;
    }
}

Porém, desta forma, a mensagem de erro $msg não é exibida, o que é estranho, pois tudo funciona muito bem no vídeo

4 respostas
function insere ($conexao,$nome, $preco)
 {
    if($nome != '' && $preco > 0)
    {    
        $query = "insert into produtos (nome, preco) values ('{$nome}','{$preco}')";//comando usado para a inserção no banco
        return mysqli_query($conexao,$query);
    }
    else
    {
        return false;
    }
}

Onde a $msg está sendo chamada aqui?

No caso ela está sendo chamada quando a funcao entra em else

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

Cria um

<p><%=$msg> </p>

Ou antes de tudo teste com um :

echo($msg);

Nada ainda, nenhuma mensagem é exibida