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

A tabela não foi estilizada!

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

<?php $produtos=ListaProdutos($conexao);?>

<?php foreach($produtos as $produto):?>

<?= $produto['nome']?><?= $produto['preco']?> <?php endforeach?><?php include("rodape.php");?>
19 respostas

Allan, talvez a inclusão do CSS não esteja correta. Posta teu arquivo cabecalho.php também (se estiver nele a referência ao arquivo .css).

Olá Allan, tudo bom?

Você poderia colocar seu código completo aqui no fórum?Por favor!

Estou aguardando

Allan, posta o código-fonte da aplicação.

Se a programação PHP está funcionando, ou seja, os produtos estão sendo impressos, mas o visual da tabela não foi aplicado, então o problema está no include do CSS (que pode estar faltando) ou no caminho do CSS que está tentando ser acessado. Outro problema poderia ser o arquivo CSS estar sendo chamado corretamente, mas a classe não estar sendo aplicada (o que não é o caso atual).

Para validar as duas primeiras situações é fácil, basta usar o console do navegador

No caso do chrome, aperte F12, depois clique na aba network(rede) e depois abra a página que está dando problema. Lá vai mostrar os arquivos que estão sendo baixados, então você vai conseguir ver se o arquivo CSS está sendo baixado ou não

insira seu código aqui
<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 href="index.php" class="navbar-brand">Minha Loja</a>
            </div>

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

    <div class="container">

    <div class="principal">

Aqui está meu código fonte do arquivo "cabecalho.php":

Não sei o que está acontecendo! Colo o código fonte e só aparece o resultado em html!

boa tarde Allan,

verifica si sua function ListaProdutos, esta correta.

<?php function listaProdutos($conexao) { $produtos = array(); $resultado = mysqli_query($conexao, "select p.*,c.nome as categoria_nome from produtos as p join categorias as c on c.id=p.categoria_id"); while($produto = mysqli_fetch_assoc($resultado)) { array_push($produtos, $produto); } return $produtos; }

?>

Está sim...O programa está td funcional, só a estilização que está falhando!

verifica si o cabecalho.php ta assim:

<?phperror_reporting(E_ALL ^ E_NOTICE); include("mostra-alerta.php");?>

