Jump to content


Photo

Painel De Adm


  • Faça o login para participar
12 replies to this topic

#1 -|- Cold Heart -|-

-|- Cold Heart -|-

    *** MaDe In HeLL ***

  • Usuários
  • 260 posts
  • Sexo:Não informado
  • Interesses:Guitarras<br>Músicas<br>Web

Posted 25/03/2008, 11:33

Olá galera!

Bem, eu fiz um sistema de cadastro de usuários, legalzinho e tals, com validação e um painel admin...
Qdo a pessoa se cadastra, o code faz uma checagem assim:

<?
$select = "SELECT nick, email FROM users WHERE nick='$nick' OR email='$email'";
$sql_sel = mysql_query($select) or die ("Não foi possível fazer a busca no banco de dados");
$sql_count = mysql_num_rows($sql_sel);
if ($sql_count != 0){
  $sql_check = mysql_fetch_array($sql_sel);
  if ($sql_check["nick"] == "$nick"){
	$erro = "Esse nick já está sendo utilizado, por favor escolha outro";
  } elseif ($sql_check["email"] == "$email"){
	$erro = "Esse e-mail já está cadastrado<br>em nosso sistema!<br>Contate o webmaster do site";
  }
}
?>

Então, se o nick ou o e-mail jah estiverem cadastrados, ele retorna um erro...

Agora, no painel do admin, eu tenho a opção de modificar os dados dos usuários, e eu precisava fazer uma checagem do msm tipo, pra q o admin naum mude um nick ou um e-mail para igual um já existente, o problema eh q naum estou conseguindo construir a lógica da coisa... ele precisa ver se eu modifiquei, e SE eu modifiquei comparar pra ver se já não existe, mas aí cai na parte de fzr a lógica da coisa...

Se alguém puder ajudar, agradeço!
Abraços!
### Fender Vs. Gibson ###

#2 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 25/03/2008, 14:44

O basicão seria:

O email/login/nick que o admin postar no form, você faz a mesma verificação que está fazendo atualmente, se retornar resultado a query com o nick ou com esse email, ele retorna o erro, e se não tiver resultado, aí sim você faria o UPDATE.
Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#3 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 25/03/2008, 17:54

dá pra fazer algo assim:

$sql = "SELECT * FROM usuarios WHERE login = '$usuario' AND email = '$email' AND id <> ".$id; // Aqui faz a busca, se achar algum usuário com o mesmo login, ele vai bloquear...
$con = mysql_query($sql);

if(mysql_num_rows($con) > 0){

echo "Já existe um usuário com este login."; // essa é a mensagem de erro caso exista alguem

}else{ // caso nao exista problemas, ele faz o update!

$sql = "UPDATE usuarios SET nome = 'nome', login = 'login', senha = 'senha', email = 'email'";

sacou? :P

Edição feita por: maykel, 25/03/2008, 17:55.

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#4 -|- Cold Heart -|-

-|- Cold Heart -|-

    *** MaDe In HeLL ***

  • Usuários
  • 260 posts
  • Sexo:Não informado
  • Interesses:Guitarras<br>Músicas<br>Web

Posted 26/03/2008, 11:02

Como ele tem q checar se o nick ou mail jah estão cadastrados, independente de estarem no msm registro ou naum, eu usei o OR:

<?
$select = "SELECT nick, email FROM users WHERE nick='$nick' OR email='$email'";
$sql_sel = mysql_query($select) or die ("Não foi possível fazer a busca no banco de dados");
$sql_count = mysql_num_rows($sql_sel);
if ($sql_count > 1){
  $sql_check = mysql_fetch_array($sql_sel);
  if ($sql_check["nick"] == "$nick"){
	$erro = "Esse nick já está sendo utilizado";
  } elseif ($sql_check["email"] == "$email"){
	$erro = "Esse e-mail já está cadastrado<br>em nosso sistema";
  }
}
?>

Confiram no link http://www.rudgesbc....to/users/admin/

login: kaueporte senha:12345

Ele funciona certinho com os registros, só da erro no de ID 1!
Ele inverte... se coloco um nick q jah existe, ele diz q o problema eh o e-mail, se coloca o e-mail, ele diz q eh o nick... nos outros registros funciona normal...

Tem alguma incoerência no meu code =/

[]'s
### Fender Vs. Gibson ###

#5 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 26/03/2008, 13:16

tente ao invés de OR usar AND, com OR a lógica já fica meio estranha, nunca usei OR!

SELECT nick, email FROM users WHERE nick='$nick' OR email='$email'

SELECIONA nick e email VINDO de users ONDE nick é = nick postado OU email é = email? tem que fazer os 2, não fazer OU!
SELECIONA nick e email VINDO de users ONDE nick é = nick postado E email é = email...

ou seja

SELECT nick, email FROM users WHERE nick='$nick' AND email='$email'

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#6 -|- Cold Heart -|-

-|- Cold Heart -|-

    *** MaDe In HeLL ***

  • Usuários
  • 260 posts
  • Sexo:Não informado
  • Interesses:Guitarras<br>Músicas<br>Web

Posted 26/03/2008, 13:36

Mudei... agora ele passa reto... naum inverte, simplesmente naum checa... pq aí ele tah buscando UM user q tenha tal nick E tal mail... e naum o nick OU o mail, independente ser ou naum no msm registro
### Fender Vs. Gibson ###

#7 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 26/03/2008, 13:49

verdade, pensei meio por cima, perdão!

tem como você dar um echo no SQL pra ver o que ele ta trazendo no SQL pra gente ver? :)

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#8 DarkSign

DarkSign

    Doutor

  • Usuários
  • 868 posts
  • Sexo:Masculino
  • Localidade:Brasil
  • Interesses:Tecnologias na área WEB em geral e desenvolvimento.

