Ir para conteúdo

POWERED BY:

Arquivado

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

Vitor Bertolino

[Resolvido] erro switch

Recommended Posts

Ola,

meu nome é vitor. Estou começando com o PHP faz uma semana e ja estou com duvidas.

 

 

estou criando vários sites em meu localhost para testes.

 

estou na hora que adiciona na pagina um titulo de acordo com o mesmo.

 

utilizei o codigo:

 

pagina 'index':

 

<?php

include "cabecalho.php";	// pagina cabecalho.
include "conteudo.php";		// pagina conteudo.
include "rodape.php";		// pagina rodape.

?>

 

Pagina 'conteudo':

 

<?php
$pg = $_GET['pagina'];

if(isset($_GET['pagina'])){
switch($pg){
	default:
	include ("inicio.php");
	break;

	case 'inicio':
	$titulo = "Início";
	include('inicio.php');
	break;

	case 'contato';
	$titulo = "Contato";
	include('contato.php');
	break;	
}
}
else {include ("inicio.php");}
?>

 

Na pagina 'inicio':

 

<html>
<head>
   	<title><?php echo "» mGo Clan - $titulo;" ?></title>
   </head>
   <body>
  	Inicio
   <ul>
   	<li><a href="?pagina=inicio">Inicio</a></li>
   	<li><a href="?pagina=contato">Contato</a></li>
   </ul>
   </body>
</html>

 

e na 'contato':

 

<html>
<head>
   	<title>» mGo Clan - <?php echo $titulo; ?></title>
   </head>
   <body>
   Contato
   <ul>
   	<li><a href="?pagina=inicio">Inicio</a></li>
   	<li><a href="?pagina=contato">Contato</a></li>
   </ul>
   </body>
</html>

 

O Erro é este:

 

<b>Notice</b>:  Undefined index: pagina in <b>C:\Program Files (x86)\EasyPHP-5.4.0beta2\www\site\conteudo.php</b> on line <b>3</b><br />
<html>
<head>
   	<title><br />
<b>Notice</b>:  Undefined variable: titulo in <b>C:\Program Files (x86)\EasyPHP-5.4.0beta2\www\site\inicio.php</b> on line <b>3</b><br />
» mGo Clan - ;</title>
   </head>
   <body>
  	Inicio
   <ul>
   	<li><a href="?pagina=inicio">Inicio</a></li>
   	<li><a href="?pagina=contato">Contato</a></li>
   </ul>
   </body>
</html>

 

quando eu não coloca o nome nas paginas, não aparecia este erro.

 

agora queria saber como resolver...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece que ele não esta encontrando sua página index, verifique se ela existe e se está no mesmo diretório ou com o caminho correto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece que ele não esta encontrando sua página index, verifique se ela existe e se está no mesmo diretório ou com o caminho correto.

 

 

esta sim

 

estou achando que este erro é porque eu não defini a pagina default.

 

mais como pode ver acima, esta la o default.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sua default é inicio.php e ela não esta encontrando a index.php se você acessar diretamente a URL

por exemplo você esta usando localmente: http://localhost/teste

desta forma o servidor irá procurar pela página index.php pois você não definiu nenhuma, se não for isso verifique onde você está chamando a página index.php e se ela existe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sua default é inicio.php e ela não esta encontrando a index.php se você acessar diretamente a URL

por exemplo você esta usando localmente: http://localhost/teste

desta forma o servidor irá procurar pela página index.php pois você não definiu nenhuma, se não for isso verifique onde você está chamando a página index.php e se ela existe.

 

a index.php existe. e dentro dela esta:

 

w05e84.jpg

 

<?php

include "cabecalho.php";	// pagina cabecalho.
include "conteudo.php";		// pagina conteudo.
include "rodape.php";		// pagina rodape.

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, ele está apresentando Notices. O primeio não encontrei o erro, é algo diretamente ligado a página conteudo.php

O segundo é mais simples

 

<b>Notice</b>: Undefined variable: titulo in <b>C:\Program Files (x86)\EasyPHP-5.4.0beta2\www\site\inicio.php</b> on line <b>3</b><br />

 

vem desta parte aqui da página inicio.php

 

<html>
       <head>
       <title><?php echo "» mGo Clan - $titulo;" ?></title>
   </head>
   <body>
       Inicio
   <ul>
       <li><a href="?pagina=inicio">Inicio</a></li>
       <li><a href="?pagina=contato">Contato</a></li>
   </ul>
   </body>
