Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde Galera,
Me deparei com um problema hoje, eu uso HTML no meu site, e PHP apenas para dar INCLUDES.. (para não precisar inserir cabeçalho e rodapé toda hora e pra facilitar a manutenção) só que se eu alterar uma parte do codigo include, ele se altera em todas as páginas, observem:
INDEX.PHP
<body>
<?php include("includes/header.php"); ?> <!-- inclui o cabeçalho nas páginas -->
CONTEUDO DA PAGINA
<?php include("includes/rodape.php"); ?> <!-- inclui os rodapés -->
</body>
e o cabeçalho:
HEADER.PHP
<div class="bgheader"> //ESSA DIV QUE EU QUERO "IFAR"
<div id="wrapper">
<div id="header">
<div id="wrapper">
queria fazer essa sintaxe:
" se a pagina que eu estou agora for "index.php" leia a div bgheader , se não leia a div bgheader2 ( que eu vou criar ainda B)
não sei se resolve mais da uma olhada aki
http://forum.imasters.com.br/topic/496070-o-require-funciona/
>
leia?
php é server-side e trabalha do lado do servidor e não do navegador
Eu sei disso cara, mas com "leia" eu quis dizer Executar..
>
fazendo vista grossa para os termos "leia" e "IFAR".. rsss
Quanto a questão, observe bem a sua p'ropria pergunta.
Se no index.php vc quer incluir o arquivo "includes/header.php" e nas outras páginas quer incluir um outro conteúdo, então, basta incluir outro arquivo:
includes/header2.php
Valeu man, só que eu queria usar o mesmo código pra não poluir muito o host .. :P, vou refazer minha sintaxe:
"Se a página atual for "index" execute (include/header.php), se não execute (include/header2.php)"
Mas vou usar sua solução temporariamente, mas quando achar uma solução definitiva eu posto aqui
Tente isso:
Em seu includes/header.php coloque ambos os conteúdos de bgheader e bgheader2 com uma condicional para que um seja mostrado quando o arquivo atual for /index.php e o outro seja mostrado quando não for:
<?php if ($_SERVER['PHP_SELF'] == "/index.php") { ?>
<div class="bgheader"></div>
<?php } else { ?>
<div class="bgheader2"></div>
<?php }?>
Em todos os seus arquivos principais, chame por includes/header.php (nem é preciso, portanto, alterá-los
>
Tente isso:
Em seu includes/header.php coloque ambos os conteúdos de bgheader e bgheader2 com uma condicional para que um seja mostrado quando o arquivo atual for /index.php e o outro seja mostrado quando não for:
<?php if ($_SERVER['PHP_SELF'] == "/index.php") { ?>
<div class="bgheader"></div>
<?php } else { ?>
<div class="bgheader2"></div>
<?php }?>
Em todos os seus arquivos principais, chame por includes/header.php (nem é preciso, portanto, alterá-los
Tá quase lá man, o else funcionou nas outras paginas mas quando eu vou para a index.php ele continua executando o bgheader2 (como se o if não fosse válido)
Remova tudo temporariamente do index e coloque apenas isso e poste aqui o que retorna:
var_dump($_SERVER['PHP_SELF']);
>
Remova tudo temporariamente do index e coloque apenas isso e poste aqui o que retorna:
var_dump($_SERVER['PHP_SELF']);
retornou
string(22) "/itabunamais/index.php"
Então:
substitua
<?php if ($_SERVER['PHP_SELF'] == "/index.php") { ?>
por
<?php if ($_SERVER['PHP_SELF'] == "/itabunamais/index.php") { ?>>
Então:
substitua
<?php if ($_SERVER['PHP_SELF'] == "/index.php") { ?>
por
<?php if ($_SERVER['PHP_SELF'] == "/itabunamais/index.php") { ?>
Funcionou mas quebrou minha Flotagem .. :P esse bg ficava atrás do cabeçalho, agora ele ficou tipo "position:relative" e invalidou o float do cabeçalho, ficando bg em cima e cabeçalho embaixo ..
seta um nome pra cada pagina ao inves de pegar o nome exato da pagina no servidor.
em cada pagina vc da um nome <?php $pagina = "index"; ?>
no arquivo do include você coloca as condicoes, por exemplo:
<?php
switch($pagina)
{
case 'index':
echo "$conteudoDoIndex";
break;
case 'opiniao':
echo "$conteudoDaOpiniao";
break;
}
?>
Pode fazer as condicoes na propria pagina tb, mas ai misturaria mais codigo com html.
Eu uso isso parametrizando todas as paginas do meu site. no arquivo parametros.php eu tenho o conteudo de todas as paginas em uma so. e em cada pagina apenas seto o nome . quando o parametros.php le o nome da pagina ele ja mostra o conteudo relativo a aquela pagina
Funcionou mas quebrou minha Flotagem .. :P esse bg ficava atrás do cabeçalho, agora ele ficou tipo "position:relative" e invalidou o float do cabeçalho, ficando bg em cima e cabeçalho embaixo ..
Aí o problema já não é de PHP, mas de CSS:
:seta: CSS / XML / XHTML / HTML
Marque o tópico como resolvido e não tiver mais nenhuma dúvida (que seja sobre PHP).
@joaofla123, mas ele só tem duas versões de cabeçalhos (um para index e outro para as outras páginas), switch é mais recomendável quando há três ou mais.
leia?
php é server-side e trabalha do lado do servidor e não do navegador
fazendo vista grossa para os termos "leia" e "IFAR".. rsss
Quanto a questão, observe bem a sua p'ropria pergunta.
Se no index.php vc quer incluir o arquivo "includes/header.php" e nas outras páginas quer incluir um outro conteúdo, então, basta incluir outro arquivo:
includes/header2.php