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

Informações perdida no formulário

Amigos, Preciso de ajuda 1) Ao clicar no botão alterar o browser apresenta o seguinte erro:

( ! ) Parse error: syntax error, unexpected end of file in C:\wamp64\www\loja\altera-produto.php on line 24

Este é o meu código da página "altera-produto.php"

<?php include("cabecalho.php");
 include("conecta.php");
 include("banco-produto.php");

$id = $_POST['id'];
$nome = $_POST['nome'];
$preco = $_POST['preco'];
$descricao = $_POST['descricao'];
$categoria_id = $_POST['categoria_id'];
if(array_key_exists('usado',$_POST)){
    $usado = "true";
} else {
    $usado = "false";
}

if(alteraProduto($conexao,$id,$nome,$preco,$descricao,$categoria_id,$usado)) {?>
    <p class="text-success">Produto <?= $nome?>, <?= $preco?> alterado com sucesso!</p>
<?php } else {
    $msg = mysqli_error($conexao);
?>
    <p class="text-danger">Produto <?= $nome?>, <?= $preco?> não alterado: <?= $msg?></p>
<?php}?>

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

2) Não está apresentando a mensagem de erro quando o usuário e a senha é inválida, segue o código:

<?php include("cabecalho.php");
include("conecta.php");
include("banco-produto.php");
include("logica-usuario.php");

verificaUsuario();

$nome = $_POST['nome'];
$preco = $_POST['preco'];
$descricao = $_POST['descricao'];
$categoria_id = $_POST['categoria_id'];
if(array_key_exists('usado',$_POST)){
    $usado = "true";
} else {
    $usado = "false";
}

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

<?php include("rodape.php") ?>
12 respostas

Olá Chadu,

provavelmente tá faltando um espaço no treço: <?php}?>

Desgruda um pouco ai.

Att,

O erro continua...

a linha 24 é a última

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

e ele realmente está colado.. você pode até tirar o ?> completamente do arquivo que não vai dar erro.

ah sim.. acho que o problema é mais pela falta do ; do que por estar colado.. bota o ; que vai.

Maravilha! Estou conseguindo alterar o produto....

Quanto a dúvida "2" ainda não está apresentando a mensagem quando o usuário ou senha é inválida!

Help me please!

Oi, chadu. Parece que vocẽ postou uma outra versão do código responsável por efetuar o login e o da página de login que você quer mostrar a mensagem?

Perdão. quis dizer que você postou uma segunda versão do código de cadastrar produto no lugar do de efetuar login.

Segue o código: login.php

<?php 
require_once("banco-usuario.php");
require_once("logica-usuario.php");

$usuario=buscaUsuario($conexao,$_POST["email"],$_POST["senha"]);
if($usuario == null){
    $_SESSION["danger"] = "Usuário ou senha inválida.";
    header("Location: index.php");
} else {
    $_SESSION["success"] = "Usuário logado com sucesso.";
    logaUsuario($usuario["email"]);
    header("Location: index.php");
}
die();

Esse parece ok. E o código da página que você exibe a mensagem?

index.php

<?php require_once("cabecalho.php");
require_once("logica-usuario.php");
?>

    <h1>Bem vindo!</h1>

    <?php if(usuarioEstaLogado()) {?>
        <p class="text-success">Você está logado como <?= usuarioLogado() ?>. <a href="logout.php">Deslogar</a></p>
    <?php } else {?>

    <h2>Login</h2>
    <form action="login.php" method="post">
    <table class="table">
        <tr>
            <td>Email</td>
            <td><input class="form-control" type="email" name="email"></td>
        </tr>
        <tr>
            <td>Senha</td>
            <td><input class="form-control" type="password" name="senha"></td>        
        </tr>
        <tr>
            <td><button class="btn btn-primary">Login</button></td>
        </tr>    
    </table>
    </form>
    <?php } ?>
<?php require_once("rodape.php"); ?>
solução!

Então, aí não tem nenhum comando para mostrar o alerta mesmo. Criei uma função mostra alerta (acho que no tutorial ele vai falar para fazer isso também, mas o importante é ter essa lógica em algum lugar), e coloquei no cabeçalho.: esse é o mostra-alerta.php:

<?php

function mostra_alerta($tipo) {
    if (isset($_SESSION[$tipo])) {
        ?><p class="alert-<?= $tipo ?>"><?= $_SESSION[$tipo] ?></p><?php
        unset($_SESSION[$tipo]);
    }
}

e nas útimas linhas do meu cabeçalho tem a chamada para essa função:

<!DOCTYPE HTML>
<?php
error_reporting(E_ALL ^ E_NOTICE);
include("logica-usuario.php");
include("mostra-alerta.php");
?>
<html>  
    <head>
        <meta charset="UTF-8">
        <title>Minha loja</title>          
        <link href="css/bootstrap.css" rel="stylesheet">
        <link href="css/loja.css" rel="stylesheet">
    </head>
    <body>
        <div class="navbar navbar-collapse active 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">
                        <?php
                        if (!verifica_login()) {
                            ?>
                            <li><a href="user-form.php">Cadastrar Usuário</a></li>
                            <?php
                        }

                        if (verifica_login()) {
                            ?>
                            <li> <a href="logout.php">Logout</a></li>
                            <li><a href = "insert-form.php">Adiciona produto</a></li>
                        <?php } ?>
                        <li><a href = "list.php">Lista de produtos</a></li>
                        <li><a href = "contato.php">Contato</a></li>
                    </ul>
                </div>
            </div>
        </div>
        <div class="container">
            <div class="principal"><?php
                mostra_alerta("danger");
                mostra_alerta("success");

e em todas as ações que podem dar algum problema adiciono uma mensagem de "danger" ou "sucess".

Perfect!!!