verifica si o cabecalho.php ta assim: ''' <?phperror_reporting(E_ALL ^ E_NOTICE); include("mostra-alerta.php");?>

solução!
<?php  
error_reporting(E_ALL ^ E_NOTICE); 
include("mostra-alerta.php");?>
<html>
    <head>
        <title>Minha Loja</title>
        <meta charset="utf-8">
        <link rel="stylesheet" type="text/css" href="css/bootstrap.css">
        <link rel="stylesheet" type="text/css" href="css/loja.css">    
    </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="produto-lista.php">Produtos</a></li>
                    <li><a href="sobre.php">Sobre</a></li>                
                </ul>
            </div>
        </div>
    </div>
        <div class="container">
            <div class="principal">

Utilizei o código acima e funcionou. No entanto, precisei alterar os "hrefs" para "href="bootstrap.css"" e href="loja.css", respectivamente. Mas, apesar de ter funcionado, apareceram dois indesejaveis warnings:

1ª- Warning: include(mostra-alerta.php): failed to open stream: No such file or directory in C:\xampp\htdocs\Loja\cabecalho.php on line 3

2º- Warning: include(): Failed opening 'mostra-alerta.php' for inclusion (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\Loja\cabecalho.php on line 3

Por que será??

Allan a mensagem de erro refere-se ao seguinte trecho:

include("mostra-alerta.php");?>
`

Certifique-se de que o caminho e o nome do arquivo estão corretos.

Abraço

vou lhe passa o codigo todo:

adiciona-produto.php ``` <?php require_once("cabecalho.php"); require_once("banco-produto.php"); require_once("logica-usuario.php"); require_once("class/Produto.php"); require_once("class/Categoria.php");

verificaUsuario();

$categoria = new Categoria(); $categoria->setId($_POST['categoria_id']);

$produto = new Produto(); $produto->setNome($_POST['nome']); $produto->setPreco($_POST['preco']); $produto->setDescricao($_POST['descricao']);

if(array_key_exists('usado', $_POST)) { $produto->setUsado("true"); } else { $produto->setUsado("false"); }

$produto->setCategoria($categoria);

if(insereProduto($conexao, $produto)) { ?>

O produto <?= $produto->getNome() ?>, <?= $produto->getPreco() ?> foi adicionado.

<?php } else { $msg = mysqli_error($conexao); ?>

O produto <?= $produto->getNome() ?> não foi adicionado: <?= $msg?>

<?php } ?>

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

vou lhe passa o codigo todo:

adiciona-produto.php

<?php 
require_once("cabecalho.php");
require_once("banco-produto.php");
require_once("logica-usuario.php");
require_once("class/Produto.php");
require_once("class/Categoria.php");

verificaUsuario();

$categoria = new Categoria();
$categoria->setId($_POST['categoria_id']);

$produto = new Produto();
$produto->setNome($_POST['nome']);
$produto->setPreco($_POST['preco']);
$produto->setDescricao($_POST['descricao']);

if(array_key_exists('usado', $_POST)) {
    $produto->setUsado("true");
} else {
    $produto->setUsado("false");
}

$produto->setCategoria($categoria);

if(insereProduto($conexao, $produto)) { ?>
    <p class="text-success">O produto <?= $produto->getNome() ?>, <?= $produto->getPreco() ?> foi adicionado.</p>
<?php 
} else {
    $msg = mysqli_error($conexao);
?>
    <p class="text-danger">O produto <?= $produto->getNome() ?> não foi adicionado: <?= $msg?></p>
<?php
}
?>

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

altera-produto.php

<?php
require_once("cabecalho.php");
require_once("banco-produto.php");
require_once("class/Produto.php");
require_once("class/Categoria.php");

$categoria = new Categoria();
$categoria->setId($_POST['categoria_id']);

$produto = new Produto();
$produto->setId($_POST['id']);
$produto->setNome($_POST['nome']);
$produto->setPreco($_POST['preco']);
$produto->setDescricao($_POST['descricao']);

if(array_key_exists('usado', $_POST)) {
    $produto->setUsado("true");
} else {
    $produto->setUsado("false");
}

$produto->setCategoria($categoria);

if(alteraProduto($conexao, $produto)) { ?>
    <p class="text-success">O produto <?= $produto->getNome() ?>, <?= $produto->getPreco() ?> foi alterado.</p>
<?php 
} else {
    $msg = mysqli_error($conexao);
?>
    <p class="text-danger">O produto <?= $produto->getNome() ?> não foi alterado: <?= $msg?></p>
<?php
}
?>

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

banco-categoria.php

<?php
require_once("conecta.php");
require_once("class/Categoria.php");

function listaCategorias($conexao) {

    $categorias = array();
    $query = "select * from categorias";
    $resultado = mysqli_query($conexao, $query);

    while($categoria_array = mysqli_fetch_assoc($resultado)) {

        $categoria = new Categoria();
        $categoria->setId($categoria_array['id']);
        $categoria->setNome($categoria_array['nome']);

        array_push($categorias, $categoria);
    }

    return $categorias;
}

banco-produto.php

<?php
require_once("conecta.php");
require_once("class/Produto.php");
require_once("class/Categoria.php");

function listaProdutos($conexao) {

    $produtos = array();
    $resultado = mysqli_query($conexao, "select p.*,c.nome as categoria_nome 
        from produtos as p join categorias as c on c.id=p.categoria_id");

    while($produto_array = mysqli_fetch_assoc($resultado)) {

        $categoria = new Categoria();
        $categoria->setNome($produto_array['categoria_nome']);

        $produto = new Produto();
        $produto->setId($produto_array['id']);
        $produto->setNome($produto_array['nome']);
        $produto->setDescricao($produto_array['descricao']);
        $produto->setCategoria($categoria);
        $produto->setPreco($produto_array['preco']);
        $produto->setUsado($produto_array['usado']);

        array_push($produtos, $produto);
    }

    return $produtos;
}

function insereProduto($conexao, Produto $produto) {

    $query = "insert into produtos (nome, preco, descricao, categoria_id, usado) 
        values ('{$produto->getNome()}', {$produto->getPreco()}, 
            '{$produto->getDescricao()}', {$produto->getCategoria()->getId()}, 
                {$produto->isUsado()})";

    return mysqli_query($conexao, $query);
}

function alteraProduto($conexao, Produto $produto) {

    $query = "update produtos set nome = '{$produto->getNome()}', 
        preco = {$produto->getPreco()}, descricao = '{$produto->getDescricao()}', 
            categoria_id= {$produto->getCategoria()->getId()}, 
                usado = {$produto->isUsado()} where id = '{$produto->getId()}'";

    return mysqli_query($conexao, $query);
}

function buscaProduto($conexao, $id) {

    $query = "select * from produtos where id = {$id}";
    $resultado = mysqli_query($conexao, $query);
    $produto_buscado = mysqli_fetch_assoc($resultado);

    $categoria = new Categoria();
    $categoria->setId($produto_buscado['categoria_id']);

    $produto = new Produto();
    $produto->setId($produto_buscado['id']);
    $produto->setNome($produto_buscado['nome']);
    $produto->setDescricao($produto_buscado['descricao']);
    $produto->setCategoria($categoria);
    $produto->setPreco($produto_buscado['preco']);
    $produto->setUsado($produto_buscado['usado']);

    return $produto;
}

function removeProduto($conexao, $id) {

    $query = "delete from produtos where id = {$id}";

    return mysqli_query($conexao, $query);
}

banco-usuario.php

<?php
require_once("conecta.php");

function buscaUsuario($conexao, $email, $senha) {

    $senhaMd5 = md5($senha);
    $email = mysqli_real_escape_string($conexao, $email);
    $query = "select * from usuarios where email='{$email}' and senha='{$senhaMd5}'";
    $resultado = mysqli_query($conexao, $query);
    $usuario = mysqli_fetch_assoc($resultado);

    return $usuario;
}

cabecalho.php

<?php
error_reporting(E_ALL ^ E_NOTICE);
require_once("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-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="produto-lista.php">Produtos</a></li>
                    <li><a href="contato.php">Contato</a></li>
                </ul>
            </div>
        </div>
    </div>

    <div class="container">
        <div class="principal">
            <?php  mostraAlerta("success"); ?>
            <?php mostraAlerta("danger"); ?>

conecta.php

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

contato.php

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

<form action="envia-contato.php" method="post">
    <table class="table">
        <tr>
            <td>Nome</td>
            <td><input type="text" name="nome" class="form-control"></td>
        </tr>
        <tr>
            <td>Email</td>
            <td><input type="email" name="email" class="form-control"></td>
        </tr>
        <tr>
            <td>Mensagem</td>
            <td><textarea class="form-control" name="mensagem"></textarea></td>
        </tr>
        <tr>
            <td><button class="btn btn-primary">Enviar</button></td>
        </tr>
    </table>

</form>

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

envia-contato.php

<?php
session_start();
$nome = $_POST["nome"];
$email = $_POST["email"];
$mensagem = $_POST["mensagem"];

require_once("PHPMailerAutoload.php");

$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = "alura.php.e.mysql@gmail.com";
$mail->Password = "123456";

$mail->setFrom("alura.php.e.mysql@gmail.com", "Alura Curso PHP e MySQL");
$mail->addAddress("alura.php.e.mysql@gmail.com");
$mail->Subject = "Email de contato da loja";
$mail->msgHTML("<html>de: {$nome}<br/>email: {$email}<br/>mensagem: {$mensagem}</html>");
$mail->AltBody = "de: {$nome}\nemail:{$email}\nmensagem: {$mensagem}";

if($mail->send()) {
    $_SESSION["success"] = "Mensagem enviada com sucesso";
    header("Location: index.php");
} else {
    $_SESSION["danger"] = "Erro ao enviar mensagem " . $mail->ErrorInfo;
    header("Location: contato.php");
}
die();

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 include("rodape.php"); ?>

logica-usuario.php

<?php
session_start();

function usuarioEstaLogado() {
    return isset($_SESSION["usuario_logado"]);
}

function verificaUsuario() {
    if(!usuarioEstaLogado()) {
        $_SESSION["danger"] = "Você não tem acesso a esta funcionalidade.";
        header("Location: index.php");
        die();
    }
}

function usuarioLogado() {
    return $_SESSION["usuario_logado"];
}

function logaUsuario($email) {
    $_SESSION["usuario_logado"] = $email;
}

function logout() {
    session_destroy();
    session_start();
}

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álido.";
    header("Location: index.php");
} else {
    $_SESSION["success"] = "Usuário logado com sucesso.";
    logaUsuario($usuario["email"]);
    header("Location: index.php");
}
die();

logout.php

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

logout();
$_SESSION["success"] = "Deslogado com sucesso.";
header("Location: index.php");
die();

mostra-alerta.php

<?php
session_start();

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

produto-altera-formulario.php

<?php
require_once("cabecalho.php");
require_once("banco-categoria.php");
require_once("banco-produto.php");

$id = $_GET['id'];
$produto = buscaProduto($conexao, $id);
$categorias = listaCategorias($conexao);

$selecao_usado = $produto->isUsado() ? "checked='checked'" : "";
$produto->setUsado($selecao_usado);

?>

<h1>Alterando produto</h1>
<form action="altera-produto.php" method="post">
    <input type="hidden" name="id" value="<?=$produto->getId()?>">
    <table class="table">
        <?php include("produto-formulario-base.php"); ?>
        <tr>
            <td>
                <button class="btn btn-primary" type="submit">Alterar</button>
            </td>
        </tr>
    </table>
</form>

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

produto-altera-base.php

<tr>
    <td>Nome</td>
    <td>
        <input class="form-control" type="text" name="nome" 
            value="<?=$produto->getNome()?>">
    </td>
</tr>
<tr>
    <td>Preço</td>
    <td>
        <input class="form-control" type="number" step="0.01" name="preco" 
            value="<?=$produto->getPreco()?>">
    </td>
</tr>
<tr>
    <td>Descrição</td>
    <td>
        <textarea class="form-control" name="descricao"><?=$produto->getDescricao()?></textarea>
    </td>
</tr>
<tr>
    <td></td>
    <td><input type="checkbox" name="usado" <?=$produto->isUsado()?> value="true"> Usado
</tr>
<tr>
    <td>Categoria</td>
    <td>
        <select name="categoria_id" class="form-control">
            <?php
            foreach($categorias as $categoria) : 
                $essaEhACategoria = $produto->getCategoria()->getId() == $categoria->getId();
                $selecao = $essaEhACategoria ? "selected='selected'" : "";
            ?>
                <option value="<?=$categoria->getId()?>" <?=$selecao?>>
                    <?=$categoria->getNome()?>
                </option>
            <?php 
            endforeach
            ?>
        </select>
    </td>
</tr>

produto-formulario.php

<?php
require_once("cabecalho.php");
require_once("banco-categoria.php");
require_once("logica-usuario.php");
require_once("class/Produto.php");
require_once("class/Categoria.php");

verificaUsuario();

$categoria = new Categoria();
$categoria->setId(1);

$produto = new Produto();
$produto->setCategoria($categoria);

$categorias = listaCategorias($conexao);

?>    

<h1>Formulário de produto</h1>
<form action="adiciona-produto.php" method="post">
    <table class="table">

        <?php include("produto-formulario-base.php"); ?>

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

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

produto-lista.php

<?php
require_once("cabecalho.php");
require_once("banco-produto.php");
?>

<table class="table table-striped table-bordered">
    <?php
    $produtos = listaProdutos($conexao);
    foreach($produtos as $produto) :
    ?>
        <tr>
            <td><?= $produto->getNome() ?></td>
            <td><?= $produto->getPreco() ?></td>
            <td><?= $produto->precoComDesconto(0.1) ?></td>
            <td><?= substr($produto->getDescricao(), 0, 40) ?></td>
            <td><?= $produto->getCategoria()->getNome() ?></td>
            <td>
                <a class="btn btn-primary" 
                    href="produto-altera-formulario.php?id=<?=$produto->getId()?>">
                    alterar
                </a>
            </td>
            <td>
                <form action="remove-produto.php" method="post">
                    <input type="hidden" name="id" value="<?=$produto->getId()?>">
                    <button class="btn btn-danger">remover</button>
                </form>
            </td>
        </tr>
    <?php
    endforeach
    ?>    
</table>

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

remove-produto.php

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

$id = $_POST['id'];
removeProduto($conexao, $id);
$_SESSION["success"] = "Produto removido com sucesso.";
header("Location: produto-lista.php");
die();

?>

rodape.php

testeigualdade.php

<?php

require "class/Produto.php";

$produto = new Produto(); $produto->setPreco(59.9); $produto->setNome("Livro da Casa do Codigo");

$outroProduto = new Produto(); $outroProduto->setPreco(59.9); $outroProduto->setNome("Livro da Casa do Codigo");

$outroProduto = $produto;

if ($produto === $outroProduto) { echo "sao iguais"; } else { echo "sao diferentes"; }

?> ```

Olá,

Verifique se seus códigos php estão na raiz do projeto e seu "bootstrap.css" está dentro do diretório css. Se o problema é apenas na estilização das tabelas, provavelmente ou os arquivos estão em diretórios errados ou você não possui o arquivo bootstrap.css.

Fora isso, o código está correto. Caso queira mais ajuda, nos mostre como estão seus arquivos nos diretórios do projeto.