Ir para conteúdo

POWERED BY:

Arquivado

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

girotto000

Problemas com formulário de criação de conta

Recommended Posts

Boa noite.

Estou com 2 problemas referente a criacao de um formulario que cria uma conta num banco de dados.

O 1 é bem facil de se resolver, porém não estou conseguindo e não sei pq..

O erro é o seguinte: Notice: Undefined index: regras in C:\wamp\www\ragnarok\site\salvaregistro.php on line 47

 

Linha 47:

 

if(trim($_POST["regras"]) == "")

 

Isto está ocorrendo porque 'regras' é uma id de uma checkbox e não de um campo de texto, porém não sei arruamr essa função para pegar o valor de uma checkbox.

 

2 Problema:

O registro flui perfeitamente porém não cria a conta na database! Ele manda a mensagem de conta criada mas eu vou até a database e nada..

 

Código HTML:

 

 

 

<form name="form1" method="post" action="php.php" class="formulario">
<br />
<label for="login">Login:</label>
<input name="usuario" type="text" id="usuario" size="40" />
<p> </p>
<label for="senha">Senha:</label>
<input name="user_pass" type="password" id="user_pass" size="40" />
<p> </p>
<label for="cosenha">Confirmar Senha:</label>
<input name="co_user_pass" type="password" id="co_user_pass" size="35" />
<p> </p>
<label for="email">Email:</label>
<input name="email" type="text" id="email" size="45" />
<p> </p>
<label for="coemail">Confirmar Email:</label>
<input name="coemail" type="text" id="coemail" size="45" />
<p> </p>
<label for="aniver">Aniversário:</label>
<input type="text" name="birthdate" id="birthdate" />
<p> </p>
<label for="sexo">Sexo:</label>
<select name="sex" id="sex">
<option value="M">Masculino</option>
<option value="F">Feminino</option>
</select>
<p> </p>
<input type="checkbox" value="regras" id="regras"/> Estou ciente e irei cumprir as <a href="regras" target="_blank">Regras</a>
<br /><br /><br />
 
<input type="submit" name="Submit" value="Criar minha conta!" style="cursor:pointer;">
 
</form>

 

 

 

Código PHP:

 

 

 

<?php
session_start();
$conexao = mysqli_connect("localhost","root","wamp","ragnarok");
 
if(trim($_POST["usuario"]) == "")
{
echo "<div class='alert alert-danger' role='alert'>Por favor digite um Usuário!</div>";
exit(); 
}
 
if(trim($_POST["user_pass"]) == "")
{
echo "<div class='alert alert-danger' role='alert'>Por favor digite uma Senha!</div>";
exit(); 
} 
 
if($_POST["user_pass"] != $_POST["co_user_pass"])
{
echo "<div class='alert alert-danger' role='alert'>As senhas não conferem!</div>";
exit();
}
 
if($_POST["email"] != $_POST["coemail"])
{
echo "<div class='alert alert-danger' role='alert'>Os Emails não conferem!</div>";
exit();
}
 
if(trim($_POST["sex"]) == "")
{
echo "<div class='alert alert-danger' role='alert'>Por favor escolha um sexo!</div>";
exit(); 
}
 
if(trim($_POST["email"]) == "")
{
echo "<div class='alert alert-danger' role='alert'>Por favor digite um Email!</div>";
exit(); 
} 
 
if(trim($_POST["birthdate"]) == "")
{
echo "<div class='alert alert-danger' role='alert'>Por favor digite seu Aniversário!</div>";
exit(); 
} 
 
if(trim($_POST["regras"]) == "")
{
echo "<div class='alert alert-danger' role='alert'>Você deve concordar com as regras!</div>";
exit(); 
} 
 
 
$query = "SELECT * FROM `login` WHERE userid = '".trim($_POST['usuario'])."' ";
$resultado = mysqli_query($conexao, $query);
$campo = mysqli_fetch_array($resultado);
if($campo)
{
echo "<div class='alert alert-danger' role='alert'>Nome de usuário já existe!</div>";
}
else
{ 
 
$query = "INSERT INTO `login` (usuario,user_pass,sex,email,birthdate) VALUES ('".$_POST["usuario"]."','".$_POST["user_pass"]."','".$_POST["sex"]."' ,'".$_POST["email"]."','".$_POST["birthdate"]."') ";
$resultado = mysqli_query($conexao, $query);
 
$Uid = mysqli_insert_id($conexao);
echo "<div class='alert alert-success' role='alert'>Conta criada com sucesso!</div>"; 
 
 
}
 
