Ir para conteúdo

POWERED BY:

Arquivado

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

kleber brito

[Resolvido] Problema com variavel

Recommended Posts

Olá a todos,

Estou com um problema e não estou conseguindo resolver, se alguem souber, por favor ajude.

 

Seguinte, criei uma pagina de cadastro de noticias para um site que estou desenvolvendo, quando chamo a pagina diretamente no navegador tudo funciona perfeitamente, porem, eu estou utilizando um switch e includes para chamar as paginas de administracao, entao fica assim: index.php?pagina=cadastrar_noticia

 

 

e quando acesso deste modo, a pagina de cadastro eh carregada completamente mas com alguns erros no topo da pagina:

 

Notice: Undefined index: nm_titulo in \htdocs\kleber\novo_admin\cadastrar_noticia.php on line 6

Notice: Undefined index: nm_intertitulo in \htdocs\kleber\novo_admin\cadastrar_noticia.php on line 7

Notice: Undefined index: nm_data in \htdocs\kleber\novo_admin\cadastrar_noticia.php on line 8

Notice: Undefined index: nm_horario in \htdocs\kleber\novo_admin\cadastrar_noticia.php on line 9

Notice: Undefined index: texto in \htdocs\kleber\novo_admin\cadastrar_noticia.php on line 10

Notice: Undefined index: nm_jornalista in \htdocs\kleber\novo_admin\cadastrar_noticia.php on line 11
[code]

agora se eu acessar a pagina diretamente digitando cadastrar_noticia.php no navegado tudo funciona perfeitamente, porem fico sem o menu que faz o include.


o include:
[code]
<?
if(isset($_GET['pagina'])){

switch($_GET['pagina']){

case "cadastrar_noticia" :
include_once("cadastrar_noticia.php");
break;
}

}
else{
include ("meio.php");
}

a pagina cadastrar_noticia.php

 

<?
$conexao = mysql_connect("******","*****","******"); //Faz conexão com o mysql
$db = mysql_select_db("comunicacao");
include "fckeditor/fckeditor.php"; 
  $titulo = $_POST['nm_titulo']; 
  $subtitulo = $_POST['nm_intertitulo'];
  $data = $_POST['nm_data'];
  $hora = $_POST['nm_horario'];
  $texto = $_POST['texto'];
  $jornalista = $_POST['nm_jornalista'];
if (isset($_POST['texto'])){
  $sql = "INSERT INTO noticias (id_noticia, nm_titulo, nm_intertitulo, nm_data, nm_horario, nm_texto, nm_jornalista) VALUES (NULL, '$titulo', '$subtitulo', '$data', '$hora', '$texto', '$jornalista')";
  $result = mysql_query($sql) or die(mysql_error()); 
  header("Location: editor_mostra.php");
  }
?>

 

o formulario da mesma pagina cadastrar_noticia.php

 

<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
		<tr> 
		  <td><form method="post" action="<?=$_SERVER['PHP_SELF']?>" >
			  
			  <table width="100%" border="0" cellpadding="0" cellspacing="01">
				<tr> 
				  <td height="20" colspan="2" valign="middle" bgcolor="#efefde"><div align="left"  id="txt_titulo" class="texto-cadastro"> Título 
					  da Matéria: 
					  <input name="nm_titulo" type="text"  id="nm_titulo" size="80">
				  </div></td>
				</tr>
				
				<tr valign="middle"> 
				  <td height="20" colspan="2" bgcolor="#efefde">  <span class="texto-cadastro" id="txt_intertitulo">Subtítulo:
				  </span>               <input name="nm_intertitulo" type="text" size="80">				  </td>
				</tr>
				
				<tr valign="middle"> 
				  <td width="48%" height="20" bgcolor="#efefde"> <div align="left"> <span class="texto-cadastro" id="txt_data">Data:</span>
					 <input name="nm_data" type="text" value="<?php echo date('d/m/y'); ?>" size="10">
				  </div></td>
				  <td width="52%" bgcolor="#efefde"><div align="left"> <span class="texto-cadastro" id="txt_hora">Horário: </span>
					<input name="nm_horario" type="text"  value="<?php echo date("H:m"); ?>" size="8">
				  </div></td>
				</tr>
				
				<tr> 
				  <td height="20" colspan="2" valign="middle" bgcolor="#efefde"> <span class="texto-cadastro" id="txt_texto">Texto da Matéria:</span></td>
				</tr>
				<tr> 
				  <td colspan="2" valign="top" bgcolor="#efefde"><div align="center"><b> </b> 
					<?php
					$oFCKeditor = new FCKeditor('texto');
					$oFCKeditor->BasePath = './fckeditor/';
					$oFCKeditor->Value = '';
					$oFCKeditor->Create();
					?>
				  </div></td>
				</tr>
				<tr>
				  <td colspan="2" valign="top" bgcolor="#efefde"> <span class="texto-cadastro" id="txt_jornalista">Jornalista:</span>
				  <input name="nm_jornalista" type="text" value="<?php echo $dados['nome']; ?>" size="25">				  </td>
				</tr>
			  </table>
			  <p align="center">
			  <table width="100%" border="0" cellpadding="0" cellspacing="0">
				<tr> 
				  <td width="322"> </td>
				  <td width="17"> <input type="submit" name="cadastrar" value="Cadastrar" class="botao">
				  </td>
				</tr>
			  </table>
			</form></td>
		</tr>
	  </table>

 

se alguem puder ajudar, ficarei grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz com if e só um include

 

se fosse mais

 

