[Resolvido] Gerar numeros automaticamente em um campo

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

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.

DeivitePopo, ai vai um exemplo…

[i]<?
/*
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;
?>
[/i]

Você quer sequencial ou aleatório?

Poderia ser sequencial ou aleatorio contanto que gerasse 7 digitos.

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

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!

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.

alguém sabe me dizer como fazer para consultar antes de cadastrar um login ?

andreluiz,

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

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);

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 .

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 ?

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.

onde coloca essa função pra relacionar ao campo pra criar esse nunmero