Posted 26/03/2008, 13:51

Faz simplesmente um IF. Como o if é linear, ou seja, executa um teste depois do outro, ele n inverterá a ordem. Primeiro, tu faz um select só pra saber do nick, ae tu faz um if, se encontrou, passa pro resto do script, se n encontrou, faz outro select, dessa vez procurando o email. Faz um IF, de novo, se encontrou, resto do script, se n encontrou, msg de erro.

/*DarkSign*/
Não sabe por onde começar? Que tal pelas Regras ?

#9 -|- Cold Heart -|-

-|- Cold Heart -|-

    *** MaDe In HeLL ***

  • Usuários
  • 260 posts
  • Sexo:Não informado
  • Interesses:Guitarras<br>Músicas<br>Web

Posted 26/03/2008, 14:37

Aí esbarramos em outro problema hahahahaha...

Por exemplo, temos o nick e o mail: nick1 c/ mail1 e nick2 c/ mail2...

Se no select eu falar pra ele dar erro se a contagem for maior q um, naum dah certo pq só vai ter um igual, entao vai passar batido... ex:

nick1 e mail1 [passando pra] nick1 e mail2... no banco ele vai axar UM mail2... então, passa batido... msm coisa se mudar o nick...

Se eu colocar = 1 ou >=1 ele esbarra nele msm...

nick1 e mail1 [passando pra] nick1 e mail2... ele vai esbarra no NICK q naum foi modificado, axando ele próprio no bd... q eh = 1... hehehehe

É mais complicado do q parece...

Hahahahaha xxxxxx q pariu, consegui! Dei mow nó aqui!

Se alguém suber um meio mais prático pra isso, POR FAVO AVISE!
Mas eu fiz o seguinte, pego o id do usuário, puxo nick e mail cadastrados no db... se o nick passado for diferente do registrado, ele faz a busca pra ver c naum tem um jah igual, e com o mail a msm coisa...

Tá aí o code:

<?
$select = "SELECT * FROM users WHERE id='$id'";
$sql_sel = mysql_query($select) or die ("Não foi possível fazer a busca no banco de dados");
$sql_check = mysql_fetch_array($sql_sel);
if ($sql_check["nick"] != "$nick"){
  $select_nick = "SELECT nick FROM users WHERE nick='$nick'";
  $sql_sel_nick = mysql_query($select_nick) or die ("Não foi possível fazer a busca no banco de dados");
  $sql_count_nick = mysql_num_rows($sql_sel_nick);
  if ($sql_count_nick >= 1){
	$erro = "Esse nick já está sendo utilizado";
  } 
} elseif ($sql_check["email"] != "$email"){
  $select_mail = "SELECT email FROM users WHERE email='$email'";
  $sql_sel_mail = mysql_query($select_mail) or die ("Não foi possível fazer a busca no banco de dados");
  $sql_count_mail = mysql_num_rows($sql_sel_mail);
  if ($sql_count_mail >= 1){
	$erro = "Esse e-mail já está cadastrado<br>em nosso sistema";
  }
}
?>

Vlew a galera q ajudou!
[]'s
### Fender Vs. Gibson ###

#10 DarkSign

DarkSign

    Doutor

  • Usuários
  • 868 posts
  • Sexo:Masculino
  • Localidade:Brasil
  • Interesses:Tecnologias na área WEB em geral e desenvolvimento.

Posted 26/03/2008, 14:49

Haeauhauheau, mas foi utilizando IFs xD.

/*DarkSign*/
Não sabe por onde começar? Que tal pelas Regras ?

#11 -|- Cold Heart -|-

-|- Cold Heart -|-

    *** MaDe In HeLL ***

  • Usuários
  • 260 posts
  • Sexo:Não informado
  • Interesses:Guitarras<br>Músicas<br>Web

Posted 26/03/2008, 15:01

Sim hehehehe mas ficou uma baita checagem... mas pelo menos funcional!
### Fender Vs. Gibson ###

#12 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 26/03/2008, 15:41

desculpe pela minha ineficiencia na ajuda cara, heheh, eu tou no trabalho e as vezes nao consigo pegar o código pra testar, aí só dou uma analisada no que postaram e tento fazer a lógica de cabeça :wacko:

mas que bom que deu certo (y)

Abraços!

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#13 Tohma

Tohma

    12 Horas

  • Usuários
  • 202 posts
  • Sexo:Masculino
  • Localidade:Curitiba

Posted 26/03/2008, 19:56

Como ele tem q checar se o nick ou mail jah estão cadastrados, independente de estarem no msm registro ou naum, eu usei o OR:

<?
$select = "SELECT nick, email FROM users WHERE nick='$nick' OR email='$email'";
$sql_sel = mysql_query($select) or die ("Não foi possível fazer a busca no banco de dados");
$sql_count = mysql_num_rows($sql_sel);
if ($sql_count > 1){
  $sql_check = mysql_fetch_array($sql_sel);
  if ($sql_check["nick"] == "$nick"){
	$erro = "Esse nick já está sendo utilizado";
  } elseif ($sql_check["email"] == "$email"){
	$erro = "Esse e-mail já está cadastrado<br>em nosso sistema";
  }
}
?>

Confiram no link http://www.rudgesbc....to/users/admin/

login: kaueporte senha:12345

Ele funciona certinho com os registros, só da erro no de ID 1!
Ele inverte... se coloco um nick q jah existe, ele diz q o problema eh o e-mail, se coloca o e-mail, ele diz q eh o nick... nos outros registros funciona normal...

Tem alguma incoerência no meu code =/

[]'s


Cara , tenta deixar o count > 0 e não maior que 1 ... assim ele naum da erro no primeiro registro

flw
DBPlex dbplex.com.br




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq