Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Item não insere na tabela (LAMP)

Eu não consigo por nada nessa vida inserir os dados que eu coloco no formulário na tabela do mariadb. Pensei que fosse problema no código, mas conferi linha por linha e não parece ser, de qualquer forma, este é o meu código:

index.php
<?php require_once "cabecalho.php" ?>

<h1>Bem Vindo!</h1>

<?php require_once "rodape.php" ?>

////////////////////////

produto_formulario.php
<?php require_once "cabecalho.php" ?>

<h1>Formulário de Produto</h1>    

<form action="adiciona-produto.php">
    Nome:
    <input type="text" name="nome"><br/>

    Preço:
    <input type="number" name="preco"><br/><br/>

    <input type="submit" value="Cadastrar">
</form>

<?php require_once "rodape.php" ?>

////////////////////////

adiciona_produto.php
<?php 

$nome = $_GET["nome"];
$preco = $_GET["preco"];

$conexao = mysqli_connect('localhost', 'root', '15926535!Pi', 'lojadb');

require_once "cabecalho.php";

$query = "INSERT INTO produtos (nome, preco) values('{$nome}', {$preco})";

mysqli_query($conexao, $query);

mysqli_close($conexao);

?>

<form action="produto-formulario.php">

    <p class="alert-success"> Produto <?php echo $nome?>, <?php echo $preco?> adicionado com sucesso! </p>

    <button type="submit">Voltar</button>

</form>


<?php require_once "rodape.php" ?>

////////////////////////
cabecalho.php
<html>
<head>

    <meta charset="utf-8">
    <title>Minha Loja</title>
    <link rel="stylesheet" href="css/bootstrap.css">
    <link rel="stylesheet" href="css/loja.css
    ">

</head>

<body>
    <div class="container">

        <div class="principal">

////////////////////////
rodape.php

        </div>

    </div>
</body>


</html>

Também tentei ver se era a instalação do LAMP. Sim, eu uso Linux, Arch Linux para ser mais exata. Usei o método desse site aqui para configurar: https://www.linode.com/docs/web-servers/lamp/how-to-install-a-lamp-stack-on-arch-linux/. Instalei e revi linha por linha dos arquivos e ficou tudo certo. Iniciei o mysql.service o httpd.service, mas toda vez que vou checar no DBeaver (o único programa que roda tranquilamente aqui com MariaDB) a minha tabela, depois de adicionar algum item nela pelo php, o item nunca está lá. Um help, por favor :).

Ps:. Eu inicio o servidor do php para as aulas, usuando php -S localhost:3000.

1 resposta
solução

Talvez seja o preço. Faça a seguinte alteração:

$query = "INSERT INTO produtos (nome, preco) values('{$nome}', {$preco})";
echo ($query); //Teste!
mysqli_query($conexao, $query);

Esse ajuste vai imprimir o INSERT que você está tentando fazer.

Copie o INSERT e tente executar em seu banco de dados para ver qual o erro que vai dar.

Minha suspeita é o valor. Se você estiver colocando o preço com vírgula, vai dar problema. As casas decimais tem que ser informadas com ponto.