Ir para conteúdo

POWERED BY:

Arquivado

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

Leonardo Peixoto

[Resolvido] Problema para armazenar variável dentro do input

Recommended Posts

Preciso de ajuda, quando eu faça as validações do formulário, por exemplo: informa a senha, não fica gravado o dado no formulário de cima, tipo nome.

 

Já tentei colocar value="<?php echo $nome ?> dentro do value mas ai aparece:

<br /><b>Notice</b>:  Undefined variable: nome in <b>C:\xampp\htdocs\site\cadastro.php</b> on line <b>18</b><br />

 

Alguém sabe como resolver ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É uma coisa simples mas não estou conseguido. Só preciso que quando eu clicar em cadastrar e o campo senha estiver vazio ai me apresente a validação "Informe senha" mas sem sumir o valor do campo anterior.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se "nome" for o valor do atributo 'name' do campo, então ele está armazenado em $_POST['nome'] ou $_GET['nome'], a depender se seu formulário é submetido via POST ou GET.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que vocês não entenderam, vizualizem:

 

Eu possuo um formulário onde tem varios campos, suponhamos ter preenchido os 5° primeiros campos do formulário sem ter preenchido o próximo e clico no botão cadastrar, ai me vem as validações, porém os campos que estavam corretos ficam vazios.

 

Gostaria de saber como faço para solucionar isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, acho melhor você postar o código desse arquivo cadastro.php para que possamos analisar e ver onde está o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok amigo, o código completo está logo abaixo, só preciso que quando o usuário deixar de preencher um campo, por exemplo o 4° campo, os anteriores fiquem com seus valores dentro.

 

<?php

include "config.php";

$nome = $_POST['nome'];
$email = $_POST['email'];
$email2 = $_POST['email2'];
$dia = $_POST['dia'];
$mes = $_POST['mes'];
$ano = $_POST['ano'];
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
$senha2 = $_POST['senha2'];

if(!$nome){

echo "Informe seu nome completo !";
include "cadastro.php";

}

else if(!$email){

echo "Informe seu email !";
include "cadastro.php";

}

else if(!$email2){

echo "Confirme seu email !";
include "cadastro.php";

}

else if ($email != $email2){

echo "Os emails não conferem";
include "cadastro.php";

}

else if($dia == "Dia"){

echo "Informe seu dia de nascimento";
include "cadastro.php";

}

else if($mes == "mes"){

echo "Informe seu mês de nascimento";
include "cadastro.php";

}

else if($ano == "ano"){

echo "Informe seu ano de nascimento";
include "cadastro.php";

}

else if(!$usuario){

echo "Escolha um nome de usuário !";
include "cadastro.php";

}

else if(!$senha){

echo "Informe uma senha";
include "cadastro.php";

}

else if(!$senha2){

echo "Confirme a senha";
include "cadastro.php";

}

else if($senha != $senha2){

echo "As senhas não conferem";
include "cadastro.php";

}

else{

$consulta_email = mysql_query("SELECT COUNT(id) FROM usuarios WHERE email='$email'"); // verificação do email

$verifica1 = mysql_fetch_array($consulta_email);

$consulta_email = $verifica1[0];


$consulta_usuario = mysql_query("SELECT COUNT(id) FROM usuarios WHERE usuario='$usuario'");

$verifica2 = mysql_fetch_array($consulta_usuario);

$consulta_usuario = $verifica2[0];


if($consulta_email > 0){

echo "Este email já está cadastrado";
include "cadastro.php";

}



else if($consulta_usuario > 0){

echo "Este usuario já está cadastrado";
include "cadastro.php";

}

else{

$senha = crypt(MD5('$senha'));

$inserir = mysql_query("INSERT INTO usuarios (nome, email, dia, mes, ano, usuario, senha, data_cadastro) Values ('$nome', '$email', '$dia', '$mes', '$ano', '$usuario', '$senha', now())");

echo "Usuário Cadastrado com sucesso !";
include "cadastro.php";

}

}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpe desviar o assunto, mas você não quer aprender a fazer de uma forma melhor?

