Ir para conteúdo
Fórum Script Brasil
  • 0

Validação De Formulário Em Php


Guest Willian-master

Pergunta

Guest Willian-master

olá. Eu tenho uma conta aqui no forum mais como o forum demora muito para fazer o login e redirecionar eu não tenho esse tempo.

É assim:

Eu quero fazer um cadastro em php mais antes tem que checar se o usuário já existe no mysql. Esse é o problema.

Eu tentei javascript e php mais nada funciona.

Quando uso o if dentro do while da chamada ao banco. a mensagem de checagem aparece ao usuário centenas de vezes, eu queria que aparece-se somente uma vez.

Aqui o script.

$sql = "SELECT * FROM cadastro ORDER BY id DESC";

$resultado = mysql_query($sql) or die (mysql_error());

while ($puxa=mysql_fetch_array($resultado)){

$id = $puxa["id"];

$nome = $puxa["nome"];

$login = $puxa["login"];

$email = $puxa["email"];

$senha = $puxa["senha"];

$name = "$_GET[nome]";

$logar = "$_GET[login]";

if($nome == $name){

echo "nome em uso";

}

else

{

echo"";

}

if($login == $logar){

echo "Login em uso";

}

else

{

echo"";

}

}

a conexão e o selecionamento do banco está correto, eu não coloquei para não perder tempo.

Então.

A checagem é feita no BD, mais quando aparece à mensagem de login em uso, aparece mais de 20 vezes como se foçe um loop. De fato é um loop mais o loop do BD.

Seu eu fechar o loop while do banco de dados, a checagem não acontece.

Eu tentei usar o for mais também não fuciona alguém, pode mim dar uima ajuda ai?

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

Isso acontence por que você manda imprimir na tela cada vez que ele verifica a ocorrência:

if($nome == $name){

echo "nome em uso";

}

Guarde numa variavel e depois pegunte se ela é verdadeira, se for exiba a msg.

if($nome == $name) $erro = true;


...

} /// depois do while

if($erro) echo "em uso!";

Link para o comentário
Compartilhar em outros sites

  • 0

Por que você simplesmente não joga tudo na query, conta a quantidade de resultado... se vier mais que zero já tem cadastro tipo...

<?php
$name = "$_GET[nome]";
$logar = "$_GET[login]";

$sql = mysql_query("SELECT * FROM cadastro WHERE nome = '$name' AND login = '$logar' ORDER BY id DESC");
$conta = mysql_num_rows($sql);
if ($conta >= 1){echo "JÁ TEM GENTE CADASTRADA ASSIM";}else{
//Aqui vai ser o $conta == 0, logo se não retornar nenhum resultado..
}
?>

Link para o comentário
Compartilhar em outros sites

  • 0

Tem certeza?

A linha:

$sql = mysql_query("SELECT * FROM cadastro WHERE nome = '$name' AND login = '$logar' ORDER BY id DESC");

Valida tudo de uma vez, logo não vai aparecer uma mensagem diferente para cada coisa... e só vai retornar alguma coisa se nome E login (concomitantemente forem encontrados)...

Link para o comentário
Compartilhar em outros sites

  • 0

Usando o exemplo do searching_, eu colocaria um break após a mensagem de "usuário em uso" em vez de criar a variável erro.

Mas eu ainda acho mais correto e eficiente usar um campo com Chave ùnica e fazer a inserção diretamente, sem verificação. Se a consulta falhar e o erro do MySQL for 1062 (Duplicate Entry), é porque já existe o usuário, daí você retorna o erro. Isso deixa o sistema mais rápdo, pois não precisa fazer select. ;)

Abraços,

Beraldo

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Willian-Master

Tenho certeza sim.

Só valida o nome quando coloco um nome que já existe no bd ele valida, quando coloco um nome que não tem mais um login que tem, não aparce nada. a página fica em branco. ou seja não valida.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Willian-Master

beraldo.

eu tenho 50 cadastro todos com nome willian e com login admin, e em nehum acusou erro de duplicação.

