Autor Tópico: Gerar numeros automaticamente em um campo  (Lida 7726 vezes)

DeivitePopo

  • Intermediário
  • ***
  • Mensagens: 131
    • Email
Gerar numeros automaticamente em um campo
« Online: Abril 21, 2010, 09:58:38 pm »
Caros Estou precisando gerar em um campo 7 numeros automaticamente.
Tipo em cada inserção ele gera 7 numeros Exemplo "4563783".
Sendo que esse campo não é o id da tabela pois no mysql so consigo definir um campo como auto_incremento.

Aproveitando a oportunidade, Existe uma maneira de criar sequencia no mysql?
Pois no postgres eu crio normal assim:

CREATE SEQUENCE sequencia_cidade
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;
ALTER TABLE sequencia_cidade OWNER TO postgres;

Mas no MYSQL não tenho a manor ideia.

Abraços a todos

waae

  • Avançado
  • ****
  • Mensagens: 292
    • Email
Re: Gerar numeros automaticamente em um campo
« Responder #1 Online: Abril 22, 2010, 08:55:02 am »
Quanto a inserir um número na inserção... você pode atribuir um valor ao campo que você quer no evento "before insert" (que roda quando o usuário clica em "inserir" mas antes de gravar os dados no banco). Ai vai depender se vc vai sempre querer o mesmo numero ou não.

Eu costumo criar uma tabela de "parametros/configurações" onde controlo todos os sequenciais dos cadastros. Sempre trabalhei assim. Ai nesse mesmo evento (before insert) pego nnos parametros o ultimo sequencial, acrescento 1 e coloco no campo do codigo (não esquecendo de atualizar o ultimo sequencial na tabela de parametros). Isso você pode fazer pra controlar o codigo de um registro (id, chave) ou qualquer outro campo de uma tabela.

rayfcrols

  • Intermediário
  • ***
  • Mensagens: 193
Re: Gerar numeros automaticamente em um campo
« Responder #2 Online: Abril 22, 2010, 09:10:02 am »
DeivitePopo, ai vai um exemplo..

<?
  /*
    Este techo de código mostra como gerar um
    número aleatório entre 1 e 10 usando PHP
   
    Obs: A partir da versão 4.2.0 do PHP, não é mais
    necessário usar srand() ou mt_srand() para inicializar
    a semente do gerador de números aleatórios.
  */
 
  $num = rand(1, 10);
  echo "O número gerado foi: " . $num;
?>

Haroldo

  • Expert
  • *****
  • Mensagens: 6276
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re: Gerar numeros automaticamente em um campo
« Responder #3 Online: Abril 23, 2010, 10:44:45 am »
Você quer sequencial ou aleatório?

DeivitePopo

  • Intermediário
  • ***
  • Mensagens: 131
    • Email
Re: Gerar numeros automaticamente em um campo
« Responder #4 Online: Abril 23, 2010, 10:41:49 pm »
Você quer sequencial ou aleatório?


Poderia ser sequencial ou aleatorio contanto que gerasse 7 digitos.

DeivitePopo

  • Intermediário
  • ***
  • Mensagens: 131
    • Email
Re: Gerar numeros automaticamente em um campo
« Responder #5 Online: Abril 23, 2010, 10:47:45 pm »
DeivitePopo, ai vai um exemplo..

<?
  /*
    Este techo de código mostra como gerar um
    número aleatório entre 1 e 10 usando PHP
   
    Obs: A partir da versão 4.2.0 do PHP, não é mais
    necessário usar srand() ou mt_srand() para inicializar
    a semente do gerador de números aleatórios.
  */
 
  $num = rand(1, 10);
  echo "O número gerado foi: " . $num;
?>


Tentei isso tembem, mas se observarmos apos algumas sequencias de numeros ele diminui 1 digito, sendo assim em algumas inserções ele vai gerar 6 digitos, o que não é funcional no caso de nosso_numero para o boleto bancario que so aceita 7 digitos no caso do Bradesco.

Pensei na alternativa de o id da tabela que é auto_incremento ser esse nosso_numero, mas não conseguir fazer com que o id da tabela gerar 7 digitos.
Alguem sabe como fazer isso?

Deivite Sousa

waae

  • Avançado
  • ****
  • Mensagens: 292
    • Email
