Ir para conteúdo

Arquivado

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

Alessandro Ramos

Formulário com autonumeração para cada envio, não precisa de BD

Recommended Posts

Boa tarde gente,

Eu preciso colocar algum campo que gere automaticamente um numero, que todos dias comece do zero. Exemplo:

 

Os cliente acessam o pedido, todos os dias, cada cliente quanto enviar o formulário terá um numero, que na verdade é uma orientação para os funcionários da fila de pedidos, o primeiro pedido, vai com a numeração 0001, o segundo pedido do dia com 0002 e assim por diante.

Mas quando virar o dia, ele começa novamente do zero.

Essa numeração na verdade é apenas para o funcionário ficar ciente qual foi o primeiro pedido do dia, para ele priorizar a entrega do mesmo.

Pesquisei algumas coisas por aqui, eu vi que tem parecido, com BD, mas não precisaria de BD, é apenas para quando enviar o formulário, ele ir com o número.

Desde já agradeço a atenção de todos!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

file_get_contents para ler o número;

file_put_contents para salvar o número;

cron para rodar 1x ao dia e zerar o conteúdo do arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

file_get_contents para ler o número;

file_put_contents para salvar o número;

cron para rodar 1x ao dia e zerar o conteúdo do arquivo.

 

Obrigado pela atenção ESerra, demorei a responder pq estava tentando entender o que você me passou, só que sou muito leigo e não entendi...rs. Você não poderia dá um exemplo, simples mesmo, de como fazer isso usando um txt?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você precisa salvar sempre em algum lugar o último número gerado, para poder fazer a sequência.

Se não quer usar BD, use um arquivo de texto

 

Obrigado pela atenção Beraldo, demorei a responder pq estava tentando entender o que você me passou, só que sou muito leigo e não entendi...rs. Você não poderia dá um exemplo, simples mesmo, de como fazer isso usando um txt?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu até descobri que colocando:

echo rand(1,300); 

Ele vai gerar números aleatórios para mim de 1 a 300, meu medo é ele gerar números repetidos.

Imagine 30 clientes fazendo o pedido, e um deles o número é igual a de outro? Daria maior dor de cabeça, com o RAND tem como fazer não repetir?

Esse formulário de pedido tem em média apenas 90 pedidos por dia, coisa pouca, não sei, mas acho que essa função resolve, testei, já fiz até alguns envios, ma o medo é dá um azar de repetir.

E nessa função, ele não gerar numero sequencial...:(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplos tem na documentação

http://php.net/file_get_contents

http://php.net/file_put_contents

 

Está tudo bem explicado, parâmetros e tudo mais.

Veja como usar, teste e, se tiver dúvidas, volte aqui e pergunte.

 

 

Sobre o ID único, você pode usar uniqid(). Vai gerar letras também. Se você quiser apenas números, melhor usar timestamp(), como o kikombat sugeriu no Post #7. time() e microtime() devem resolver

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você precisa de alguma orientação e não quer ou não precisa usar banco de dados, uma ideia seria usar data e horário

 

Olá Kikombat,

Valeu pela dica, fiz assim:

<?
$Agora = date('000i');


echo $Agora;
?>

Ficou legal, testei aqui era 11:55 então o número apareceu como 00055.

Agora tenho um problema, que acho não tem como utilizar esse macete, se duas pessoas fizerem o pedido minuto, ou mesmo fazendo e segundos parecidos, será gerado números iguais.

imagine uma pessoa faznedo o pedido as 12:20:00 será o número 00020 e se outra pessoa fizer as 13:20:00 também será gerado o número 00020.

Teria uma outra ideia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplos tem na documentação

http://php.net/file_get_contents

http://php.net/file_put_contents

 

Está tudo bem explicado, parâmetros e tudo mais.

Veja como usar, teste e, se tiver dúvidas, volte aqui e pergunte.

 

 

Sobre o ID único, você pode usar uniqid(). Vai gerar letras também. Se você quiser apenas números, melhor usar timestamp(), como o kikombat sugeriu no Post #7. time() e microtime() devem resolver

 

Obrigado, vou olhar agora!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Obrigado, vou olhar agora!!

 

Consegui usando a função time()/1000;

Dessa forma o número aparece como: 1444494.408 e vai mudando, show!! Vou utlizar apenas os números depois do ponto. Será que tem alguma forma de diminuir essa numeração?

Estuo vendo o manual no http://php.net/manual/pt_BR/function.time.php

Vou tentar algo, valeu pela dica!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Consegui usando a função time()/1000;

Dessa forma o número aparece como: 1444494.408 e vai mudando, show!! Vou utlizar apenas os números depois do ponto. Será que tem alguma forma de diminuir essa numeração?

Estuo vendo o manual no http://php.net/manual/pt_BR/function.time.php

Vou tentar algo, valeu pela dica!!

 

Obrigado a todos, resolvi! Coloquei assim:

$Agora = time()/10000; // 1444494.949
$pedidonumber = number_format($Agora,4,".",".");

Dessa forma o numero aparece assim: 144.449.7663 onde o controle sempre será os últimos 4 números.

Obrigado todos!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se usar apenas os 4 últimos números, continuará tendo conflito (a mesma história do 55 que você disse que não poderia usar)

 

Se usar só 4 números, o maior número será 9999, que, em horas, é 2.7775.

 

 

9999 / 60 / 60 = 2.7775

 

Ou seja, só pode representar duas horas. Mas o dia tem 24... então esses 4 números vão se repetir

 

 

24 horas tem 86400 (5 dígitos) segundos. Você precisa de todos eles para evitar conflitos (mas ainda vai existir conflito se 2 comprarem no mesmo segundo)

 

Em suma, ou usa 5 dígitos ou usa uniqid() como sugeri antes.

Não vejo problemas em usar ID alfanumérico. Então eu iria de uniqid()

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.