Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lexxyz

Problemas com Include

Recommended Posts

Bom dia, estou com um problema relacionado aos includes. Sou marujo de primeira viagem como back-end, alguém pode ajudar a solucionar o meu problema? Obrigado.

_duvida.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

ExtremsX - Irmão, desculpe-me, mas, mais do que eu já desenhei? rsrs... Que alías é o meu forte, enfim. Sinceramente a minha ilustração é auto-explicativa, porém, resumindo, meus includes não carregam quando estão em uma segunda camada de atividade. Ou seja, a exemplo que forneci da minha ROOT, quando acesso a página que está em conteudos/conteudo-01.php, e acesso o link que está dentro dela, que direciona para materias/materia-01.php, e por final dentro da própria página materias-01.php, não está carregando as includes topo.php e rodape.php. Minha experiência com php é mímina, sou ilustrador e front-end, e agora estou me dedicando a aprender back-end na unha. Se você ou alguém conseguir me ajudar, fico eternamente agradecido. Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você diz que não está carregando, você quer dizer que está aparecendo um erro no PHP dizendo que o arquivo não foi encontrado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Thiago, esses dois includes não são iguais? não tem o mesmo efeito?

 

Sim teriam, mais eu já tive problemas, quando alterava de servidor,

 

Lexxyz

Desculpa agora que pare pra analisar direito esse seu diagrama,

 

O problema está que quando você clica no link da matéria...php

 

Quando clica no link da matéria você etá abrindo o arquivo em si correto?

 

Então o bom seria fazer um require, ou include dele na index.php, assim você carregaria o conteudo da materia dentro da index.php

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você diz que não está carregando, você quer dizer que está aparecendo um erro no PHP dizendo que o arquivo não foi encontrado?

 

Não aparece nenhum erro, a página carrega normal, porém ela sozinha, sem os includes.

 

 

 

 

só para encargo de duvidas altera o include "layout/rodape.php";

 

para :

 

include "./layout/rodape.php";

 

confirmando o Index.php, esta na raiz por exemplo e o diretório layout está nesse mesmo nível, ?

 

Abraço,

 

 

Não foram esses níveis. O index está no root e a página que eu quero abrir está dentro de materias.

 

 

 

 

 

Buenas tchê.

 

No materia-01.php mude para:

<?php include "../layout/topo.php"; ?>

 

Bah, tentei e foi, pois minha materia-01.php estava sem as os códigos HTML, tive que inclui-los, inclusive também, inclui essa linha no <head> => <link rel="stylesheet" href="../config/config.css" />. Porééééém, não carrega a imagem do logo que está em topo.php... então ficou assim:

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="../config/config.css" />
<?php include "../config/config.php"; ?>
<title>Matéria-01.php</title>
</head>
<body>
<?php include "../layout/topo.php"; ?>
<br />
<!-- ON: Conteúdo -->
<div id="div_conteudo">
blá, blá, blá...
</div>
<!-- OFF: Conteúdo -->
<br />
<?php include "../layout/rodape.php"; ?>
</body>
</html>

Agora duas perguntas... Por que eu tive que incluir a chamada para o CSS novamente, sendo que ela já está no config.php e como faço agora para carregar a imagem do logotipo que está no topo.php?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu ainda to boiando :'(

 

O problema com as imagens podem ser resolvidas facilmente se você colocar url completa até ela, por exemplo:

 

http://site.com/img/arquivo.png

 

Dessa forma você vai evitar dor de cabeça com esses arquivo, isso serve também para JS, CSS e Imagens e outros arquivos tambem

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu ainda to boiando :'(

 

O problema com as imagens podem ser resolvidas facilmente se você colocar url completa até ela, por exemplo:

 

http://site.com/img/arquivo.png

 

Dessa forma você vai evitar dor de cabeça com esses arquivo, isso serve também para JS, CSS e Imagens e outros arquivos tambem

 

Cara, coloquei o endereço completo e nada, ela não aparece. Mas agora surgiu outro problema... Como eu tive que incluir os códigos HTML na página materia-01.php, quando eu clico a exemplo no logo para voltar para o index.php, ele está entendendo como root/materias/index.php e dá um erro de objeto não encontrado... kkkkkkkkkkkkkkkkkkkk, essa bagaça está triste...

