weidson 3 Denunciar post Postado Fevereiro 15, 2013 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
William Phantom 32 Denunciar post Postado Fevereiro 15, 2013 é só você fazer um filtro ex: você vai pegar a tabela de insert e vai mudar para select, e caso retorne algum resultado, você cancela a opera e manda uma mensagem de volta Compartilhar este post Link para o post Compartilhar em outros sites
weidson 3 Denunciar post Postado Fevereiro 15, 2013 tem como vc me mandar o codigo sou novo nisso ! fico muito grato se possivel ! Compartilhar este post Link para o post Compartilhar em outros sites
William Phantom 32 Denunciar post Postado Fevereiro 15, 2013 manda o código que você está fazendo Compartilhar este post Link para o post Compartilhar em outros sites
erison 63 Denunciar post Postado Fevereiro 15, 2013 se você quiser verificar para não duplica, coloque o índice no banco com uma unique. http://scriptbrasil.com.br/forum/index.php?showtopic=101050 http://dev.mysql.com/doc/refman/5.0/en/constraint-primary-key.html http://stackoverflow.com/questions/10908561/mysql-meaning-of-primary-key-unique-key-and-key-when-used-together olhe Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Fevereiro 15, 2013 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
weidson 3 Denunciar post Postado Fevereiro 15, 2013 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
rockrgo 138 Denunciar post Postado Fevereiro 15, 2013 Será que se você usar o WHERE NOT EXISTS na sua query não daria certo? Compartilhar este post Link para o post Compartilhar em outros sites
weidson 3 Denunciar post Postado Fevereiro 15, 2013 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
rockrgo 138 Denunciar post Postado Fevereiro 15, 2013 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
Evandro Oliveira 331 Denunciar post Postado Fevereiro 15, 2013 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
Ner0 6 Denunciar post Postado Fevereiro 15, 2013 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
weidson 3 Denunciar post Postado Fevereiro 15, 2013 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
erison 63 Denunciar post Postado Fevereiro 15, 2013 procure por unique no mysql que vai resolver seu problema Compartilhar este post Link para o post Compartilhar em outros sites
rockrgo 138 Denunciar post Postado Fevereiro 15, 2013 O que vem do form grava em qual tabela? e de onde vem os dados das outras duas tabelas? Compartilhar este post Link para o post Compartilhar em outros sites
William Phantom 32 Denunciar post Postado Fevereiro 15, 2013 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
rockrgo 138 Denunciar post Postado Fevereiro 15, 2013 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
weidson 3 Denunciar post Postado Fevereiro 15, 2013 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
erison 63 Denunciar post Postado Fevereiro 15, 2013 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
weidson 3 Denunciar post Postado Fevereiro 15, 2013 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