digo isso porque está terrivelmnte mal escrito o código acima...

Compartilhar este post


Link para o post
Compartilhar em outros sites

#9

Não fiz reclamação alguma.

Estou apenas pedindo licensa ao autor do tópico para oferecer ajuda, a qual mudará completamente o que ele já está fazendo.

Por vezes não é conveniente modificar tudo, por isso, pedi licensa também para evitar perder tempo mostrando algo que por ventura não seja do interesse do autor do tópico.

 

 

off

 

 

1. já que tocou no assunto, qual a sua sugestão para ajudar, ou veio aqui só pra reclamar?

2.

hinom

Posts:12869

Cadastrado:25 Fev 2003 - 04:39

<>

ArmandoTL

Posts:9

Cadastrado:19 Ago 2011 - 17:21

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

#9

Não fiz reclamação alguma.

Estou apenas pedindo licensa ao autor do tópico para oferecer ajuda, a qual mudará completamente o que ele já está fazendo.

Por vezes não é conveniente modificar tudo, por isso, pedi licensa também para evitar perder tempo mostrando algo que por ventura não seja do interesse do autor do tópico.

 

 

off

 

 

1. já que tocou no assunto, qual a sua sugestão para ajudar, ou veio aqui só pra reclamar?

2.

 

<>

 

 

 

 

Me desculpe e que o Firefox ta com bug entao alem de ta sem abnt2 no firefox, estou com problemas com abas me desculpe ehehe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hihom, agradeço pela ajuda, mas eu ja sei fazer de outras formas e no momento estou usando está apenas para testes, mas eu só quero saber uma coisa simples ... que poderia ter resolvido na primeira resposta se ninguém tivesse desviado o assunto.

 

Se você souber responder minha dúvida agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na primeira resposta, do vinicius, eu responderia da mesma forma... na sequencia você explicou melhor o que ocorre e até que chegou ao post # 8 onde você mostra como está o código..

 

Não havia possibilidade alguma de alguém dar uma resposta exata para algo vago..

 

Com os seus posts #4 e #8 ficou bem claro.

 

Resolvi sugerir refazer todo esse script porque está completamente redundante e inviável fazer o que pretende.

 

sugestão

<?php

include "config.php";

$fields = array('nome', 'email', 'email2', 'dia', 'mes', 'ano', 'usuario', 'senha', 'senha2');

foreach( $fields as $v )
{
   if( isset( $_POST[$v] ) )
   {
       $$v = trim( $_POST[$v] );
   }
}

 

Somente isso já reduz e corrige mais de 60% do script original.

 

e aí ? quer aprender a consertar o restante ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Hihom quero sim, todo conhecimento é bem vindo, mas só me responda uma coisa: Esse script que montou é o que substitui o resgate das variáveis no form ? e se sim, não entendi o que vai fazer a variável ficar armazenada dentro do form após a validação.

 

Estou à disposição para o aprendizado :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

exemplo baseado no script sugerido.

 

não modifiquei a parte do SQL para que você entenda os passos.

 

faltam diversos pontos importantes, como por exemplo, validar as entradas.

 

tamanho mínimo

tamaho máximo

letra, número, numero mínimo, número máximo

formato da string (validar formato do email, por exemplo)

 

antes de montar o SQL, remover possíveis injeções.. do jeito que está feito, permite injeções SQL..

 

 

 

<?php

include "config.php";

$fields = array('nome', 'email', 'email2', 'dia', 'mes', 'ano', 'usuario', 'senha', 'senha2');

   foreach( $fields as $v )
   {
       if( isset( $_POST[$v] ) )
       {
           $$v = trim( $_POST[$v] );

           if( empty($$v) )
           {
              $error[$v] = 'Favor preencher o campo';
           }else{
               switch($v)
               {
                   case 'email2':
                       if( $email != $email2 )
                       {
                           $error[$v] = 'Os emails não conferem';
                       }
                   break;
               }
           }
       }else{
           $$v = false;
       }


   }


