Jump to content


Photo

Como Não Deixar Repetir Dados No Mysql?


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

#1 kenshinhimura

kenshinhimura

    Turista

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

Posted 24/02/2004, 03:22

Olá, estou tentando fazer um cadastro de pessoas mas esbarrei com 2 probleminhas...
1º - Quando tento colocar 2 logins idênticos o MySQL aceita....o q faço para ele banir?
2º - Como eu poderia fazer(procedimentos ou dicas) para fazer com q o script veja se o CEP digitado pela pessoa existe??

Ahhhhh! Obrigado pessoal por me escutarem,! Me ajudem, please!! :blink: :blink: :wacko: :wacko: :) :)

#2 Cristiano Galdino

Cristiano Galdino

    Dark Defender

  • Administradores
  • 3738 posts
  • Sexo:Masculino
  • Localidade:Brasília, DF

Posted 24/02/2004, 03:31

Na hora de adicionar os dados no BD você faz uma verificação antes:

<?
// conexão
$query = "SELECT * FROM tabela WHERE campo = '$campo'";
$result = mysql_query($query, $connection);

if (mysql_num_rows($result) == "")
{
// envia os dados pro BD
}
else
{
// mensagem que já existe um user com esse nome
}
?>


Entendeu?
Cristiano Galdino
- http://cristiano.galdino.net/

“Since 2003”


#3 kenshinhimura

kenshinhimura

    Turista

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

Posted 24/02/2004, 04:01

Eu num consegui!!! :(
Eu devo colocar este código junto com o script que vai inserir os dados ou em outro q depois vão serer repassados? Veja abaixo como eu fiz no código inserir.php....

<?php

$sql = "INSERT INTO userdb (username, password, nome, email, endereco, numero,
cidade, estado, cep, telefone) VALUES ('$username', '$password', '$nome', '$email', '$endereco', '$numero','$cidade', '$estado', '$cep', '$telefone')";

//Mysql

$conexao = mysql_connect("localhost", "root", "")
or die ("Configuração de Banco de Dados Errada!");

$query = "SELECT * FROM userdb WHERE campo = '$ID'";
$query = "SELECT * FROM userdb WHERE campo = '$username'";
$query = "SELECT * FROM userdb WHERE campo = '$nome'";
$query = "SELECT * FROM userdb WHERE campo = '$email'";

//Inserindo os dados

if (mysql_num_rows($result) == "")
{
// envia os dados pro BD
}
else
{
// mensagem que já existe um user com esse nome
}

//Substitua os valores acima caso não esteje de acordo com sua máquina
//Selecionando o banco de dados...

$db = mysql_select_db("teste")
or die ("Banco de Dados Inexistente!");

$sql = mysql_query($sql)
or die ("Houve erro na gravação dos dados, por favor, clique em voltar e verifique os campos obrigatórios!");

echo "<h1>Cadastro efetuado com sucesso!</h1>";

?>


