Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 260
Sexo: Masculino

formulario e tratamento do mesmo na mesma pag php

02-06-2014 22:32

Bom dia eu criei um script em php com um formulario de registo e processamento deste mesmo na mesma pagina...porem ao executa-lo apresenta-me um ero: UNDEFINED INDEX, para evitar tal erro é criar uma pagina para por um formulario de registo e outra pagina para tratar os dados desse registo......;tudo na mesma pagina , não dá..

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head>   <body> <?php       include "./ligacaobd/ligacaobd.php"; //include("./cabeçalho.php");   $nickname = $_POST['nickname'];     //verificar se foi clicado o botão submit   if (isset($_REQUEST['registar'])){                //verificar se os campos foram todos preenchidos   if(!empty($_POST) and (empty($_POST['nickname']) or (empty($_POST['password']) ))){ echo "<table width='800' border='0' cellspacing='0' align='center'>   <tr>     <td align='center'><a href='registar_utilizador.php'>Tem de preencher os campos ! Clique para tentar de novo</a></td>   </tr>";   }}   //verificar se existe um utilizador registado com o mesmo nome       $sql = "SELECT * FROM utilizadores WHERE nome_utilizador = '$nickname' "; $consulta =mysql_query($sql); $resultado = mysql_num_rows($consulta);     //se existir já um utilizador, apresenta uma mensagem de erro... if ($resultado != 0) { echo "<table width='800' border='0' cellspacing='0' align='center'>   <tr>     <td align='center'>Ja existe um utilizador com esse nome !</td>   </tr> <tr>     <td align='center'><a href='registar_utilizador.php'>Clique para tentar de nove !</a></td>   </tr> "; }   else {     // se não existir um utilizador com esse nome, faz-se o registo $sql2 = "INSERT INTO utilizadores(nome_utilizador, palavra_passe ,email,estado_utilizador,nivel_utilizador,data_registo) VALUES ('".$_POST[nickname]."' , '".$_POST[password]."') , '".$_POST[email]."' , 'N' , '2' , NOW() ) ";         $consulta2 = mysql_query($sql2);   echo "<table width='800' border='0' cellspacing='0' align='center' >   <tr>     <td align='center'>Obrigado por se registar ! Terá de aguardar pela validação do administrador !</td>   </tr>   <tr>     <td align='center'>Clique para continuar</td>   </tr>";   } ?>     <form id="form_registo" name="form_registo" method="post" action="registar_utilizador.php" > <table width="600" border="0" cellspacing="0" align="center">   <tr>     <td colspan="2" align="center">Insira os dados para se registar</td>   </tr>   <tr>     <td width="196" align="center">Nome de acesso :</td>     <td width="300">       <label for="textfield"></label>       <input type="text" name="nickname" id="textfield" size="40" />*     </td>   </tr>   <tr>     <td align="center">Palavra-passe :</td>     <td><label for="password"></label>       <input type="password" name="password" id="password" size="40" />*</td>   </tr>   <tr>     <td>Endereço de correio electronico :</td>     <td><label for="email"></label>       <input type="text" name="email" id="email" size="40" />*</td>   </tr>   <tr>     <td colspan="2"><strong>* Campo de preenchimento obrigatorio</strong></td>     </tr>   <tr>     <td align="right"><input type="submit" name="registar" id="registar" value="Registar" /></td>     <td align="center"><input name="apagar" type="reset" value="Apagar" /></td>   </tr> </table> </form>   </body> </html>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17673
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

formulario e tratamento do mesmo na mesma pag php

03-06-2014 08:24

Você teria que informar qual linha do código está dando o problema do undefined index.

Mas suponho que seja essa:

$nickname = $_POST['nickname']; 

Essa linha está isolada no topo, ou seja, quando você carrega o documento $_POST['nickname'] porque você não enviou nada, só acessou o documento.

A solução a princípio é jogar essa linha dentro de