mysqli_close($conexao);
?>

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

1.

$regras = isset($_POST["regras"]) ? trim($_POST["regras"]) : '';
if($regras == "")
você só usa uma posição de array se tem certeza de q ela existe.

 

2. descubra o motivo:

$resultado = mysqli_query($conexao, $query) or die(mysqli_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

1. Esse código eu colo antes para que o php analise a id?

 

2. Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\wamp\www\ragnarok\site\php.php on line 59

 

Linha 59:

 

$resultado = mysqli_query($conexao, $query) or die(mysqli_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. vc troca:

if(trim($_POST["regras"]) == "")
por:

$regras = isset($_POST["regras"]) ? trim($_POST["regras"]) : '';
if($regras == "")

2.

$resultado = mysqli_query($conexao, $query) or die(mysqli_error($conexao));

Compartilhar este post


Link para o post
Compartilhar em outros sites

2. Não existe a coluna usuário na tua tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

2. Não existe a coluna usuário na tua tabela.

Mas o comando SQL manda ele fazer a edição na coluna userid da tabela, não usuário

usuário é apenas a variável que vai pegar o userid do formulário. Não entendi porque retornou esse erro...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nomes das colunas :

 

(usuario,user_pass,---,email,birthdate)
existe a coluna usuário ? pois foi o que vc informou no teu sql.

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca um

 

echo '<pre>';
var_dump($_POST);
e posta aqui o resultado.

 

só para debugarmos e entendermos o que está vindo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Recebi isto:

 

 

array (size=7)
'usuario' => string 'user' (length=4)
'user_pass' => string 'senha' (length=9)
'co_user_pass' => string 'senha' (length=9)
'email' => string 'guiga741@hotmail.com' (length=20)
'coemail' => string 'guiga741@hotmail.com' (length=20)
'birthdate' => string 'aniversario' (length=11)
'---' => string 'M' (length=1)

Ele nem pega a checkbox de regras :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exato, pq o checkbox está sem o atributo name

 

<input type="checkbox" value="regras" name="regras" id="regras"/>
deixe o debug, e olhe com atenção ao teu if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exato, pq o checkbox está sem o atributo name

 

<input type="checkbox" value="regras" name="regras" id="regras"/>
deixe o debug, e olhe com atenção ao teu if

 

Mas indiferente, colocando ou não o atributo name no formulario, quando eu tento me registrar sem marcar a checkbox ele passa normal...

 

usando este código:

 

$regras = isset($_POST["regras"]) ? trim($_POST["regras"]) : '';
if($regras == "")

Compartilhar este post


Link para o post
Compartilhar em outros sites

É necessário o atributo name. Mantenha ele.

 

O erro agora deve estar no teu if e no exit();

Debugue e repense.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É necessário o atributo name. Mantenha ele.

 

O erro agora deve estar no teu if e no exit();

Debugue e repense.

Mas William não faz sentido!

Se eu uso o código:

 

if(trim($_POST["regras"]) == "")
	{
		echo "<div class='alert alert-danger' role='alert'>Você deve concordar com as regras!</div>";
		exit(); 
	} 
E tento prosseguir marcando a checkbox, ele registra.

Porém se eu não marcar, ele dá o erro (o que está 100% certo) PORÉM, ele manda esta mensagem junto:

 

Notice: Undefined index: regras in C:\wamp\www\ragnarok\site\salvaregistro.php on line 90

 

Ou seja o sistema funciona mas retorna um erro...

Ja tentei mudar de post para get mas dai o sistema para de funcionar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz assim:

 

if(!isset($_POST["regras"]))
faz sentido sim cara, é o comportamento do html.

Quando um checkbox não é marcado, ele não é enviado, por isso não existe o $_POST dele. E isso faz o php disparar o notice, por isso é necessário testar antes de usar.

 

o seu if q estava errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz assim:

 

if(!isset($_POST["regras"]))
faz sentido sim cara, é o comportamento do html.

Quando um checkbox não é marcado, ele não é enviado, por isso não existe o $_POST dele. E isso faz o php disparar o notice, por isso é necessário testar antes de usar.

 

o seu if q estava errado.

 

Perfeito agora está 100%...

Obrigado pelo suporte william ;)

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.