Tá errado? Ajudem um pobre aprendiz, pliz! :( :( (y) (y)

Edição feita por: kenshinhimura, 24/02/2004, 04:02.


#4 LucasMS

LucasMS

    Super Veterano

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

Posted 24/02/2004, 08:16

tenta substituir essa parte
$query = "SELECT * FROM userdb WHERE campo = '$ID'";
$query = "SELECT * FROM userdb WHERE campo = '$username'";
$query = "SELECT * FROM userdb WHERE campo = '$nome'";
$query = "SELECT * FROM userdb WHERE campo = '$email'";
por
$query = "SELECT * FROM userdb WHERE username = '$username AND nome = '$nome' AND email = '$email'";
acredito q assim funcionara

#5 Sabaote

Sabaote

    12 Horas

  • Usuários
  • 163 posts
  • Sexo:Não informado
  • Localidade:Ribeirão Preto
  • Interesses:PHP/MySQL/CGi/Inglês/Fireworks/Photoshop/Corel

Posted 24/02/2004, 08:29

$query = "SELECT * FROM userdb WHERE username = '$username' AND nome = '$nome' AND email = '$email'";


tava faltando um ' ali depois de $username.. só deu uma corrigida pra depois não dar erro.. fui..

_sABAOTE - _mATEUS
WebDeveloper Php

HostPower - O Poder da Tecnologia em Suas Mãos!
Inglês, Php, MySQL, CGi, Html, Fireworks, Corel, Photoshop
___Conhecimentos___

E-mail ::
mateus@hostpower.com.br
Icq :: 171106451
Site ::
buscalivre.com.br

#6 Klaus

Klaus

    @ ubuntu jaunty

  • Ex-Admins
  • 7924 posts
  • Sexo:Masculino
  • Localidade:127.0.0.1

Posted 24/02/2004, 08:31

Olá! :yes:

Você pode usar em conjunto, com os Scripts mostrados acima... Definir o campo "login" como chave-primária, o que não permitiria, dois registros iguais! :D
Klaus Paiva
Conheça também: Taperás

#7 kenshinhimura

kenshinhimura

    Turista

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

Posted 24/02/2004, 16:18

Ei pessoal, num deu certo naum! :( :( :(


<?php

//Vamos definir as variáveis de data e hora
//para inserção no banco de dados

//Agora com as variáveis de data e hora criadas
//vamos criar uma variável especial para a querie sql

$sql = "INSERT INTO userdb (username, password, nome, email, endereco, numero,
cidade, estado, cep, telefone) VALUES ('$username', '$password', '$nome', '$email', '$endereco', '$numero',
'$cidade', '$estado', '$cep', '$telefone')";

//Agora é hora de contatar o mysql

$conexao = mysql_connect("localhost", "root", "")
or die ("Configuração de Banco de Dados Errada!");

$query = "SELECT * FROM userdb WHERE username = '$username' AND nome = '$nome' AND email = '$email'";

//Inserindo os dados

if (mysql_num_rows($result) == "")
{
// envia os dados pro BD
}
else
{
// mensagem que já existe um user com esse nome
}

//Substitua os valores acima caso não esteje de acordo com sua máquina
//Selecionando o banco de dados...

$db = mysql_select_db("teste")
or die ("Banco de Dados Inexistente!");

$sql = mysql_query($sql)
or die ("Houve erro na gravação dos dados, por favor, clique em voltar e verifique os campos obrigatórios!");

echo "<h1>Cadastro efetuado com sucesso!</h1>";

?>



Deu erro na linha 22!!!


ajudem!!

Edição feita por: kenshinhimura, 24/02/2004, 19:42.


#8 thiagorsl

thiagorsl
  • Visitantes

Posted 24/02/2004, 21:47

acredito que por causa de não haver a var $result no mysql_num_rows e não coloca =="" coloca =="0" acho que assim funciona beleza

#9 luiz000

luiz000

    Expert

  • Banidos
  • PipPipPipPipPipPip
  • 530 posts
  • Sexo:Não informado

Posted 24/02/2004, 21:55

tenta esse codigo aki:

<?php

//Vamos definir as variáveis de data e hora
//para inserção no banco de dados

//Agora com as variáveis de data e hora criadas
//vamos criar uma variável especial para a querie sql

$sql = "INSERT INTO userdb (username, password, nome, email, endereco, numero,
cidade, estado, cep, telefone) VALUES ('$username', '$password', '$nome', '$email', '$endereco', '$numero',
'$cidade', '$estado', '$cep', '$telefone')";

//Agora é hora de contatar o mysql

$conexao = mysql_connect("localhost", "root", "")
or die ("Configuração de Banco de Dados Errada!");
$seleciona = mysql_select_db("db",$conexao);

$query = mysql_query("SELECT * FROM userdb WHERE username = '$username' AND nome = '$nome' AND email = '$email'");

//Inserindo os dados

if (mysql_num_rows($query) == "0")
{
$executa = mysql_query($sql);
if(!$executa) print "Erro ao tentar cadastrar!"; else print "Cadastro feito com sucesso";
}
else
{
print "JA existe alguem com este login";
}

?>

creio eu que assim vá funfar

Edição feita por: luiz000, 24/02/2004, 22:01.


#10 Kurt Cobain

Kurt Cobain
  • Visitantes

Posted 24/02/2004, 21:58

ae...
vc ta esquecendo de selecionar do db, dps de conectar!

mysql_select_db("db",$conexao);

(y)

#11 luiz000

luiz000

    Expert

  • Banidos
  • PipPipPipPipPipPip
  • 530 posts
  • Sexo:Não informado

Posted 24/02/2004, 22:04

muito bem observado ;) , valew pela observacao,
ja consertei la no post. :lol: :D :P

#12 Kurt Cobain

Kurt Cobain
  • Visitantes

Posted 24/02/2004, 22:52

Aeh.. pro db naum aceitar 2 usuarios com msm login e só vc colocar no comando de criar a tabela o UNIQUE no campo desejado.

"CREATE TABLE tabela (id int(10) auto_increment, login varchar(30) UNIQUE NOT NULL, PRIMARY KEY(id))";

Faça como eu fiz no campo login..... ele poderá só ter valor único....

Axo q isso resolve seu problema, vê se é isso msm :)
(y)

#13 kenshinhimura

kenshinhimura

    Turista

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

Posted 25/02/2004, 05:01

Olá pessoal!
Aquilo que vocês me ensinaram funcionou!! :) Mas só pela mentade....:'(
O problema é que quando a gente manda inserir as coisas no formulário aparece dizendo o erro só que mesmo assim o mysql aceita os dados!! Que queu faço??HelP!
Nem o onique num adiantou....:(

Thankz!!
Cya!

gaara

Edição feita por: kenshinhimura, 25/02/2004, 05:10.


#14 thiagorsl

thiagorsl
  • Visitantes

Posted 25/02/2004, 12:00

muda a esse a var $query para $query="SELECT * FROM userdb WHERE username = '$username' ";

#15 kenshinhimura

kenshinhimura

    Turista

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

Posted 25/02/2004, 17:06

Num é o q tah naum??

$query="SELECT * FROM userdb WHERE username = '$username'

no codigo acima?




0 user(s) are reading this topic

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

IPB Skin By Virteq