Ir para conteúdo

POWERED BY:

Arquivado

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

espiculo

[Resolvido] gerar números sequenciais não repetidos

Recommended Posts

olá ...

 

tenho sistema de boleto .. mais estava fazendo asim

 

id usuário mais parcela ..

 

id 512

parcela 2

 

ex: 0005122

 

mais ai ia repetir daqui uns anos ...... ai ficaria ruim para um controle interno ...

 

tem alguma strings que gera números sequenciais no Máximo 7 números ... e nunca repetir .. ???

 

Se tiver mais sugestois eu agradeço

 

abraços .

Compartilhar este post


Link para o post
Compartilhar em outros sites

não da com rand ele repeti ...

 

fiz uns teste mais ele repeti os numero ..

 

fiz Asim ...

 

$codigo = rand(9999999, 10);

 

 

alguem tem outra idéia ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. Qual o limite de caracteres do ID do usuário ?

 

2. O limite do id do boleto, de 7 números, inclui o ID do usuário ?

 

3. Precisa realmente concatenar ambos os IDs ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não precisa do id ...

 

mudei meu sistema ...

 

quando pessoa acessa o boleto vou fazer um insert de todos os dados ...

 

em uma tabela inclusive o nosso numero que e 7 máximo ...

 

ai vou saber que tal numero e do usuário ....

 

não irei colocar parcela mais .....

 

tenho que gera 7 numero nunca igual .....

 

 

abraços ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

a forma que você escreveu o RAND, penso que não esteja certa...

 

tenta assim:

rand(0,9999999);

sendo que com o RAND, você não terá a garantia de que o númeroterá 7 dígitos, podendo esse exemplo gerar 11 ou 598, ou até mesmo 178941.

 

caso seja necessário usar 7 dígitos,tente assim

 

rand(1000000,9000000);

mais como você disse, o RAND pode realmente repetir valores.

creio que uma consulta ao banco de dados e um num_rows, seja suficiente para verificar a existência do mesmo. caso haja, não cadastra e gera outro RAND que não esteja cadastrado, mais caso não haja ele adiciona normalmente.

 

caso seja possivel aumentar de 7 para 10 ou mais caracteres, você pode usar a função TIME, que irá gerar o número de segundos (timestamp UNIX).

 

ficaria assim:

$timestamp = time();

espero ter ajudado =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Asim deu

 

<?php

$range = range(1, 7);

shuffle($range);

echo (int)implode('', $range);

?>

 

como seria essa consuta no banco de dados ???

 

se acha não cadastra ... troca para outro rand ????

Compartilhar este post


Link para o post
Compartilhar em outros sites

tipo tava pensando em fazer asim ... mais tenho uma duvida

 

ex:

 

$cal = 9900000010 + 1 ;

echo $cal;

 

ele 9900000010 pega ultimo no db ....

 

e soma + 1

 

ai vai dar 9900000011

 

mais tipo se duas pessoa acesa mesmo tempo o boleto vai dar 9900000011 ...

 

tem como o sistema .... não dar esse erro ????

 

de gera dois usuario com mesmo numero para os usuários que acessarão ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

está criando um monstro de sete cabeças

e construindo um labirinto pra ele morar.

 

 

os usuarios estão num banco de dados ?

provavelmente sim, né?

 

exemplo

 

usuarios
   id
   nome
   etc...

 

controle os boletos no banco de dados

 

boletos
   id (int 7) autoincrement
   id_usuario
   etc...

simples, resolvido..

 

 

ou há um motivo específico para fazer do modo como está fazendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

já resolvi aqui ...

 

fiz uns sistema que conta o ultimo boleto por + 1 ....

 

mais irei explicar ...

 

o banco que trabalho ele só disponibiliza 7 numeros para trabalhar e nunca poderá repetir ..

 

obs: a claro conseguiu ussa sempre o mesmo numero nos boleto. para ela não tem esse problema de fica gerando números. também o banco e deles hehehe ^^

 

então tenho poucos números .....

 

então se fazer esse rand irei perde varias combinações e dai uns anos ira dar problema ira gera sabre as mesmas combinações ...

 

então achei que ira fica melhor ... verifica ultimo boleto pega o numero e soma por + 1 e ainda ficarei sabendo quantos boletos já foi impressos :D

 

está criando um monstro de sete cabeças

e construindo um labirinto pra ele morar.

 

 

"inda bem que esto criando um labirinto. fico despreocupado não ira fugir heheheh :D"

 

 

mais valeu ajuda e atenção de todos para solucionar meu problema .....

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.