if (isset($_REQUEST['registar'])){ 

Porque esse é o if principal, do post, então variáveis criada a partir do post devem estar ai dentro.

Obs.: Use o seguinte:

if (isset($_POST['registar'])){ 

Ao invés do $_REQUEST.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 260
Sexo: Masculino

formulario e tratamento do mesmo na mesma pag php

03-06-2014 11:25

Muito obrigado por me ajudar na 1a parte, ficou serolvida, porem da-me erro na seguinte linha:

erro: Undefined variable: nickname IN C:\wamp\www\FORUM\registar_utilizador.php ON line 40


40 | $sql = "SELECT * FROM utilizadores WHERE nome_utilizador = '$nickname' "; 

e...

erro : Undefined variable: nickname , password ,email IN C:\wamp\www\FORUM\registar_utilizador.php ON line 59


59 | $sql2 = "INSERT INTO utilizadores(nome_utilizador, palavra_passe ,email,estado_utilizador,nivel_utilizador,data_registo) VALUES ('".$_POST[nickname]."' , '".$_POST[password]."') , '".$_POST[email]."' , 'N' , '2' , NOW() ) "; 

poderia-me ajudar ?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17673
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

formulario e tratamento do mesmo na mesma pag php

03-06-2014 14:02

Acho que você tirou essa linha:

$nickname = $_POST['nickname']; 

Seria para colocar essa linha acima, abaixo dessa

if (isset($_POST['registar'])){ 

Ou

$sql = "SELECT * FROM utilizadores WHERE nome_utilizador = '".$_POST['nickname']."' ";


e

$sql2 = "INSERT INTO utilizadores(nome_utilizador, palavra_passe ,email,estado_utilizador,nivel_utilizador,data_registo) VALUES ('".$_POST['nickname']."' , '".$_POST['password']."') , '".$_POST['email']."' , 'N' , '2' , NOW() ) "; 


Sempre deve colocar aspas no valor do post.

$_POST['nickname'];
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 260
Sexo: Masculino

formulario e tratamento do mesmo na mesma pag php

03-06-2014 21:34

Boa , corrigi tudo como me mandou !!! ja me ajudou a eliminar uns poucos erros porem exitem ainda estes nas mesmas linhas ...!!!

( ! ) Notice: Undefined index: $nickname in C:\wamp\www\FORUM\registar_utilizador.php on line 32


( ! ) Notice: Undefined index: nickname in C:\wamp\www\FORUM\registar_utilizador.php on line 50


( ! ) Notice: Undefined index: password in C:\wamp\www\FORUM\registar_utilizador.php on line 50


( ! ) Notice: Undefined index: email in C:\wamp\www\FORUM\registar_utilizador.php on line 50


32 | $sql = "SELECT * FROM utilizadores WHERE nome_utilizador ='".$_POST['$nickname']."' ";

50 ! $sql2 = "INSERT INTO utilizadores(nome_utilizador, palavra_passe ,email,estado_utilizador,nivel_utilizador,data_registo) VALUES ('".$_POST['nickname']."' , '".$_POST['password']."') , '".$_POST['email']."' , 'N' , '2' , NOW() ) "; 

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17673
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

formulario e tratamento do mesmo na mesma pag php

03-06-2014 21:59

Se você observar o seu código nessa linha.

 <td align='center'><a href='registar_utilizador.php'>Tem de preencher os campos ! Clique para tentar de novo</a></td>  </tr>";  }}

Você vai ver que está fechando o if do campo vazio

 if(!empty($_POST) and....

e o if do envio envio

 if(isset($_POST['registar'])=....

Ou seja, abaixo disso, tudo está sendo executado fora do post.

Você tem que fazer organizado, tipo:

if(isset($_POST['registar'])=="Registrar") { // SÓ EXECUTADO QUANDO ENVIAR OS DADOS DO FORM ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// } // IF PRINCIPAL  

Dentro desse trecho vir fazendo os ifs interno, lembrando sempre de fechar cada if aberto.

Sempre usando de onde vem os valores, exemplo

$_POST['nickname']

Eu montei um modelo básico do que você está fazendo. Só adaptar ao seu uso.

<?php if(isset($_POST['Registrar'])) { if(empty($_POST['nome']) || empty($_POST['email'])) { echo "Todos os campos são obrigatórios"; } else { // PARA CAMPOS PREENCHIDOS // SIMULANDO QUE A CONSULTA RETORNOU RESULTADO $resultado = 0; // IF DA CONSULTA if($resultado!=0) { echo "Já existe um utilizador...."; } else { echo "insert e mensagem...."; } // IF DA CONSULTA // PARA CAMPOS PREENCHIDOS } } ?>


<form method="post" action="teste.php"> nome <input type="text" name="nome" value="" required="required"> <br /> email <input type="email" name="email" value="" required="required"> <br /> <input type="submit" name="Registrar" value="Registrar"> </form>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 260
Sexo: Masculino

formulario e tratamento do mesmo na mesma pag php

05-06-2014 11:35

bom dia, o meu codigo esta da seguinte maneira........ja eliminei graças a sua ajuda ...porem qd faço o teste de por exemplo de clicar no botao "registar" , quer os campos estejam ou nao preenchidos...aparece o seguinte erro :

( ! ) Notice: Undefined INDEX: $nickname IN C:\wamp\www\FORUM\registar_utilizador.php ON line 32


</head> <?php include "./ligacaobd/ligacaobd.php"; //include("./cabeçalho.php");     //verificar se foi clicado o botão submit   if (isset($_POST['registar'])){                 $nickname = $_POST['nickname'];                 //verificar se os campos foram todos preenchidos   if(!empty($_POST) and (empty($_POST['nickname']) or (empty($_POST['password']) ))){         echo "<table width='800' border='0' cellspacing='0' align='center'>   <tr>     <td align='center'><a href='registar_utilizador.php'>Tem de preencher os campos ! Clique para tentar de novo</a></td>   </tr>";   }   //verificar se existe um utilizador registado com o mesmo nome   $sql = "SELECT * FROM utilizadores WHERE nome_utilizador ='".$_POST['$nickname']."' "; $consulta =mysql_query($sql); $resultado = mysql_num_rows($consulta);   //se existir já um utilizador, apresenta uma mensagem de erro... if ($resultado != 0) { echo "<table width='800' border='0' cellspacing='0' align='center'>   <tr>     <td align='center'>Ja existe um utilizador com esse nome !</td>   </tr>  <tr>     <td align='center'><a href='registar_utilizador.php'>Clique para tentar de nove !</a></td>   </tr> "; }   else {         // se não existir um utilizador com esse nome, faz-se o registo $sql2 = "INSERT INTO utilizadores(nome_utilizador, palavra_passe ,email,estado_utilizador,nivel_utilizador,data_registo) VALUES ('".$_POST['nickname']."' , '".$_POST['password']."') , '".$_POST['email']."' , 'N' , '2' , NOW() ) ";          $consulta2 = mysql_query($sql2);   echo "<table width='800' border='0' cellspacing='0' align='center' >   <tr>     <td align='center'>Obrigado por se registar ! Terá de aguardar pela validação do administrador !</td>   </tr>   <tr>     <td align='center'>Clique para continuar</td>   </tr>"; } } ?>   <body> <form id="form_registo" name="form_registo" method="post" action="registar_utilizador.php" > <table width="600" border="0" cellspacing="0" align="center">   <tr>     <td colspan="2" align="center">Insira os dados para se registar</td>   </tr>   <tr>     <td width="196" align="center">Nome de acesso :</td>     <td width="300">       <label for="textfield"></label>       <input type="text" name="nickname" id="nickname" size="40" />*     </td>   </tr>   <tr>     <td align="center">Palavra-passe :</td>     <td><label for="password"></label>       <input type="password" name="password" id="password" size="40" />*</td>   </tr>   <tr>     <td>Endereço de correio electronico :</td>     <td><label for="email"></label>       <input type="email" name="email" id="email" size="40" />*</td>   </tr>   <tr>     <td colspan="2"><strong>* Campo de preenchimento obrigatorio</strong></td>     </tr>   <tr>     <td align="right"><input type="submit" name="registar" id="registar" value="Registar" /></td>     <td align="center"><input name="apagar" type="reset" value="Apagar" /></td>   </tr> </table> </form>   </body>

0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 260
Sexo: Masculino

formulario e tratamento do mesmo na mesma pag php

05-06-2014 11:36

esqueci de referenciar qual a linha 32....
31 | ....

32 | $sql = "SELECT * FROM utilizadores WHERE nome_utilizador ='".$_POST['$nickname']."' ";

33 | ...
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17673
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

formulario e tratamento do mesmo na mesma pag php

05-06-2014 12:37

O correto seria

$sql = "SELECT * FROM utilizadores WHERE nome_utilizador ='".$_POST['nickname']."' "; 

Sem o uso do cifrão.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 260
Sexo: Masculino

formulario e tratamento do mesmo na mesma pag php  #resolvido

06-06-2014 11:03

Está resolvido, muito obrigado pela sua paciencia e ajuda , a lei da gratidão tem retorno ! :)
0

Quem está online

Usuários navegando neste fórum: Bluebird