Ir para conteúdo

Arquivado

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

weidson

Verificar se registro ja existe no banco de dados

Recommended Posts

Desculpa se coloque o post no lugar errado mas nas minhas pesquisas não encontrei outro tópico que falasse sobre isso e tira-se Minha duvida! é o seguinte

Tenho um formulário com um select que puxa de tabela 1 o campo ‘nome’ e o outro puxa da tabela 2 o campo ‘titulo’ o que eu preciso é bem assim ! na minha tabela3 tem o id,nome e titulo preciso que no cadastro não se repita os dados ex:

Na tabela 1 temos no campo nome a,b,c

Na tabela 2 temos no campo titulo 1,2,3

O que não pode acontecer na tabela 3 é q eu cadastre (“nome=a titulo=1”) duas vezes mas podendo (“nome=a titulo=2”) e assim sucessivamente obg a todos pela ajuda desde já

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você precisa de índices únicos:

CREATE TABLE tabela1 (                                                          
  id mediumint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,                       
  nome varchar(20) NOT NULL UNIQUE,                                                
);                                                                                 
                                                                                   
CREATE TABLE tabela2 (                                                             
  id mediumint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,                       
  titulo varchar(20) NOT NULL UNIQUE,                                              
);                                                                                 
                                                                                   
CREATE TABLE tabela3 (                                                             
  id int unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,                             
  nome mediumint(8) unsigned NOT NULL,                                             
  titulo mediumint(8) unsigned NOT NULL,                                           
  UNIQUE KEY nome (nome,titulo),                                                   
  FOREIGN KEY (nome) REFERENCES tabela1 (id),                                      
  FOREIGN KEY (titulo) REFERENCES tabela2 (id)                                     
);

Se a tabela já exisitir, é uma linha só [inline]alter table tabela3 add unique key nome (nome, titulo);[/inline]

Compartilhar este post


Link para o post
Compartilhar em outros sites

formulario

 

<?php

$sql= mysql_query("SELECT * FROM tabela1 order by nome ")or die (mysql_error());

$sql1= mysql_query("SELECT * FROM tabela2 order by titulo ")or die (mysql_error());

?>

 

<label for="select"> Selecionar </label>

<select name="select">

<option>Selecionar..</option>

<?php while ( $query = mysql_fetch_array($sql)) { ?>

<option value="<?php echo $query['nome']; ?>"><?php echo $query['nome']; ?></option>

<?php } ?>

</select>

 

<label for="select"> Selecionar </label>

<select name="select2">

<option>Selecionar..</option>

<?php while ( $query1 = mysql_fetch_array($sql1)) { ?>

<option value="<?php echo $query1['titulo']; ?>"><?php echo $query1['titulo']; ?></option>

<?php } ?>

</select>

 

a funçao

 

<?php include "db.php";

$nome =$_POST['select'];

$titulo =$_POST['select2'];

 

$sql = mysql_query(" INSERT INTO tabela3 (nome,titulo) VALUES ('$nome’,’$titulo’) ");

 

if($sql ==1){echo "<script>

alert('Cadastrado com Sucesso!');

window.location.href = 'agenda.php';

</script>";}else {echo "<script>alert('Não foi possível Cadastrar, tente novamente.');history.go(-1) </script>";

};

 

mysql_close();

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu usei esse select mas nao esta verificando e ta cadastrando e permitindo a repetição

 

if (mysql_num_rows(mysql_query("SELECT nome,titulo FROM tabela3 WHERE nome= '$nome', titulo= '$titulo' ")) != 0) {
echo "Dados ja Existentes";
}
else {
/*****************************************************************/

$sql = mysql_query(" INSERT INTO tabela3 (nome,titulo) VALUES ('$nome','$titulo')");

if($sql ==1){echo "<script>
alert('Cadastrado com Sucesso!');

window.location.href = 'agenda.php';



</script>";}else {echo "<script>alert('Não foi possível Cadastrar a agenda, tente novamente.');history.go(-1) </script>";
};

}mysql_close();




?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quis dizer tudo junto...assim

 


