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

Não lê o valor das variáveis, e não envia para o banco de dados do sistema. Teria alguma coisa errada?

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

<body>
    <div class="container">


        <div class="principal">
<!-- Fim cabeçalho.php -->        
<?php
$nome = $_GET["nome"];
$preco = $_GET["preco"];

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

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

mysqli_close($conexao);
?>
<p class="alert-success">
    Produto <? $nome; ?>, <?= $preco; ?> adicionado com sucesso!
</p>
<!-- Início rodapé -->

    </div> <!-- Fim div principal -->
    </div> <!-- Fim div container -->
</body>
</html>
15 respostas

Olá, Pablo.

Não parece ter nada errado. Pra ter certeza se tudo está certo, na linha seguinte do da $query adicione a seguinte linha:

echo($query);

Pegue a saída desse echo no browser e tente executar o query no banco de dados. Depois me diz o que aconteceu?

Oi Pablo, tudo bom?

Verifica se sua url está com os parametros nome e preço:

http://localhost/loja/adiciona-produto.php?nome=geladeira&preco=800

Aguardo retorno!

Abraço =)

Marco, mesmo com o echo($query) ainda não cadastra os dados.

André, os parâmetros estão na URL. Essa é a URL que é apresentada: file:///C:/xampp/htdocs/loja/adiciona-produto1.php?nome=Carro+&preco=40000&Cadastrar=Enviar

Olá Paulo, quando você utiliza o echo query ele imprime na tela a forma como sua query está sendo montada, você poderia disponibilizar esse retorno?

Também se possível disponibiliza a página que está chamando a adiciona-produto1.php?

Com o echo query o que está sendo impresso é isso :

Produto , adicionado com sucesso!

Produto n�o foi adicionado:

É verdade estava chamando a página errada, obrigado.

O código ficou assim:

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

<body>
        <div class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
            <a class="navbar-brand" href="index.php">Minha Loja</a>
            </div>
            <div>
                <ul class="nav navbar-nav">
                    <li><a href="produto-formulario.php">Adiciona Produto</a></li>
                    <li><a href="sobre.php">Sobre</a></li>
                </ul>
            </div>
        </div>
    </div>

    <div class="container">


        <div class="principal">
<!-- Fim cabeçalho.php -->    


<?php
function insereProduto($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(insereProduto($conexao, $nome, $preco)){ ?>
    <p class="text-success">Produto <? $nome; ?>, <?= $preco; ?> adicionado com sucesso!</p>
<?php } else {
    $msg = mysqli_error($conexao);
    ?>
    <p class="text-danger">Produto <? $nome; ?> não foi adicionado:<?= $msg ?></p>
<?php 
}
?>

<!-- Início rodapé -->

    </div> <!-- Fim div principal -->
    </div> <!-- Fim div container -->
</body>
</html>

Então Pablo, edita assim, na função insere no meio do código da sua função inserir um echo query, que irá exibir na tela como a query está sendo montada:

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

    echo $query; // Esse echo query irá imprimir a query que você está montando

    return mysqli_query($conexao, $query);
}

Assim você poderá ver como a query será executada, pega esse retorno o coloca aqui.

e também gostaria de ver o código da tela que tem o formulário que chama a adiciona-produto

Esse é o código da tela que chama a adiciona-produto

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

<body>
        <div class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
            <a class="navbar-brand" href="index.php">Minha Loja</a>
            </div>
            <div>
                <ul class="nav navbar-nav">
                    <li><a href="produto-formulario.php">Adiciona Produto</a></li>
                    <li><a href="sobre.php">Sobre</a></li>
                </ul>
            </div>
        </div>
    </div>

    <div class="container">


        <div class="principal">
