Ir ao conteúdo
  • Cadastre-se

PHP + Variavel Indefinida


plasutil

Posts recomendados

Bom dia, boa tarde ou boa noite para quem estiver lendo esse post. Então pessoal, esse é meu primeiro post, meu nome é Rodrigo Cardoso, tenho 14 anos e estou "engatinhando" no mundo PHP, mais enfim, chega de enrolação...

A questão é que estava vizualizando alguns materias sobre programação em php, só que o material já é de alguns anos atras, e eu estou usando uma versão mais recente do php, que agora por default o php.ini vem com a configuração de mostrar todos os erros + notices, e desenvolvendo um exercicio proposto pelo autor do material, surgiu o Notice de Variavel indefinida, bom a principio é simples, Qual é o problema? Variavel ainda não foi criada. Porém o problema maior vem quando eu vou a declara-lá, acontece que se eu a declaro, o objetivo principal de declarar a variavel no meu código não funciona. Tentarei explicar aqui o que eu quero fazer.

é um código simples, que contem uma tabela com os dados "código" e "Nome do Bairo", e que na visualização soa da mesma forma, usei um table dividindo em Codigo e Nome, e abaixo deles vem o conteudo pegado no meu banco de dados. Um detalhe é que no designe quando venho a separar os dados, o "Nome" e "Codigo" são 2 links, que foram criados para Alternar na visualização de ordem por codigo, ou ordem por Nome. Se a variavel não for declarada, na pagina inicial da a mensagem de erro, mas depois q eu cliclo em algum dos 2 links, a mensagem de erro some, porque a variavel já tem um valor atribuido.

Então pensando eu descobri varias soluções para esse problema, porém nenhuma delas consegui executar porque falta alguma coisa...

1º Solução - Ao abrir a pagina do site ele redirecionar automaticamente para meusite.com.br/ordem=codigo

Resultado: tentei usar header, funcao location.href em javascript, mas não obtive sucesso em nenhuma das 2 tentativas.

2º Solução - Fazer uma verificação usando codigo PHP que quando Cliclar em tal botão, a variavel ordem receba tal ação, ou faça tal ação.

Resultado: Tentei aplicar meus conhecimentos e foi um terror, ele não conseguia indentificar o click.

3º Solução - Codigo em javascript passando um parametro para o botao submit fico +- assim:

document.form.action='pag.php?ordem='+PARAMETRO

Resultado: quando vou mandar o php ler a variavel que foi criada em javascript, ele não consegue encontra-la, e se eu usar

echo "<script> "$var"</script>";

Ele pega o conteudo da variavel 100%, mais se ela estiver dentro de uma função em .js não funciona, e como eu preciso executar um metodo com parametros, nao tem outra forma a não ser por funcao.

----------------

Aqui deixarei o código para se quizerem testar, ou analisar o que tem de errado, ficarei eternamente grato se me ajudarem a solucionar esse problema, pois eu li em um post que dizia o seguinte "Notice não é erro", mas imagine que de repente a linguagem php vira a partir de agora somente com error_reporting all e notice, ai quem não souber consertar isso, se ferra^^

-------------------

A e apenas mais um detalhe, eu reparei que o erro de variavel indefinida só acontece quando tentamos buscar uma variavel nao criada ( obvio ) e quando tentando buscar a variavel de um "TextField", ou outro item de layout.

------------------

Desde já agredecido.


<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Mostrando items da tabela no banco de dados</title>

</head>

<body>
</form>
<form name="form1" method="post">
<!--Se eu definir a variavel aqui, seja ela com valor vazio,
ou com algo escrito, todos os erros desaparecem, porém
os botões ou links que devem trocar a ordenação não
funcionao, nem ao menos retornao o que eu escrevi
neles, em outras palavras, é como se eles fossem
links com o redirecionamento para a propria pagina. -->
<table width="500" border="1" cellpadding="2" align="center">
<tr>
<th colspan="2" align="center">Listagem de dados da tabela Bairro
</tr>
<tr> <!-- Aqui esta sendo definido a
forma como ele ira retornar a ordem, que será
passado através de um atributo na barra de
endereço mesmo, OBS: como aqui é apenas uma
ordenação, acho que não é um problema fazer
pelo get, se alguem querer trocar o valor da
variavel, nao ira afetar meu sistema, certo?
se eu estiver errado por favor me corrijem. -->
<th width='100'><a href='listando_dados.php?ordem=bai_codigo'>Código</a>
<th><a href='listando_dados.php?ordem=bai_nome'>Nome</a>
</tr>

<?php
require("conecta.php");
/* Acima é para conectar com o mysql, e
aqui abaixo eu troco o valor da variavel de
null para ordenação por codigo, mas mesmo
assim ele continua a dar erro de variavel indefinida*/
if($_REQUEST['ordem'] == "")
$ordem = "bai_codigo";
else
$ordem = $_REQUEST['ordem'];
$sql_select = "select * from bairro order by ".$ordem;
$resultado_query = mysql_query($sql_select);
$total_registros = 0;

