<?php include("cabecalho.php");?> <?php include("conecta.php");?> <?php include "produto-banco.php"?>
<?php $produtos=ListaProdutos($conexao);?>
<?php foreach($produtos as $produto):?>
<?php include("cabecalho.php");?> <?php include("conecta.php");?> <?php include "produto-banco.php"?>
<?php $produtos=ListaProdutos($conexao);?>
<?php foreach($produtos as $produto):?>
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");?>
<?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.