INSERT INTO tabela3 (nome,titulo) VALUES ('$nome’,’$titulo’) WHERE NOT EXISTS (SELECT nome,titulo FROM tabela3 WHERE nome= '$nome' AND titulo= '$titulo' );

 

 

 

nunca usei desta forma, mas não custa tentar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu usei esse select mas nao esta verificando e ta cadastrando e permitindo a repetição

 

if (mysql_num_rows(mysql_query("SELECT nome,titulo FROM tabela3 WHERE nome= '$nome', titulo= '$titulo' ")) != 0) {

echo "Dados ja Existentes";

}

else {

/*****************************************************************/

 

$sql = mysql_query(" INSERT INTO tabela3 (nome,titulo) VALUES ('$nome','$titulo')");

 

if($sql ==1){echo "<script>

alert('Cadastrado com Sucesso!');

 

window.location.href = 'agenda.php';

 

 

 

</script>";}else {echo "<script>alert('Não foi possível Cadastrar a agenda, tente novamente.');history.go(-1) </script>";

};

 

}mysql_close();

 

 

 

 

?>

 

 

 

http://forum.imasters.com.br/topic/487152-verificar-se-registro-ja-existe-no-banco-de-dados/#entry1936055

http://forum.imasters.com.br/topic/487152-verificar-se-registro-ja-existe-no-banco-de-dados/#entry1936065

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo vou dar apenas um exemplo pelo o que entendi do seu problema, no código que escrevi abaixo ele verifica se na tabela existe o nome Ner0, se caso existir retorna o echo do if que é Seu nome já está em uso!

<?php
$verifica = mysql_query("SELECT * FROM tabela WHERE  nome = 'Ner0' LIMIT 1") or die(mysql_error());
$verifica = mysql_num_rows($verifica);


if($verifica > 0){echo"Seu nome já está em uso!";}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixe-me explicar melhor

 

É mais ou menos assim

 

Ao cadastrar o nome e o titulo ele tem que verificar se existe na tabela 3 os dados correspondente ex:

 

Se na tabela3 no campo nome tiver “a” e no campo titulo tiver “1” e o que vim pelo formulário for igual ( nome “a”e titulo “1”) informa que já existe esse cadastro mas se pelo formulário vir

(nome “a” e titulo “2”) vai ser permitido o cadastro!

 

As possibilidades que existe é

 

( nome “a”e titulo “1”) ( nome “a”e titulo “2”) ( nome “a”e titulo “3”)

( nome “b”e titulo “1”) ( nome “b”e titulo “2”) ( nome “b”e titulo “3”)

( nome “c”e titulo “1”) ( nome “c”e titulo “2”) ( nome “c”e titulo “3”)

 

Se repetir algum tem que mostrar o erro ao cadastrar

Lembrando q o nome e o titulo vem de uma outra tabela e que pode mudar de acordo com o cadastro dos nomes e títulos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

procure por unique no mysql

que vai resolver seu problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que eu disse seria mais ou menos assim:

 

 

 

 

$seach = mysql_query("SELECT * FROM tabela3 WHERE nome = '$nome' AND titulo = '$titulo'");
if(@mysql_num_rows($search) > 0){
echo 'Esse post já existe';
}else{
// faz inserção
$sql = mysql_query(" INSERT INTO tabela3 (nome,titulo) VALUES ('$nome’,’$titulo’) ");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

o que eu disse seria mais ou menos assim:

 

 

 

 

$seach = mysql_query("SELECT * FROM tabela3 WHERE nome = '$nome' AND titulo = '$titulo'");
if(@mysql_num_rows($search) > 0){
echo 'Esse post já existe';
}else{
// faz inserção
$sql = mysql_query(" INSERT INTO tabela3 (nome,titulo) VALUES ('$nome’,’$titulo’) ");
}

 

é isso que eu não estou conseguindo entender, onde entra as tabelas 1 e 2 nessa história? rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

nome vem da tabela 1 via select e o titulo vem da tabela 2 que vao ser cadastrados na tabela 3 no campo nome e titulo que la tem !

nao estou gravando o id do nome nem do titulo só o texto pra mim seria mais complicado fazendo com id ! mas o texto esta indo normal

 

so quero q o usuario nao repita os cadastros na tabela 3 vou testar o codigo de William Phantom

Compartilhar este post


Link para o post
Compartilhar em outros sites

deste modo da certo mas e errado.

pq vc alem de esta abrindo 2 query

 

com o tempo vai demorar mais inserir, por que vai ter mais registros e terá que verificar.

 

e colocando um índice com uma unique e bem mais rápido , por que o banco vai fazer o trabalho.

 

nem sempre o mais fácil e o melhor

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas o q é de grande importancia no momento é que os cadastros no se repitam ! mesmo eu usando o indice com unique iria dar a repetição na ora do cadastro do nome e do titulo o sitema tem que verificar toda tabela 3 olhar se ja existe o nome se ja exite ele olha se o titulo é igual ao cadastro que ja esta naquele nome se nao for ele cadastra nomalmente mas se for igual ele nao pode permitir o cadastro !

o codigo de

William Phantom esta permitindo que  nome "a" e titulo "1" seja cadastrado novamente ! desde ja agradeço a todos pela força sou novo no php e tenho duvidas ainda cursando  programação no ifrn e o professo ja passou esse codigo para fazer-mos 

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.