10
respostas

Botão não esta reconhecendo.

Boa noite , estava fazendo o exercício porem o Botão quando aperto não aparece nenhuma mensagem

produto - formulario

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

    <h1>Formulário de cadastro</h1>
    <form action="adiciona-produto.php">

        <table  class="table">
            <tr>
                <td>Nome</td>
                <td><input class="form-control" type="text" name="nome"></td>
            </tr>

            <tr>
                <td>Preço</td>
                <td><input class="form-control"  type="number" name="preco"><td>
            </tr>

            <tr>
                <td>
                    <button class="btn btn-primary" type="submit">Cadastrar</button>
                </td>
            </tr>
        </table>
    </form>

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

cabecalho

<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="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <a class="navbar-brand" href="index.php" class="navbar-brand">Minha Loja</a>
            </div>


                <div>
                    <ul class="nav navbar-nav">
                        <li><a herf="produto-formulario.php">Adicionar Produto</a></li>
                        <li><a href="sobre.php">Sobre</a></li>
                    </ul>
            </div>
        </div><!-- container acaba aqui -->
    </div>

    <div class="container">

    <div class="principal

adicionar-produto

<?php include("cabecalho.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 {
    ?>

<p class="text-danger">O produto <?= $nome; ?> não foi adicionado</p>
<?php
}
?>

<?php include("rodape.php"); ?>
10 respostas

Oi Jean, nessa linha do arquivo adiciona-produto.php:

if($insereProduto($conexao, $nome, $preco)) {

Você colocou o nome da função como variável, troque para:

if(insereProduto($conexao, $nome, $preco)) {

Boa tarde,

Cara fiz o que vc falou porem esta a mesma coisa.

Jean, pode ser o seguinte: você cria o formulário com action "adiciona-produto.php"

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

No entanto, mais abaixo, você exibe o código do arquivo "adicionar-produto.php". Não seria essa falta no "r"? Talvez o seu formulário não ta conseguindo encontrar esse arquivo.

Até.

A propósito, a observação do Alex Moreno procede. Você deve efetuar a chamada sem o "$".

Oi Jean, posta aqui como ficou o seu código depois da alteração

Então verifiquei esta tudo correto , segue o codigo

Cabeçalho

<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="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <a class="navbar-brand" href="index.php" class="navbar-brand">Minha Loja</a>
            </div>


                <div>
                    <ul class="nav navbar-nav">
                        <li><a herf="produto-formulario.php">Adicionar Produto</a></li>
                        <li><a href="sobre.php">Sobre</a></li>
                    </ul>
            </div>
        </div><!-- container acaba aqui -->
    </div>

    <div class="container">

    <div class="principal

Produto Formulario

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

    <h1>Formulário de cadastro</h1>
    <form action="adiciona-produto.php">

        <table  class="table">
            <tr>
                <td>Nome</td>
                <td><input class="form-control" type="text" name="nome"></td>
            </tr>

            <tr>
                <td>Preço</td>
                <td><input class="form-control"  type="number" name="preco"><td>
            </tr>

            <tr>
                <td>
                    <button class="btn btn-primary" type="submit">Cadastrar</button>
                </td>
            </tr>
        </table>
    </form>

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

Adiciona Produto

<?php include("cabecalho.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">O produto <?= $nome; ?> não foi adicionado<?= $msg ?></p>
<?php
}
?>

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

E não aparece nenhuma mensagem de erro? Utilize, na primeira linha do "adiciona-produto.php" o comando:

<?php 
// Habilita a exibição de todos os erros possíveis
error_reporting(E_ALL);
ini_set("display_errors", 1);

// essa linha vc já tem
include("cabecalho.php"); 
?>

Posta o resultado pra nós ai...

Outra coisa:

seu arquivo "cabecalho.php" ta com isso no final:

<div class="principal

Você postou errado, com conteúdo faltando, ou ele realmente ta finalizando assim?

Você também não postou o arquivo "rodape.php", pode ser que o erro esteja nele também. Existe esse arquivo no seu projeto?

Realmente Alex era o erro acima , porem agora apresenta outro erro já tentei fazer de tudo , conferi o codigo com a aula , porem esta apresentando um erro estanho , todo produto que adiciono mesmo com preço o mesmo informa que produto "Tal" não esta adicionado .

Cabeçalho:

<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="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <a class="navbar-brand" href="index.php" class="navbar-brand">Minha Loja</a>
            </div>


                <div>
                    <ul class="nav navbar-nav">
                        <li><a herf="produto-formulario.php">Adicionar Produto</a></li>
                        <li><a href="sobre.php">Sobre</a></li>
                    </ul>
            </div>
        </div><!-- container acaba aqui -->
    </div>

    <div class="container">

    <div class="principal">

Adicionar Produto:

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

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

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

?>
<?php
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"); ?>

produto-formulario:

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

    <h1>Formulário de cadastro</h1>
    <form action="adiciona-produto.php">

        <table  class="table">
            <tr>
                <td>Nome</td>
                <td><input class="form-control" type="text" name="nome"></td>
            </tr>

            <tr>
                <td>Preço</td>
                <td><input class="form-control"  type="number" name="preco"><td>
            </tr>

            <tr>
                <td>
                    <button class="btn btn-primary" type="submit">Cadastrar</button>
                </td>
            </tr>
        </table>
    </form>

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

Rodape

        </div>
    </div>
</body>
</html>

Para entender melhor o que está acontecendo, adicione as linhas, como indicado anteriormente:

<?php 
// Habilita a exibição de todos os erros possíveis
error_reporting(E_ALL);
ini_set("display_errors", 1);

// essa linha vc já tem
include("cabecalho.php"); 
?>

Pra saber se houve erro no momento da inserção no banco, adicione o seguinte na sua função "insereProduto":

<?php 

function insereProduto($conexao, $nome , $preco){
    $query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";
        $resultadoDaInsercao = mysqli_query($conexao, $query);
        // adicionando um controle de erro basicão
        if(!$resultadoDaInsercao){
            printf("Erro ao tentar inserir: %s\n", mysqli_error($conexao));
        }
        return $resultadoDaInsercao;
}
?>

Isso fará com que erros do PHP e da consulta ao banco sejam exibidos. Poste o resultado ai...