Ir para conteúdo

POWERED BY:

Arquivado

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

Daniel A

Formulário PHP

Recommended Posts

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.