switch ($var) {

case 01:

case 02:

case 06:

case 08:

case 14:

case 15:

case 16:

case 21:

 

ai sim tudo bem

Compartilhar este post


Link para o post
Compartilhar em outros sites

A página está sendo chamada por post ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O array $_POST só existe quando o método da requisição é post.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O formulário e a action estão no mesmo arquivo, certo?

Gerou o Notice, pois você tentou atribuir algo que ainda não existia, pois o formulário ainda não foi enviado.

if(isSet($_POST['nm_titulo']))
   $titulo = $_POST['nm_titulo']; 
if(isSet($_POST['nm_intertitulo']))
   $subtitulo = $_POST['nm_intertitulo'];
...
Assim a atribuição só vai ocorrer qndo os POSTs existirem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para vermos oque ocorre, faça o seguinte:

if (isset($_POST['texto'])){
  $sql = "INSERT INTO noticias (nm_titulo, nm_intertitulo, nm_data, nm_horario, nm_texto, nm_jornalista) VALUES ('$titulo', '$subtitulo', '$data', '$hora', '$texto', '$jornalista')";
  $result = mysql_query($sql) or die(mysql_error()); 
  // header("Location: editor_mostra.php");
  }
O campo: "id_noticia", é um auto_increment, ne!?

Só tirei o header, para mostrar o error...

Compartilhar este post


Link para o post
Compartilhar em outros sites

simplesmente volta para a pagina inicial ou seja, meio.php

 

da uma olhada no index.php que usa o meio.php no include caso o pagina nao esteja setada...

talvez ajude

<?
if(isset($_GET['pagina'])){

switch($_GET['pagina']){

case "cadastrar_noticia" :
include_once("cadastrar_noticia.php");
break;

case "alterar_noticia" :
include("alterar_noticia.php");
break;

case "remover_noticia" :
include("remover_noticia.php");
break;

case "cadastrar_evento" :
include("cadastrar_evento.php");
break;

case "alterar_evento" :
include("alterar_evento.php");
break;

case "remover_evento" :
include("remover_evento.php");
break;


case "relatorio_noticias" :
include("relatorio_noticias.php");
break;


case "mudar_senha" :
include("mudar_senha.php");
break;


case "logout" :
include("logout.php");
break;
}

}
else{
include ("meio.php");
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

é por causa do teu else lá no sistema de includes.... retira ele por enqnto.. só para vermos o mysql_error.

 

ps: essa estrutura de switch está estranha... você conhece a cláusula default ?

Mas retira o else, por enqnto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o campo id_noticia ta auto_increment sim,

 

nao, nao conheco a clausula default, sou iniciante, to comecando a entender algumas coisas agora.

 

teria uma maneira melhor de se fazer o switch? o por que sera que acessando o arquivo diretamente sem ser por querystring funciona perfeitamente ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá... uma primeira coisa é mudar o teu header do cadastro:

header("Location: ?pagina=editor_mostra");
E ai adicionar mais um no switch..

case "editor_mostra" :
include("editor_mostra.php");
break;
Tem como postar um link disso? Não consegui perceber o problema...

 

Default, é acessado qndo nenhuma outra cláusula bate.

http://br2.php.net/switch

Compartilhar este post


Link para o post
Compartilhar em outros sites

mesma coisa, ele abre a pagina de cadastro incluida no index. quando acesso ?pagina=cadastrar_noticia ateh ai tudo tranquilo, porem qundo posto algo e clico em cadastrar ele retorna pro index.php sem nenhuma mensagem de erro e sem cadastrar.

 

porem se eu acessar o cadastrar_noticia.php diretamente tudo funciona perfeitamente e ele cadastra os dados no bd, mas assim o menu nao aparece porque essa pagina eh um include.

 

 

(ta osso!!) hehehehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho... oque lhe retorna o:

echo $_SERVER['PHP_SELF']
Experimenta deixar a action vazia.

<form method="post" action="" >

Compartilhar este post


Link para o post
Compartilhar em outros sites

echo $_SERVER['PHP_SELF']; retorna /kleber/novo_admin/index.php

 

deixando o form em branco

 

Notice: Undefined variable: texto in C:\xampp\htdocs\kleber\novo_admin\cadastrar_noticia.php on line 22

 

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\kleber\novo_admin\index.php:14) in C:\xampp\htdocs\kleber\novo_admin\cadastrar_noticia.php on line 24 (isso quando eu clico em cadastrar) (Pelo menos agora nao esta a apagina em branco)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá... o $_SERVER['PHP_SELF']; realmente estava errado, qndo você usou o include.

faz o seguinte, olha, pega esse trecho aqui, que é a action do formulário e coloca num arquivo separado.

<?php
$conexao = mysql_connect("******","*****","******"); //Faz conexão com o mysql
$db = mysql_select_db("comunicacao");
if (isset($_POST['texto'])){
  $sql = "INSERT INTO noticias (nm_titulo, nm_intertitulo, nm_data, nm_horario, nm_texto, nm_jornalista) VALUES ('$titulo', '$subtitulo', '$data', '$hora', '$texto', '$jornalista')";
  $result = mysql_query($sql) or die(mysql_error()); 
  header("Location: ?pagina=editor_mostra");
  }
?>
Algo como: act_cadastrar_noticia.php, e coloca a action do form assim:

<form method="post" action="act_cadastrar_noticia.php">

E esse notice:

Notice: Undefined variable: texto

Nada tem a ver com oque alteramos agora... revisa o código ai... você está tentando usar alguma variável texto que não existe ainda.

 

PS: mas cadastrou mesmo com o Warning do "Cannot modify header information " ?? (acredito que sim..)

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.