Ir para conteúdo

POWERED BY:

Arquivado

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

vdepizzol

Include que não puxa as variáveis...

Recommended Posts

Olá,

 

Estou atualizando o template do meu site e me deparei com o seguinte erro: quando eu incluo, na página INDEX.PHP o arquivo MENU-INFERIOR.PHP, ocorrem vários erros de variáveis que não existem. No entanto, essas variáveis existem, mas no INDEX. Como faço para que o MENU-INFERIOR leia as variáveis do INDEX?

 

O código necessário está aí:

 

INDEX.PHP

PHP [/tr][tr]$versao_para_impressao = 1; // 1 (um) para SIM e 0 (zero) para NÃO //

$comente_esta_pagina = 1;

$recomende = 1;

$adicionar_aos_favoritos = 1;

$contribua_com_informacoes = 0;

$relate_um_erro = 0;

 

include("menu-inferior.php");

[/tr]

 

MENU-INFERIOR.PHP

PHP [/tr][tr] if($versao_para_impressao == 1 || $comente_esta_pagina == 1 || $recomende == 1 || $adicionar_aos_favoritos == 1 || $contribua_com_informacoes == 1 || $relate_um_erro == 1) {

echo '......';

}

[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

uhnn, estranho, tipo assim:

 

Se na index.php, você colocar, definir:

 

PHP [/tr][tr]<?php

$valor1 = 1;

$valor2 = 1;

$valor3 = 4;

....

include "pagina.php";

[/tr]

 

Em Pagina.php:

PHP [/tr][tr]<?php

echo $valor1;

echo $valor2;

echo $valor3;

[/tr]

 

 

Ele irá exibir normalmente os dados...

Compartilhar este post


Link para o post
Compartilhar em outros sites

foi exatamente o que eu fiz, mas olha a única coisa que aparece (também achei muito extranho!):

Notice: Undefined variable: versao_para_impressao in c:\program files\easyphp1-7\www\templates\menu-inferior.php on line 5

 

Notice: Undefined variable: comente_esta_pagina in c:\program files\easyphp1-7\www\templates\menu-inferior.php on line 5

 

Notice: Undefined variable: recomende in c:\program files\easyphp1-7\www\templates\menu-inferior.php on line 5

 

Notice: Undefined variable: adicionar_aos_favoritos in c:\program files\easyphp1-7\www\templates\menu-inferior.php on line 5

 

Notice: Undefined variable: contribua_com_informacoes in c:\program files\easyphp1-7\www\templates\menu-inferior.php on line 5

 

Notice: Undefined variable: relate_um_erro in c:\program files\easyphp1-7\www\templates\menu-inferior.php on line 5

 

Notice: Undefined variable: versao_para_impressao in c:\program files\easyphp1-7\www\templates\menu-inferior.php on line 12

 

Notice: Undefined variable: comente_esta_pagina in c:\program files\easyphp1-7\www\templates\menu-inferior.php on line 14

 

Notice: Undefined variable: recomende in c:\program files\easyphp1-7\www\templates\menu-inferior.php on line 17

 

Notice: Undefined variable: adicionar_aos_favoritos in c:\program files\easyphp1-7\www\templates\menu-inferior.php on line 20

 

Notice: Undefined variable: contribua_com_informacoes in c:\program files\easyphp1-7\www\templates\menu-inferior.php on line 23

 

Notice: Undefined variable: relate_um_erro in c:\program files\easyphp1-7\www\templates\menu-inferior.php on line 26

 

Notice: Undefined variable: versao_para_impressao in c:\program files\easyphp1-7\www\templates\menu-inferior.php on line 30

 

Notice: Undefined variable: comente_esta_pagina in c:\program files\easyphp1-7\www\templates\menu-inferior.php on line 30

 

Notice: Undefined variable: recomende in c:\program files\easyphp1-7\www\templates\menu-inferior.php on line 30

 

Notice: Undefined variable: adicionar_aos_favoritos in c:\program files\easyphp1-7\www\templates\menu-inferior.php on line 30

 

Notice: Undefined variable: contribua_com_informacoes in c:\program files\easyphp1-7\www\templates\menu-inferior.php on line 30

 

Notice: Undefined variable: relate_um_erro in c:\program files\easyphp1-7\www\templates\menu-inferior.php on line 30

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será que tem alguma coisa a ver com o modo em que eu fiz o include? Olha como eu coloquei (o que não dá problema em nenhum dos outros seis includes): PHP [/tr][tr]<? include("http://".$_SERVER['HTTP_HOST']."/Templates/menu-inferior.php"); ?>[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

uhn, tenta dar um include, normal:

PHP [/tr][tr]pasta/arquivo.php[/tr]

 

Mas sei Ñ, ta estranho!!! :huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu for usar assim, dá errado, já que o link tem que estar a partir do site e não a partir do documento, uma vez que este seja usado para um template.Tem como incluir no php a partir do site? tipo <a href="/Templates/logo.gif"> ao invés de <a href"../Templates/logo.gif">? Se tiver como, o problema estará solucionado, já que funcionou se eu colocar o include normal como você falou...

Compartilhar este post


Link para o post
Compartilhar em outros sites

é, dei uma olhada aqui e do jeito q você está incluindo ñ vai funcionar msm, só incluindo da forma q eu mencionei:

PHP [/tr][tr]include "pasta/arquivo.php";[/tr]

 

Isso se aplica mto bem ao seu caso, só fazer assim, ñ precisa fazer da maneira a qual está sendo feita por você.

 

br.php.net/include:

Se "URL fopen wrappers" estão ativas no PHP (normalmente na configuração default), você pode especificar um arquivo utilizando uma URL (via HTTP ou qualquer outro wrapper suportado --- veja Apêndice L para uma lista dos protocolos) em vez de uma caminho local. Se o servidor apontado interpreta o arquivo informado como código PHP, variáveis podem ser passadas ao arquivo incluído na URL de requisição como num HTTP GET. Isto não é necessariamente a mesma coisa que incluir o arquivo e compartilhar o escopo de variável do arquivo principal: o script será executado no servidor remoto e apenas seu resultado será incluído no script local.
Dá uma lida em:

http://br.php.net/include/

q fala mta coisa sobre isso.

 

Flwwwwww

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao é problema de include, uma vez que o codigo esta organizado da seguinte forma:+ index.php +--- menu-inferior.phpe ele esta lendo os erros do menu-inferior.phplogo esta funcionando normalmente a fusao.dentro desse menu-inferior.php, tem como ele esta feito? em funcoes? se estiver é necessário colocarglobal (...) + variaveis externas da funcao para tornal locais...se nao for esse o caso, o jeito eh você postar o codigo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

+ index.php

+--- menu-inferior.php

 

e ele esta lendo os erros do menu-inferior.php

 

logo esta funcionando normalmente a fusao.

Se a pg q estiver sendo incluida, ñ importa onde esteja, estiver com erros, ñ recebendo os dados, por exemplo, irá resultar no erro em questão (Undefined variable), de qualquer modo, ou seja, isso Ñ tem nda a ver...

 

incluindo, http, se ñ mexer no php.ini, ele Ñ irá receber os dados...

 

Mas é claro, q se na pg incluida houver, class, function, enfim, tem q declarar, tbm...

 

Flwwwwwwww

Compartilhar este post


Link para o post
Compartilhar em outros sites

INDEX.PHP

PHP [/tr][tr]<? include ("http://".$_SERVER['HTTP_HOST']."/Templates/header.php"); ?>

 

 

<html>

<head>

<!-- TemplateBeginEditable name="doctitle" -->

<title>Ibiracu.com</title>

<!-- TemplateEndEditable --> <!-- TemplateInfo codeOutsideHTMLIsLocked="true" -->

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<!-- TemplateBeginEditable name="head" -->

<?

 

// VARIÁVEIS PRÉ-DEFINIDAS

$versao_para_impressao = 1; // 1 (um) para SIM e 0 (zero) para NÃO //

$comente_esta_pagina = 1;

$recomende = 1;

$adicionar_aos_favoritos = 1;

$contribua_com_informacoes = 0;

$relate_um_erro = 0;

 

?>

<!-- TemplateEndEditable -->

 

<link href="/Templates/estilo.css" rel="stylesheet" type="text/css">

</head>

 

<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<? include("http://".$_SERVER['HTTP_HOST']."/Templates/cabecalho.php"); ?>

<? include("http://".$_SERVER['HTTP_HOST']."/Templates/linha.php"); ?>

<MTO CÓDIGO HTML...>

<? include("http://".$_SERVER['HTTP_HOST']."/Templates/menu-inferior.php"); ?>

<? include("http://".$_SERVER['HTTP_HOST']."/Templates/linha.php"); ?>

<? include("http://".$_SERVER['HTTP_HOST']."/Templates/rodape.php"); ?>

 

</body>

</html>

[/tr]

 

MENU-INFERIOR.PHP

PHP [/tr][tr] <?

if($versao_para_impressao == 1 || $comente_esta_pagina == 1 || $recomende == 1 || $adicionar_aos_favoritos == 1 || $contribua_com_informacoes == 1 || $relate_um_erro == 1) {

echo '<table width="100%" border="0" cellpadding="5" cellspacing="0">';

echo '<tr bgcolor="F4F4F4">';

echo '<td colspan="2" class="corpo">';

}

 

 

if($versao_para_impressao == 1) {

echo '<a href="#"> Página para impressão</a>'; }

if($comente_esta_pagina == 1) {

if($versao_para_impressao == 1) { echo ' | '; }

echo '<a href="#">Comente esta página</a>'; }

if($recomende == 1) {

if($versao_para_impressao == 1 || $comente_esta_pagina == 1) { echo ' | '; }

echo '<a href="#">Recomende a um amigo</a>'; }

if($adicionar_aos_favoritos == 1) {

if($versao_para_impressao == 1 || $comente_esta_pagina == 1 || $recomende == 1) { echo ' | '; }

echo '<a href="#">Adicionar aos favoritos</a>'; }

if($contribua_com_informacoes == 1) {

if($versao_para_impressao == 1 || $comente_esta_pagina == 1 || $recomende == 1 || $adicionar_aos_favoritos == 1) { echo ' | '; }

echo '<a href="#">Contribua com informações</a>'; }

if($relate_um_erro == 1) {

if($versao_para_impressao == 1 || $comente_esta_pagina == 1 || $recomende == 1 || $adicionar_aos_favoritos == 1 || $contribua_com_informacoes == 1) { echo ' | '; }

echo '<a href="#">Relate um Erro</a>'; }

 

if($versao_para_impressao == 1 || $comente_esta_pagina == 1 || $recomende == 1 || $adicionar_aos_favoritos == 1 || $contribua_com_informacoes == 1 || $relate_um_erro == 1) {

echo '</td>';

echo '</tr>';

echo '</table>';

}

?>

[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho q o problema esta resolvido com a solucao do michelsp inclua do metodo tradicional, se nao tera de mudar na config... :P bom, acabei aprendendo mais uma... ;Dflw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui colocar o include a partir do site (como eu preciso) da seguinte maneira: enviando variáveis pela URL...

 

PHP [/tr][tr] <? include("http://".$_SERVER['HTTP_HOST']."/Templates/menu-inferior.php?versao_para_impressao=".$versao_para_impressao."&comente_esta_pagina=".$comente_esta_pagina."&recomende=".$recomende."&adicionar_aos_favoritos=".$adicionar_aos_favoritos."&contribua_com_informacoes=".$contribua_com_informacoes."&relate_um_erro=".$relate_um_erro); ?>

[/tr]

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendo pq você complica tanto uma coisa tão simples!!! hehehe

 

Mas se funcionou e Ñ se importa de passar por $_GET, dados, informações q já estão disponiveis, sem problema!!! :D

 

Flwwwwww

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu até que tentei usar $_GET... mas ocorreu algum erro como "Undefined index"... ;)

você teria q resgatar os dados com $_GET, já q está passando os dados pelo link, eu disse, o q é desnecessário pois estes já estão disponiveis, acessando diretamente do arquivo q for incluido, se o include for feito da maneira correta...Usa o include normal, q funciona, Ñ importa se tem theme ou Ñ, já fiz sites com inumeros themes usando include, normal, o qual é totalmente aplicavel.Flwwwww

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este tipo de erro esta me parecendo mais da configuração do php.

você utiliza qual versao de php?

você usa o arquivo php.ini que ja vem padrão na instalação ou você alterou alguma coisa nele?

você se lembra do q alterou nele?

Esse include deveria funcionar pois na minha maquinha roda normal.

Deve ser algum parametro que força a declaração de variaveis.

Aqui ñ funciona se ñ usar do tipo:

PHP [/tr][tr]include "pasta/arquivo.php";[/tr]

 

Ele inclui, mas Ñ reconhece os parametros.

 

php.ini original, só alterado parametros q ñ afetariam isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora eu pretendo mudar o código :( ... tudo porque não funcionou do jeito que eu tentei... as páginas incluídas não se comunicavam! Era uma bagunça só!

 

E eu não posso colocar como o pessoal falou, tipo

PHP [/tr][tr]<? include("index.php"); ?>[/tr]
porque como vai ser um template (aquele...DWT... do DW) não vai poder ser editável, então o caminho vai ficar errado se a página não estiver na mesma pasta do arquivo a ser incluído...

 

A minha idéia é a seguinte... ele pega o $_SERVER['PHP_SELF'] do arquivo, conta quantas barras ele tem ( / ) e gera "../../" no caminho do include de acordo com o numero de pastas...

 

Exemplificando:

 

Tenho um arquivo TESTE.PHP dentro da pasta RASCUNHO. O $_SERVER['PHP_SELF'] deste arquivo é "rascunho/teste.php". Ao querer incluir o arquivo INDEX.PHP, que está dentro da pasta raiz, como a pasta RASCUNHO, ele geraria <? include("../index.php"); ?> porque, como houve apenas uma barra na variável php_self, ele voltou uma vez...

 

Agora, a única dúvida minha é... qual função usar para calcular quantas barras tem o $_SERVER['PHP_SELF']? :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui! Olha como eu fiz:

 

PHP [/tr][tr]<?

$pagina = $_SERVER['PHP_SELF'];

$barras = explode("/", $pagina);

$numero_de_barras = count($barras);

$numero_de_barras = $numero_de_barras - 1;

 

if($numero_de_barras == 1) { $barras = ""; }

else if($numero_de_barras == 2) { $barras = "../"; }

else if($numero_de_barras == 3) { $barras = "../../"; }

else if($numero_de_barras == 4) { $barras = "../../../"; }

else if($numero_de_barras == 5) { $barras = "../../../../"; }

else if($numero_de_barras == 6) { $barras = "../../../../../"; }

else if($numero_de_barras == 7) { $barras = "../../../../../../"; }

 

include($barras.'Templates/header.php'); ?>

[/tr]

 

:)

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.