espiculo 1 Denunciar post Postado Junho 3, 2009 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
Anderson Baldner 0 Denunciar post Postado Junho 3, 2009 dá uma olhada na função RAND. acho que ela te servirá :) Compartilhar este post Link para o post Compartilhar em outros sites
espiculo 1 Denunciar post Postado Junho 4, 2009 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
hinom 5 Denunciar post Postado Junho 4, 2009 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
espiculo 1 Denunciar post Postado Junho 4, 2009 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
Anderson Baldner 0 Denunciar post Postado Junho 4, 2009 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
eibon 2 Denunciar post Postado Junho 4, 2009 Exemplo: <?php $range = range(1, 9); shuffle($range); echo (int)implode('', $range); ?> Compartilhar este post Link para o post Compartilhar em outros sites
espiculo 1 Denunciar post Postado Junho 4, 2009 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
eibon 2 Denunciar post Postado Junho 4, 2009 Pode ser... Compartilhar este post Link para o post Compartilhar em outros sites
espiculo 1 Denunciar post Postado Junho 4, 2009 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
eibon 2 Denunciar post Postado Junho 4, 2009 Etendi nada. Desviou-se da duvida inicial mas tudo bem. Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Junho 4, 2009 No banco de dados, seta como UNIQUE o campo que tiver o numero do boleto. Aí se caso acontecer de duas pessoas ao mesmo tempo registrarem com o mesmo numero, o MySQL vai retornar um erro para algum deles. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Junho 4, 2009 você pode colocar na hora de inserir no banco alguma coisa assim UPDATE table SET c=c+1 WHERE a=1; Aí não tem chance de dar errado. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Junho 4, 2009 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
espiculo 1 Denunciar post Postado Junho 5, 2009 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
André D. Molin 15 Denunciar post Postado Junho 5, 2009 Este monstro vai ficar tão grande que uma hora vai fugir do labirinto. :P Compartilhar este post Link para o post Compartilhar em outros sites