if(!$resultado_query)
{
echo mensagem_erro(mysql_errno());

}
else
{
while($registros = mysql_fetch_array($resultado_query))
{
?>
<tr>
<td><?PHP echo $registros["bai_codigo"] ?> </td>
<td><?PHP echo $registros["bai_nome"] ?> </td>
</tr>

<?php
$total_registros++;
} }
?>

<tr>
<td colspan="2">Numero de registros: <?php echo $total_registros ?>
</tr>

</table>
</form>

</body>
</html>
<html>

Link para o comentário
Compartilhar em outros sites

Obrigado por me responder amigo, estou feliz por tentar me ajudar, mas..

Eu inicio ela aqui

 <form name="form1">
<?php
$variavel = "";

e depois aqui embaixo eu uso ela no codigo..
?>
</form>

porém dessa forma, (creio que seja a correta de se inicializar uma variavel ), não obtenho sucesso.

não sei se você leu todo o texto que eu fiz, mas, ali eu cito que fiz isso...

-------------------

Vamos partir para uma coisa mais simples...

Aqui em baixo eu tenho um textfield com o nome de "textfield".

 <input type="text" name="textfield" > 

e logo após ter criado esse textfield, eu preciso pegar o conteudo que foi digitado nele.

então suponhamos que eu pegue o valor dele e grava em um banco de dados

Então o que eu preciso fazer? eu preciso dar um insert no banco de dados e passar como parametro o nome do meu textfield que foi definido, no caso é name="textfield", automaticamente, ele está se tornando uma variavel.

eu consigo fazer isso tranquilamente, porém vai dar o erro de variavel indefinida porque eu nao a declarei.

Como eu declaro essa variavel?

podes me ensinar ? pois simplesmente dizer $textfield = ""; não está resolvendo.

Link para o comentário
Compartilhar em outros sites

  • Moderador

Ola amigo, primeiro de tudo você esta fazendo errado seu formulario e o uso do php.

você nao precisa iniciar a variavel dentro do formulario.,. mas sim enviar o valor do campo pelo formulario.

vou te dar um exemplo bem simples com apenas um campo e recebendo este valor.

exemplo:

formulario:


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

<input type="text" name="nomeCliente"/>
<input type="submit"/>

</form>

arquivo que recebe os dados:


<?php
$nome = $_POST["nomeCliente"];

echo " O nome digitado no campo foi: $nome";
?>

agora os comentarios sobre eles, começando pelo formulario.

no formulario você apenas declara os campos, que serao enviados pelo método "post", porque o metodo post? porque este metodo nao envia como parametro na barra de endereços alem de suportar mais caracteres.

voltando, então seu campo input deve ter o atributo chamado "name" que irá definir quem vai receber .

como podes ver no form, tem um action. é para onde você irá enviar seus dados que serão recebidos.

agora o arquivo recebeValores.php:

a primeira linha é a variavel que recebe o dado vindo do formulario atraves do $_POST["nomedoAtributo"];

e um echo que printa em tela o que foi recebido.

como podes ver, você nao precisa iniciar as variaveis a menos que uma variavel seja um incógnita que possa ser alterada de acordo com alguma funçao. ai nesse caso, sim você cria uma variavel "vazia" porque ela vai receber um valor, que possa ser alterado por outro valor.

Link para o comentário
Compartilhar em outros sites

Bem, vamos tentar ver se eu consigo entender e ajudar:

Você está querendo fazer algo do tipo:


<form method="POST" action="pag.php">
<input type="text" name="oNomeDaVariável" size="30" maxlenght="30">
<input type="submit" value="submit">
</form>

Ok...pelo o que eu entendi, este formulário será enviado via para o pag.php certo?

R: No pag.php insira no início do código a directiva <?php_track_vars?> e apenas chame oNomeDaVariável. Apague qualquer inicializador referente...não precisa.

Espero ter entendido seu problema e ajudado desta vez.

Grande abraço,

Link para o comentário
Compartilhar em outros sites

Ola pessoal, venho novamente aqui Agradecer a todos que se despuseram a me ajudar.

Methark a minha dúvida, não era essa, mais agredeço por você ter gastado seu tempo para me ajudar !

dif Obrigado por responder a minha dúvida, sua resposta foi muito útil ! Você me deu uma boa dica... infelizmente não solucionou meu problema. PORÉM, você me fez abrir a cabeça e me colocar pra pensar^^ Resultado: Eu apenas fiz uma verificação com o isset (coisa que eu ja sabia fazer, porém na hora a gente não consegue encaixar as coisas^^) nos meus 2 botões, e conforme era o botão, a variavel recebia tal valor. Muito mas muito simples, mas demorei a tarde inteira pra resolver isso :s, mas é com os erros que nós aprendemos :D

aaH, eu não consegui editar meu tópico aqui para a tag resolvido, acho que eu não posso fazer isso..

então se algum moderar ou admin, alguém que possa, quiser fechar o tópico. sinta-se a vontade. Assunto resolvido já (:

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!