Poxa, acho que está tão simples de resolver... Podem olhar o meu diagrama novamente com detalhes e me ajudarem, por favor... snif snif ;( Eu desenhei tão certinho o problema...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Normalmente eu fazia assim (me desculpe mais ainda não entendi o esquema de requires do seu sistema):

pagina.php

<?php
$titulo = 'Matéria-01.php';
require 'header.php';
// todo codigo aqui
require 'footer.php'';


header.php

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link rel="stylesheet" href="http://site.com/config/config.css" />
        <title><?php echo $titulo; ?></title>
    </head>
    <body>

footer.php

    </body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Confesso que também fiquei meio boiando...

 

Ainda não entendi direito, mas, se não está funcionando e não exibe erros, tenha certeza de que os erros estão habilitados, seguindo as orientações deste tópico: http://forum.imasters.com.br/topic/375800-orientaes-para-uma-boa-participao/

 

Execute novamente e veja se aparece erro na tela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara. Veja bem.

Tu meio que "zoneou" tentando organizar demais os teus arquivos.

O problema que teus links apontam para os arquivos dentro de outros diretórios, então ao invés disso:

http://dominio.com/?materia=01

Você tem isso:

http://dominio.com/materias/materia-01.php

Assim, você passa a trabalhar no nível do diretório /materias. Uma vez dentro desse nível, você terá que referenciar os arquivos de um nível acima com um '../' nos includes.

No arquivo arquivo materia-01.php não há referência ao index.php, por isso é necessário incluir novamente o config.php.

 

Será q eu consegui ?? heheheh

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Normalmente eu fazia assim (me desculpe mais ainda não entendi o esquema de requires do seu sistema):

 

pagina.php

<?php
$titulo = 'Matéria-01.php';
require 'header.php';
// todo codigo aqui
require 'footer.php'';

 

header.php

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link rel="stylesheet" href="http://site.com/config/config.css" />
        <title><?php echo $titulo; ?></title>
    </head>
    <body>

footer.php

    </body>
</html>

 

ExtremsX, bom, cara, acho que vou ter que seguir mais ou menos essa linha de raciocínio, pois como o Marlon citou, foi exatamente o que eu fiz, tentei organizar demais e isso prejudicou todo o trabalho, acabei fazendo uma verdadeira "salada de frutas".

 

 

Lexxyz

 

Chegou a ver o segundo exemplo que dei, ?

 

Teria como disponibilizar seu atual código em algum lugar, pra eu fazer o que falei no exemplo e te mandar.

 

 

Thiago, acho que não vai ser preciso pois vou ter que refazer todo o trabalho, porque até mesmo eu me compliquei agora, então prefiro recomeçar.

 

 

 

Então cara. Veja bem.

Tu meio que "zoneou" tentando organizar demais os teus arquivos.

O problema que teus links apontam para os arquivos dentro de outros diretórios, então ao invés disso:

http://dominio.com/?materia=01

Você tem isso:

http://dominio.com/materias/materia-01.php

Assim, você passa a trabalhar no nível do diretório /materias. Uma vez dentro desse nível, você terá que referenciar os arquivos de um nível acima com um '../' nos includes.

No arquivo arquivo materia-01.php não há referência ao index.php, por isso é necessário incluir novamente o config.php.

 

Será q eu consegui ?? heheheh

 

E marlon, já tenho a referência do config.php, tudo bem, funcionou, mas a imagem do logotipo não aparece que está em topo.php

 

 

Bom galera, resumindo, acho que fiz uma salada ai tentando organizar meu arquivos. Alguém por gentileza pode me indicar uma estrutura organização e quais arquivos, e como chamá-los dentro de cada página com include ou require? Como eu entendo pouquíssima coisa de php ainda, achei que desse modo que eu estava fazendo era o caminho, eu achei que não importasse a quantidade de levels que fosse avançando, isso é ex: primeiro/segundo/tercero/arquivo.php, de alguma forma o root faria isso, mas acho que viajei um pouco. Grato até agora.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então.

Justamente por estar entrando em um nível acima da raiz, você teria que chamar o logotipo a partir desse nível.

Quando você faz um include em um arquivo, o conteúdo dele começa a fazer parte da página. Ele não é interpretado diretamente no diretório onde ele fica fisicamente.

Nesse caso, você teria que chamar o logotipo com um '../' também (ou mais).

 

Minha sugestão é fazer o include das matérias direto na index.

Você poderia passar o id da matéria como parâmetro.

<a href='./?tipo=conteudo&id=01>Link 1</a>
<a href='./?tipo=materia&id=01'>Link 1</a>

E fazer os includes direto na index.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma vez eu fiz um trabalho com ASP.NET e não importava os levels que fosse avançando, o layout continua o mesmo com apenas os 4 arquivos iniciais, talvez isso fosse uma classe, um método, que continha no principal, a exemplo a index e agregava para todas as outras, ou seja, deduzo eu que, como se fosse uma engine... Olha gente, mais uma vez digo que sou leigo pois mais entendo da lógica do que os códigos em sí, e pela lógica eu achei que estava certo, rs, vejo que não estou. Meu forte é o front-end, modelagem, sou ilustrador também, enfim, porém quero muito me aprofundar em PHP, back-end... Minhas experiências passadas não me deram a oportunidade para tal, porém, agora é a hora...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em frameworks PHP ele faz isso pra você, mas como você está usando a linguagem sem frameworks, essas dores de cabeças acontecem, isso em qualquer linguagem de programação para web.

 

faça assim:

 

Quando for incluir um CSS, JS ou IMG, coloque o link completo até o recurso. No CSS os recursos também devem possuir a URL completa até o recurso.

 

Quando for um arquivo PHP em um require, coloque o caminho completo até o arquivo, como:

require '/pasta/onde/o/arquivo/esta/arquivo.php';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra possibilidade é user o set_include_path(), incluindo os diretórios do seu projeto, no seu arquivo de inicialização (caso não tenha um, recomendo utilizar). Assim, basta dar include/require, sem se preocupar com o caminho exato do arquivo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.