Re: Gerar numeros automaticamente em um campo
« Responder #6 Online: Abril 26, 2010, 10:24:23 am »
vc tentou oq te falei???
cria uma tabela onde vc controla essa sequencia...
pra iniciar... vc coloca um numero com 7 digitos... ex: 1000000
ai o proximo será 1000001 .... 1000002.... assim por diante!!
Controla no evento "onbefore insert" vc pega o ultima sequencia na tabela, acrescenta 1, atribui ao campo que vc deseja e atualiza a ultima sequencia na tabela de parametro!

jlmonteiro

  • Novato
  • *
  • Mensagens: 46
    • Email
Re:Gerar numeros automaticamente em um campo
« Responder #7 Online: Abril 01, 2013, 06:51:17 pm »
Amigo,
eu não criei tabela, simplesmente leio o ultimo registro gerado, verifico se existe algum registro, se não, coloco 1. Se existir acrescento + 1 ao numero encontrado. Simples. Coloquei no evento onload o seguinte codigo. Veja se serve.

if (sc_btn_new)
{   
   
   sc_select(prox_paciente, "select max(numero) + 1 from paciente where numero < 900000");
   if ({prox_paciente} === false)
   {
      echo "Cadastro Vazio." ;
      {numero} = 1;
     
   }
   else
   {
      {numero} = $prox_paciente->fields[0];
   }
}   

Logicamente, vc precisará controlar para que tenha 7 digitos. Não sei se 0000001  servirá para você. Mas ai você pode delimitar iniciando por 1000000 se ainda não existir nenhum numero e que seja menor ou igual a 9999999. O outro problema é a concorrência com usuários utilizando ao mesmo tempo. Desta forma teria que salvar o registro e continuar a edição dos outros dados ou gerar o número no onbeforeinsert. Dessa forma não precisaria se preocupar em controlar, somente travar a tabela para cada insert.
Abrs.
« Última modificação: Abril 02, 2013, 01:39:29 pm por jlmonteiro »

andreluiz

  • Iniciante
  • **
  • Mensagens: 52
    • André Luiz Web
Re:Gerar numeros automaticamente em um campo
« Responder #8 Online: Setembro 09, 2016, 02:30:50 pm »
alguém sabe me dizer como fazer para consultar antes de cadastrar um login ?

Kleyber

  • Expert
  • *****
  • Mensagens: 2235
    • Email
Re:Gerar numeros automaticamente em um campo
« Responder #9 Online: Setembro 09, 2016, 02:38:55 pm »
andreluiz,

Não entendi a tua pergunta... e também qual o relacionamento da tua pergunta com o tópico criado...
Kleyber Derick

ITIL® V3 Foundation Certified
Analista de Sistemas
São Luís - Maranhão
www.tkinformidia.net

Rodrigo Goulart Padovezzi

  • Expert
  • *****
  • Mensagens: 1045
    • Email
Re:Gerar numeros automaticamente em um campo
« Responder #10 Online: Setembro 10, 2016, 01:49:23 pm »
Independente do número, sequencial ou aleatório você pode formatar ele para 7 dígitos com a função str_pad

Ex:

str_pad($num, 7, "0", STR_PAD_LEFT);

andreluiz

  • Iniciante
  • **
  • Mensagens: 52
    • André Luiz Web
Re:Gerar numeros automaticamente em um campo
« Responder #11 Online: Setembro 19, 2016, 05:21:11 pm »
Alguem pode me ajudar a dizer como faço para gerar números e letas em um campo para gerar um código de barras automático sem ter de ficar digitando .

andreluiz

  • Iniciante
  • **
  • Mensagens: 52
    • André Luiz Web
Re:Gerar numeros automaticamente em um campo
« Responder #12 Online: Setembro 19, 2016, 05:22:00 pm »
Outra duvida alguém sabe no script case como faço para consultar um login antes de cadastrar exemplo não deixar cadastrar login duplos entendem ?

Thyago Brasil

  • Expert
  • *****
  • Mensagens: 889
  • Crê no Senhor Jesus e será salvo tu e tua família
    • www.brasdesign.com.br
    • Email
Re:Gerar numeros automaticamente em um campo
« Responder #13 Online: Setembro 19, 2016, 07:11:27 pm »
Para gerar os numeros procura por um código que gere isso automaticamente. Vc acha fácil na internet. Quanto a sua outra dúvida, antes de inserir, faça um select na tabela de usuários verificando se já existe o login. Vc pode fazer essa verificação também no momento em que a pessoa digita o login no cadastro. Para isso, crie um método e o chame no evento onBlur do campo login e no onBeforeInsert.
Thyago Brasil
Desenvolvedor Web
Site: http://www.brasdesign.com.br

SC 5.02/SC 8.1