<!-- Fim cabeçalho.php -->    
<?php include 'cabecalho.php';?>    

    <h1>Formulario de cadastro</h1>
     <form action="adiciona-produto.php">
        <table class="table">
            <tr>        
                <td>Nome:</td>
                <td> <input class="form-control" type="text" name="nome"/><br/></td>
            </tr>
            <tr>
                <td>Preço:</td> 
                <td><input class="form-control" type="number" name="preco"><br/></td>
            </tr>
            <tr>
                <td><button class="btn btn-primary" type="submit">Cadastrar</button></td>
            </tr>    

        </table>
    </form>
<?php include 'rodape.php';?>
<!-- Início rodapé -->

</div> <!-- Fim div principal -->
</div> <!-- Fim div container -->
</body>
</html>

Oi Pablo, só uma pergunta, seus arquivos, os que você postou aqui, tanto o formulário quanto o adiciona-produto.php estão com o código dessa forma?

O que quero dizer é, o código que você postou aqui é exatamente o arquivo que você tem salvo?

Sim, apenas copiei e colei

Então, você já importou o cabeçalho nessa linha <?php include 'cabecalho.php';?>, então, se o arquivo cabecalho.php estiver com tudo o que o cabeçalho deve ter, o código está sendo duplicado, para você entender melhor o que eu estou falando, roda a sua pagina de formulário mesmo, e sem preencher nada pede para exibir o código fonte, você vai ver que o código está ficando duplicado.

Limpa o código que está acima do include do cabeçalho e o que está abaixo o include do rodapé.

formulario:

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

    <h1>Formulario de cadastro</h1>
     <form action="adiciona-produto.php">
        <table class="table">
            <tr>        
                <td>Nome:</td>
                <td> <input class="form-control" type="text" name="nome"/><br/></td>
            </tr>
            <tr>
                <td>Preço:</td> 
                <td><input class="form-control" type="number" name="preco"><br/></td>
            </tr>
            <tr>
                <td><button class="btn btn-primary" type="submit">Cadastrar</button></td>
            </tr>    

        </table>
    </form>
<?php include 'rodape.php';?>

E depois na outra página, modifica o trecho que eu te falei, inserindo o echo

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

    echo $query; // Esse echo query irá imprimir a query que você está montando

    return mysqli_query($conexao, $query);
}

Com esse echo o seu insert irá ser aprensentado no navegador, copia ele e roda no seu mysql para ver se executa ou se aparece algum erro.

Boa Noite Joel, ainda continua apresentando o mesmo erro, no qual está imprimindo os dois textos ao mesmo tempo e não lê as variáveis que são digitadas no formulário.

Código do Formulário

    <h1>Formulario de cadastro</h1>
     <form action="adiciona-produto.php">
        <table class="table">
            <tr>        
                <td>Nome:</td>
                <td> <input class="form-control" type="text" name="nome"/><br/></td>
            </tr>
            <tr>
                <td>Preço:</td> 
                <td><input class="form-control" type="number" name="preco"><br/></td>
            </tr>
            <tr>
                <td><button class="btn btn-primary" type="submit">Cadastrar</button></td>
            </tr>    

        </table>
    </form>

Código do adiciona-produto.php

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

    echo $query; // Esse echo query irá imprimir a query que você está montando

    return mysqli_query($conexao, $query);
}

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

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

Oi Pablo o echo não vai resolver o problema mas irá imprimir a query que está sendo executada, aí você pode pegar essa query e rodar para ver se ela tem um erro ou não.

Qualquer dúvida coloca a query aqui

solução!

Joel, eu consegui encontrar o problema, era apenas a IDE que eu estava usando (ECLIPSE), pois quando passei para o NETBEANS, o código excutou sem problema algum.

Obrigado pela ajuda!!!!!!!

O seu código não aparentava ter problemas mesmo, mas estranho o eclipse não estar funcionando e no NetBeans estar, bom de qualquer forma você pode continuar agora, mas vale depois ver se há uma configuração faltando no eclipse.

Bons estudos!

Sim, vou verificar depois se tem alguma configuração faltando no eclipse. Obrigado pela ajuda mais uma vez!!