Talves meu futuro não seja ser webmaster, eu sempre topo com essas paradas de mysql.

o que mim dexa puto, é que com todo mundo funciona e comigo não. eu fico puto pra cara...

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, não é por aí não.

As vezes as coisas não dão certo mas ponha uma coisa na cabeça ninguém sabe de tudo, ninguém ignora tudo. Todos aprendemos sempre. (alguém disso isso). Então pare. Recomece. Não deu certo? Pare novamente. Volte ao início e tente mais uma vez. Quantas forem necessárias. Isso é o tipo de coisa que acontece em tudo na vida, não é só quando agente tá programando.

Bom, saindo da seção auto-ajuda, faça um teste.

O E_Serra mostrou a consulta.

$sql = mysql_query("SELECT * FROM cadastro WHERE nome = '$name' AND login = '$logar' ORDER BY id DESC");
Porém as aspas simples das variaveis podem está fazendo as mesmas não serem reconhecidas. Você pode concatenar as variaveis, talvez faça funcionar
$sql = mysql_query("SELECT * FROM cadastro WHERE nome = '".$name."' AND login = '".$logar."' ORDER BY id DESC");
Consulte no banco registros com o nome willan e login admin e depois pergunte se existe mais de um. Caso exista você sabe que a consulta que está correta.
$sql = mysql_query("SELECT * FROM cadastro WHERE nome = '".$name."' AND login = '".$logar."' ORDER BY id DESC");
if(mysql_num_rows($sql) != 0) echo "Já existe um usuário com esse nome!";

A Partir daí acho que fica mais fácil. Abraço

Editado por searching_
Link para o comentário
Compartilhar em outros sites

  • 0
Porém as aspas simples das variaveis podem está fazendo as mesmas não serem reconhecidas. Você pode concatenar as variaveis, talvez faça funcionar

Não... no PHP os apóstrofos realmente fazem uma variável ser interpretada literalamente (num echo por exemplo), mas o mysql é diferente, inclusive os exemplos que existem no manual trazem as variáveis dentro de apóstrofos...

Link para o comentário
Compartilhar em outros sites

  • 0
Porém as aspas simples das variaveis podem está fazendo as mesmas não serem reconhecidas. Você pode concatenar as variaveis, talvez faça funcionar

Não... no PHP os apóstrofos realmente fazem uma variável ser interpretada literalamente (num echo por exemplo), mas o mysql é diferente, inclusive os exemplos que existem no manual trazem as variáveis dentro de apóstrofos...

É verdade. O mysql consegue ler normalmente variaveis sem a concatenação. Perdão.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Willian-Master

NADA

a merma coisa. dessa vez nem o nome validou.

Eu coloquei willian. ai, apareceu a mensagem, mais quando coloquei willian e admin não aparceu nada.

Tentei colocar master e admin, não falou que o login já está cadastrado (tem mais de 50 cadastro com admin) depois tentei colocar nome willian com login abc, também não apareceu nada.

Amigo, tenho quase certeza que web master não é o que o destino quer.

Se deu certo com vocês, por quê não funciona comigo?

Se está tudo certo, por quê? so pode ser zinca num tem ota explicação.

Vo dexar pra lá, já é o 5 site que eu desisto por causa disso.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Willian-Master

Puxa vida

ALELUIA DEUUUUUUUUSSSSSs

IRmão, até agora deu certo teste com willian e login san diego.

funfo a validação do nome. testei san diego com login admin. funfou a validação do login. testei san diego com login abc, funfo a validação e não apareceu nada, por quê esses dados ainda não existe no bd.

Então agora funcionou num foi?

eu já cair tanto do cavalo com essas coisas que eu acho até que é momentânea.

IRMÃOS BRIGADO, COMO EU estou FAZENDO UM SITE POCO DIFISSIL, EU VO PRECISAR DA AJUDA DE VOCÊS, EU POR MAIS QUE ESTUDE NÃO TENHO NEHUM CONHECIMENTO EM PHP.

E OLHA QUE JÁ LÍ DUAS VEZES O SITE DO PHP.NET

VALEU.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...