Ir para conteúdo

POWERED BY:

Arquivado

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

Daniel A

cadastro numeros PHP

Recommended Posts

Boa tarde a todos .... fiz um curso de PHP e estou começando agora , e logo de cara pegeui uma buxa .... preciso desenvolver um sistema onde tenho uma tabela no sql na qual existe um indice de 5 digitos e uma sequencia numerica de 10 numeros de dois digitos .

 

o cadastro é facil .... o que não consegui fazer foi .... a sequência dos 10 numeros não pode se repetir ..... aí esta o problema ... não faço idéia de como montar a estrutura onde que ao cadastrar a sequencia o sistema verifique a tabela e se ja houver a sequencia ele não cadastra ....

 

indice p1 p2 p3 p4 p5 p6 p7 p8 p9 p10

 

12345 01 02 03 04 05 06 07 08 09 10

 

 

alguém poderia me ajudar ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Há duas saídas:

 

1. Antes do INSERT, fazer um SELECT verificando se a sequência já existe.

2. Criar uma Chave Única (Unique Key) e fazer o INSERT direto, verificando se retornou erro. Se retornar erro de chave duplicada, a sequência já existe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Há vários exemplos aqui. Tente fazer e poste suas dúvidas

 

não achei nada .... estou pensando na lógica assim ... o php veirica a opisção p1 no banco e ve se é igual ... se for igual ele consulta a p2 .... se fora igual ele vai e consulta e p3 ..... ele só vai gravar se uma das consultas voltar falso ... caso todas as igualdades forem verdadeiras ele fala que a sequencia ja esta cadastrada ....

 

como monto isso no PHP ????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não precisa de várias consultas. Apenas uma, filtrando com WHERE

 

 

SELECT count(*) as total FROM tabela WHERE valor = <valor a ser inserido>;

 

Se total for maior que 0, o valor já existe

 

Veja qualquer link do resultado que te mandei. O primeiro já usa essa lógica, filtrando por email

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Eu tentei assim:

 

if ( $connection->query("SELECT count(*) FROM numb WHERE p01 = '$v1' and p02 = '$v2' and p03 = '$v3' and p04 = '$v4' and p05 = '$v5' and p06 = '$v6' and p07 = '$v7' and p08 = '$v8' and p09 = '$v9' and p10 = '$v10' ") {

 

echo"registro já cadastrado";

} else {

 

 

$stmt = $connection->prepare("INSERT INTO numb ( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

 

 

$stmt->bindParam(1, $v1);

$stmt->bindParam(2, $v2);

$stmt->bindParam(3, $v3);

$stmt->bindParam(4, $v4);

$stmt->bindParam(5, $v5);

$stmt->bindParam(6, $v6);

$stmt->bindParam(7, $v7);

$stmt->bindParam(8, $v8);

$stmt->bindParam(9, $v9);

$stmt->bindParam(10, $v10);

 

$stmt->execute();

 

echo"Registro cadastrado";

 

}

 

 

 

não funcionou !!!!!!!!!! a única mensagem que aparece é erro no servidor ??????

Compartilhar este post


Link para o post
Compartilhar em outros sites

"erro no servidor" deve ser uma mensagem que você programou em alguma outra parte do código. Isso não é mensagem de erro do PHP nem do SGBD

 

Seu if sempre vai retornar true. O método query() só retornará false se ele falhar. Ele nunca retornará 0 só porque o COUNT retornou 0. Você precisa buscar o resultado da query usando fetch() ou fetchAll() por exemplo. Leia este artigo: http://rberaldo.com.br/pdo-mysql/

Compartilhar este post


Link para o post
Compartilhar em outros sites

"erro no servidor" deve ser uma mensagem que você programou em alguma outra parte do código. Isso não é mensagem de erro do PHP nem do SGBD

 

Seu if sempre vai retornar true. O método query() só retornará false se ele falhar. Ele nunca retornará 0 só porque o COUNT retornou 0. Você precisa buscar o resultado da query usando fetch() ou fetchAll() por exemplo. Leia este artigo: http://rberaldo.com.br/pdo-mysql/

 

Boa noite Beraldo... não quero tirar sua paciencia ... e obrigado por estar me ajudando .... mas gostaria de mais uma ajuda para tentar intender como funciona.... pode me ajudar ?

 

 

 

$sql = "SELECT * FROM programadores";" Essa lina eu declaro na variavel a consulta que quero realizar - certo?

$result = $PDO->query( $sql ); " essa joga na variavel $result a aplicação da consulta na conexão com o banco - certo ?

$rows = $result->fetchAll(); " o que faz isso ? não entendo a explicação que esta no site ..... ????

 

outra pergunta como posso aplicar isso no meu caso ????

 

print_r( $rows );

Mais uma vez obrigado!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

query() só executa uma consulta. Ela retorna true se deu certo ou false se deu errado. Nada além disso.

fetch() e fetchAll() buscam os resultados da consulta executada.

fetch() busca um resultado por vez. É muito comum usar fetch() em loop while, por exemplo.

fetchAll() busca todos os resultados de uma vez e os coloca em um array.

Compartilhar este post


Link para o post
Compartilhar em outros sites

query() só executa uma consulta. Ela retorna true se deu certo ou false se deu errado. Nada além disso.

fetch() e fetchAll() buscam os resultados da consulta executada.

fetch() busca um resultado por vez. É muito comum usar fetch() em loop while, por exemplo.

fetchAll() busca todos os resultados de uma vez e os coloca em um array.

 

 

Beraldo Obrigado pelas explicações !!!!!

 

meu código funcionou da seguinte maneira !!!

 

<?php
$jogo=$_POST["reg"];
$v1=$_POST["p1"];
$v2=$_POST["p2"];
$v3=$_POST["p3"];
$contador=1;
$connection = new PDO("mysql:host=localhost;dbname=pdo", "gt", "123");
$rs = $connection->query("SELECT * FROM numb WHERE p1 = '$v1' AND p2 = '$v2' AND p3 = '$v3'" );
if($rs->rowCount() >0){
echo "registros ja cadastrados !!";
}else{
$stmt = $connection->prepare("INSERT INTO numb (reg, p1, p2, p3 , contador) values (?, ?, ?, ?, ?)");
$stmt->bindParam(1, $reg);
$stmt->bindParam(2, $v1);
$stmt->bindParam(3, $v2);
$stmt->bindParam(4, $v3);
$stmt->bindParam(5, $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>";
}
?>

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.