Lexxyz 1 Denunciar post Postado Novembro 5, 2014 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. Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 5, 2014 Você poderia dar um exemplo com trechos de código? por que eu ainda não entendi muito bem o problema. Compartilhar este post Link para o post Compartilhar em outros sites
Lexxyz 1 Denunciar post Postado Novembro 5, 2014 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
ExtremsX 58 Denunciar post Postado Novembro 5, 2014 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 - Bulfaitelo 6 Denunciar post Postado Novembro 5, 2014 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, Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 5, 2014 Thiago, esses dois includes não são iguais? não tem o mesmo efeito? Compartilhar este post Link para o post Compartilhar em outros sites
Marlon Pacheco 132 Denunciar post Postado Novembro 5, 2014 Buenas tchê. No materia-01.php mude para: <?php include "../layout/topo.php"; ?> Compartilhar este post Link para o post Compartilhar em outros sites
Thiago - Bulfaitelo 6 Denunciar post Postado Novembro 5, 2014 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, LexxyzDesculpa 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
Lexxyz 1 Denunciar post Postado Novembro 5, 2014 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"> <html xmlns="http://www.w3.org/1999/xhtml"> <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
ExtremsX 58 Denunciar post Postado Novembro 5, 2014 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
Lexxyz 1 Denunciar post Postado Novembro 5, 2014 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
ExtremsX 58 Denunciar post Postado Novembro 5, 2014 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
Thiago - Bulfaitelo 6 Denunciar post Postado Novembro 5, 2014 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. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 5, 2014 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
Marlon Pacheco 132 Denunciar post Postado Novembro 5, 2014 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
Lexxyz 1 Denunciar post Postado Novembro 5, 2014 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
Marlon Pacheco 132 Denunciar post Postado Novembro 5, 2014 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
Lexxyz 1 Denunciar post Postado Novembro 5, 2014 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
ExtremsX 58 Denunciar post Postado Novembro 5, 2014 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
Beraldo 864 Denunciar post Postado Novembro 5, 2014 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