Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!
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.
>
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?
>
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?
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...:(
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
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
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?
>
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!!
>
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!!
>
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!!
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()
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