</html>

 

Ele está informando que você está tentando imprimir uma variável que não existe, no caso título.

Se antes de imprimi-la, declarar ela como NULL ou vazio, não dará mais esse Notice.

 

<html>
       <head>
       <?php
       //isset é uma função que verifica se a variável foi iniciada, nem que seja com o valor NULL
       //! (exclamação) é a negação, então ele verifica se a variável $titulo não foi iniciada, caso ela não foi iniciada, coloca o valor '' (vazio) nela. 
       if ( !isset( $titulo ) ) {
          $titulo = '';
       }
       ?>
       <title><?php echo "» mGo Clan - $titulo;" ?></title>
   </head>
   <body>
       Inicio
   <ul>
       <li><a href="?pagina=inicio">Inicio</a></li>
       <li><a href="?pagina=contato">Contato</a></li>
   </ul>
   </body>
</html>

 

provavelmente ele não está iniciando a variável quando entra no else da página conteúdo.

 

<?php
$pg = $_GET['pagina'];

if(isset($_GET['pagina'])){
       switch($pg){
               default:
               include ("inicio.php");
               break;

               case 'inicio':
               $titulo = "Início";
               include('inicio.php');
               break;

               case 'contato';
               $titulo = "Contato";
               include('contato.php');
               break;  
       }
} else {
   //Adicione este aqui para iniciar a variável;
   $titulo = '';
   include ("inicio.php");
}
?>

 

Acredito que assim resolva seu problema com o segundo Notice, o primeiro ainda estou procurando '-'

Compartilhar este post


Link para o post
Compartilhar em outros sites

gente,

 

esse método que estou fazendo não sei se é o correto.

 

se alguém poder me mandar outro código ai, agradeço.

 

eu peguei este ai na internet, não tenho noções de códigos ainda.

 

oque eu quero fazer é o seguinte:

 

meu site é formado por 3 pagina.

 

<?php

include "cabecalho.php";
include "conteudo.php";
include "rodape.php";

?>

 

na página conteudo.php que vai os códigos da switch.

 

na witch, eu coloquei para que tenha 3 paginas:

 

inicio

contato

projetos

 

o sistema funciona normal. só que nao tem titulo nas paginas.

 

fica como localhost/180...../?pagina=inicio e etc.

 

como que eu ponho titulo nelas? ex: Vitor Bertolino - Inicio(Contato)(Projetos) correspondente com sua página.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça assim:

<?php
$pg = isset($_GET['pagina']) ? $_GET['pagina'] : 'inicio';

       switch($pg){
               break;

               case 'inicio':
               default:
                   $titulo = "Início";
                   include('inicio.php');
                   break;

               case 'contato';
                   $titulo = "Contato";
                   include('contato.php');
                   break;  

       }


?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça assim:

<?php
$pg = isset($_GET['pagina']) ? $_GET['pagina'] : 'inicio';

       switch($pg){
               break;

               case 'inicio':
               default:
                   $titulo = "Início";
                   include('inicio.php');
                   break;

               case 'contato';
                   $titulo = "Contato";
                   include('contato.php');
                   break;  

       }


?>

 

 

esta dando erro no código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim...

 

<?php


if(isset($_GET['pagina'])){
   $pg = $_GET['pagina'];
       switch($pg){
               case 'contato';
               $titulo = "Contato";
               include('contato.php');
               break;
               default:
               include ("inicio.php");
       }
} else {
   //Adicione este aqui para iniciar a variável;
   $titulo = '';
   include ("inicio.php");
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, falta de atenção minha... tinha um 'break' sobrando.

Agora está correto:

<?php
$pg = isset($_GET['pagina']) ? $_GET['pagina'] : 'inicio';

       switch($pg){
               case 'inicio':
               default:
                   $titulo = "Início";
                   include('inicio.php');
                   break;

               case 'contato';
                   $titulo = "Contato";
                   include('contato.php');
                   break;  

       }


?>   

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim...

 

<?php


if(isset($_GET['pagina'])){
   $pg = $_GET['pagina'];
       switch($pg){
               case 'contato';
               $titulo = "Contato";
               include('contato.php');
               break;
               default:
               include ("inicio.php");
       }
} else {
   //Adicione este aqui para iniciar a variável;
   $titulo = '';
   include ("inicio.php");
}
?>

 

Esse funcionou certinho...

 

Obrigado a todos vocês!

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.