Daniel A 0 Denunciar post Postado Novembro 11, 2015 Bom dia a todos, estou começando no PHP e peguei um projeto complicado logo no primeiro trabalho .... tenho um formulário de cadastro de registro onde existe um ID de 4 digitos (não pode repetir) e uma sequencia de 15 registros de 2 digitos, onde a sequencia deles não pode se repetir . ex: ID: 0001 reg01 : 01 - reg02: 02 - reg03: 03 - reg04: 04 - reg05: 05 ..... ID: 0002 reg01: 01 - reg:02: 03 - reg03: 15 - reg04 : 20 - reg05: 08 ....... Alguém poderia me ajudar ....... Compartilhar este post Link para o post Compartilhar em outros sites
Maykel-ctba 233 Denunciar post Postado Novembro 11, 2015 O que vc quer ajuda? Compartilhar este post Link para o post Compartilhar em outros sites
Daniel A 0 Denunciar post Postado Novembro 11, 2015 Tenho o meu código que cadastra os registros no banco .... como faço a consulta que não deixa cadastrar a sequência igual ? segue meu código que cadastra ... <html><head><title>Cadastro</title></head><body><?php$ID=$_POST["ID"];$v1=$_POST["reg1"];$v2=$_POST["reg2"];$v3=$_POST["reg3"];$v4=$_POST["reg4"];$v5=$_POST["reg5"];$v6=$_POST["reg6"];$v7=$_POST["reg7"];$v8=$_POST["regp8"];$v9=$_POST["regp9"];$v10=$_POST["reg10"];$v11=$_POST["reg11"];$v12=$_POST["reg12"];$v13=$_POST["reg13"];$v14=$_POST["reg14"];$v15=$_POST["reg15"];$contador=1;$connection = new PDO("mysql:host=localhost;dbname=loto", "gt", "123"); $stmt = $connection->prepare("INSERT INTO numb (id, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 , contador) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); $stmt->bindParam(1, $id); $stmt->bindParam(2, $v1); $stmt->bindParam(3, $v2); $stmt->bindParam(4, $v3); $stmt->bindParam(5, $v4); $stmt->bindParam(6, $v5); $stmt->bindParam(7, $v6); $stmt->bindParam(8, $v7); $stmt->bindParam(9, $v8); $stmt->bindParam(10, $v9); $stmt->bindParam(11, $v10); $stmt->bindParam(12, $v11); $stmt->bindParam(13, $v12); $stmt->bindParam(14, $v13); $stmt->bindParam(15, $v14); $stmt->bindParam(16, $v15); $stmt->bindParam(17, $contador); $stmt->execute(); if($stmt->errorCode() != "00000") { $valido = false; $erro = "Erro código " . $stmt->errorCode() . ": "; $erro .= implode(", ", $stmt->errorInfo()); }echo"Registros Cadastrados";echo"<br>";echo"<br>";?></body></html> Compartilhar este post Link para o post Compartilhar em outros sites
(RNU) Ruan Silva 61 Denunciar post Postado Novembro 11, 2015 cheio de opções... pode usar auto incremento, atributo unique do mysql, marcar como chave primária... Ou tem que ser digitado? Se for digitado, a única idéia que tenho é de fazer uma consulta no banco por determinado id e ver se ja não existe. Mas, caso marque o campo como unique/primary key ele ja vai impedir você de inserir id duplicado :D Obs: pra manter os "zeros" a frente do número, pode declarar o campo como zerofill no banco :) id int(4) zerofill unique Compartilhar este post Link para o post Compartilhar em outros sites
paulorogeriojr 1 Denunciar post Postado Novembro 11, 2015 Olá daniyel007, Tudo Bem?Pelo que eu entendi, as condições que você colocou aqui são essas: - Como faço a consulta que não deixa cadastrar a sequência igual - Existe um ID de 4 digitos (não pode repetir) - E uma sequencia de 15 registros de 2 digitos, onde a sequencia deles não pode se repetir .A consulta poderia ser feita da seguinte maneira: $query = mysql_query("SELECT * FROM tabela WHERE reg1 = " . $_POST["reg1"] . " AND reg2 = " . $_POST["reg2"] . " "); //Se encontrou algum registro if( mysql_num_rows($query) > 0 ) { //Mostrar Erro } //Se não encontrou else { //Pode incluir no banco de dados } O quê eu fiz foi só um exemplo sem ser com a PDO nem mysqli mas acredito que deu para você entender a lógica Só fiz com o "reg1" e "reg2" porém poderia ser feito com todos os 15 Obviamente alguém com um nível mais avançado em algoritmo e lógica da programação terá respostas mais simples e melhores; Porém para sua necessidade o que eu entendi é isso que pode ser feito. Atenciosamente, Paulo Compartilhar este post Link para o post Compartilhar em outros sites
Daniel A 0 Denunciar post Postado Novembro 11, 2015 Só pra tentar entender ... eu faço essa consulta junto com o comando de gravação ... eu não consigo entender como montar a estrutura e sequencia do processo.... ainda estou deficiente nessa parte .... voces teriam algum modelo simples onde eu consigo ver como funciona ...?????? Compartilhar este post Link para o post Compartilhar em outros sites
paulorogeriojr 1 Denunciar post Postado Novembro 11, 2015 Só pra tentar entender ... eu faço essa consulta junto com o comando de gravação ... eu não consigo entender como montar a estrutura e sequencia do processo.... ainda estou deficiente nessa parte .... voces teriam algum modelo simples onde eu consigo ver como funciona ...?????? Olá Daniyel007, Bom, primeiro você vai fazer as verificações como está no código se a sequência não for repetida você incluí no banco de dados. Você pode fazer com o comando if, ai sim você grava no banco de dados; Se você tiver outra dúvida que não seja essa do post pode escrever outra postagem que eu tento te ajudar. Fique tranquilo nos primeiros projetos eu também esquentava muito a cabeça tentando entender "Como eu vou fazer isso", faz parte da curva de aprendizado :) Compartilhar este post Link para o post Compartilhar em outros sites
(RNU) Ruan Silva 61 Denunciar post Postado Novembro 11, 2015 Autroincremento não serve? Seria mais simples ;) Compartilhar este post Link para o post Compartilhar em outros sites
paulorogeriojr 1 Denunciar post Postado Novembro 11, 2015 Autroincremento não serve? Seria mais simples ;) Olá Ruan Silva, Tudo Bem? Foi a primeira coisa que me veio a mente, porém como ele falou de "consulta" e não alterar as propriedades, achei bacana dar essa resposta Mas isso que é bacana no imasters, existem varias respostas para a mesma pergunta Abraços Compartilhar este post Link para o post Compartilhar em outros sites
(RNU) Ruan Silva 61 Denunciar post Postado Novembro 11, 2015 Olá daniyel007, Tudo Bem? Pelo que eu entendi, as condições que você colocou aqui são essas: - Como faço a consulta que não deixa cadastrar a sequência igual - Existe um ID de 4 digitos (não pode repetir) - E uma sequencia de 15 registros de 2 digitos, onde a sequencia deles não pode se repetir . A consulta poderia ser feita da seguinte maneira: $query = mysql_query("SELECT * FROM tabela WHERE reg1 = " . $_POST["reg1"] . " AND reg2 = " . $_POST["reg2"] . " "); //Se encontrou algum registro if( mysql_num_rows($query) > 0 ) { //Mostrar Erro } //Se não encontrou else { //Pode incluir no banco de dados } Então a ideia é essa mesma... eu so mudaria a consulta inicial para ele procurar pelo campo id $query = mysql_query("SELECT * FROM tabela WHERE id = $id "); Pois ele não quer que esse campo se repita. O problema disso é que com muitos registros essa solução poderia ficar pesada. Uma alternativa seria simplesmente setar o campo id como unique como eu havia falado antes. Deste modo, ele não precisa nem consultar antes, basta tentar inserir e, caso o id ja exista no banco, a query retorna um erro :) No mysql: ALTER TABLE `numb` ADD UNIQUE (`id`) Compartilhar este post Link para o post Compartilhar em outros sites
Daniel A 0 Denunciar post Postado Novembro 12, 2015 o problema é que tem duas informações que não podem se repetir .... seria o ID e a sequencia dos registros .... nesse caso que voce passou o que não se repetiria seria somente o ID ..... certo? Compartilhar este post Link para o post Compartilhar em outros sites
(RNU) Ruan Silva 61 Denunciar post Postado Novembro 12, 2015 pro caso da sequencia, vc vai ter que gerar uma consulta a partir dos números digitados pelo usuário. Monte sua query com a sequência que o usuário digitar para cadastrar e verifica se ela retorna algum registro. Se não retornar é só cadastrar ;) Compartilhar este post Link para o post Compartilhar em outros sites