if( isset($_POST) )
{
   if( !isset( $error ) )
   {
       $consulta_email = mysql_query("SELECT COUNT(id) FROM usuarios WHERE email='$email' LIMIT 1"); // verificação do email
       $verifica1 = mysql_fetch_array($consulta_email);
       $consulta_email = $verifica1[0];
       $consulta_usuario = mysql_query("SELECT COUNT(id) FROM usuarios WHERE usuario='$usuario' LIMIT 1");
       $verifica2 = mysql_fetch_array($consulta_usuario);
       $consulta_usuario = $verifica2[0];


       if($consulta_email > 0)
       {
           $error['email'] = "Este email já está cadastrado";
       }else if($consulta_usuario > 0){
           $error['usuario'] = "Este usuario já está cadastrado";
       }
   }


   if( !isset( $error ) )
   {
       $senha = crypt(MD5('$senha'));

       $inserir = mysql_query("INSERT INTO usuarios (nome, email, dia, mes, ano, usuario, senha, data_cadastro) values ('$nome', '$email', '$dia', '$mes', '$ano', '$usuario', '$senha', now())");

       $final_message = "Usuário Cadastrado com sucesso !";
   }
}

include "cadastro.php";
?>

 

 

no formulário, abaixo de cada campo, coloque a condicional para exibir a mensagens de erro, caso existam. Exemplo, o campo 'email':

 

<?php $f = 'email';?>
<input type="text" value="<?php echo $$f;?>">
<?php if( isset($error[$f]) ){ echo '<br />' .$error[$f]; }?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Melhor... faça o seguinte:

 

$nome = trim($_POST['nome']);
$email = trim($_POST['email']);
$email2 = $_POST['email2'];
$dia = $_POST['dia'];
$mes = $_POST['mes'];
$ano = $_POST['ano'];
$usuario = trim($_POST['usuario']);
$senha = trim($_POST['senha']);
$senha2 = trim($_POST['senha2']);

$erros = array();

if(!isset($nome) || empty($nome))
{
    $erros[] = 'Informe seu nome completo.';
}

if(!isset($email) || empty($email))
{
    $erros[] = 'Informe um email.';
}

if(!isset($email2) || empty($email2))
{
    $erros[] = 'Digite a confirmação de email.';
}

if($email != $email2)
{
    $erros[] = 'O primeiro email não coincide com o segundo email digitado.';
}

if(!isset($dia) || empty($dia))
{
    $erros[] = 'Digite o dia do seu nascimento.';
}

if(!isset($mes) || empty($mes))
{
    $erros[] = 'Digite o mês do seu nascimento.';
}

if(!isset($ano) || empty($ano))
{
    $erros[] = 'Digite o ano do seu nascimento.';
}

if(!isset($usuario) || empty($usuario))
{
    $erros[] = 'Digite um nome de usuário';
}

if(!isset($senha) || empty($senha))
{
    $erros[] = 'Digite uma senha.';
}

if(!isset($senha2) || empty($senha2))
{
    $erros[] = 'Digite a confirmação da senha.';
}

if($senha != $senha2)
{
    $erros[] = 'A primeira senha não coincide com a segunda senha digitada.';
}

// se quiser, faça mais verificações, como validação de email, usuários com apenas caracteres comuns e etc.

if(count($erros) == 0)
{
    função para inserir no banco de dados, ou qualquer coisa...
}

if(count($errors) > 0)
{
    echo '<b>Erros encontrados!</b><br>';
    foreach($errors as $erro)
    {
         echo "<li>$erro</li>";
    }
}

 

 

Outra coisa que vi, você colocou a variável $senha pra encriptar dentro de aspas simples. Não vai funcionar. Ou você retira as aspas, ou põe aspas duplas. O resto eu passei uma vista rápida, só reparei este erro. Boa sorte ;)

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.