0

Criar sequencia que zera todo dia (numero-dia-mês)

criado por luiz fernando em 05/12/2012 7:09am
Bom dia!
estou com um problema para criar uma sequencia ex (numero-dia-mês) ficaria assim (0001-02-nov) e esse numero teria que iniciar do zero todo dia
estou com esse código <? setlocale(LC_ALL,"portuguese-brazil"); echo strftime(" XXXX-%d-%b- "); ?> só falta o numero que ainda não consegui fazer que esta com um XXXX no lugar.
Alguém pode me ajudar?

Lista de Respostas:

+1
06/12/2012 6:41pm
(~11 anos atrás)
Marcos Regis respondeu:
Para que um script saiba contar é preciso que ele sempre saiba de onde recomeçar. Isso quer dizer que a informação precisa ser salva em algum lugar. Esse lugar não pode ser SESSION pelas implicações pertinentes ao limite dessa estar associado a uma outra informação que é o ID, que pode se perder facilmente.
Segue um exemplo bem simples e funcional de fazer o que pretende.

<?php

setlocale(LC_ALL,"pt_BR", "ptb"); // veja http://phpbrasil.com/script/UrQfm1WUXID2/datahora-em-qualquer-idioma

$tempfile=sys_get_temp_dir().'/contador.txt'; // Arquivo que será usado para salvar o estado do contador

if(is_file($tempfile)){
$i=intval(file_get_contents($tempfile));
}else{
$i=0;
}
sprintf('%04d-%s-%0s',$i) . strftime("-%d-%b- ");

// Salvando a contagem atual
$i++;
file_put_contents($tempfile,$i);

0
07/12/2012 11:52am
(~11 anos atrás)
luiz fernando respondeu:
1° Obrigado pela ajuda mas
<td>Cadastrado por: <? echo $dados[nome];?><?
setlocale(LC_ALL,"portuguese-brazil");
echo strftime(" -%d-%b- ");
?><?php

setlocale(LC_ALL,"pt_BR", "ptb"); // veja http://phpbrasil.com/script/UrQfm1WUXID2/datahora-em-qualquer-idioma

$tempfile=sys_get_temp_dir().'/contador.txt'; // Arquivo que será usado para salvar o estado do contador

if(is_file($tempfile)){
$i=intval(file_get_contents($tempfile));
}else{
$i=0;
}
sprintf('%04d-%s-%0s',$i) . strftime("-%d-%b- ");
// Salvando a contagem atual
$i++;
file_put_contents($tempfile,$i);?></td>

tentei cololcar assim porem está com erro

0
11/12/2012 10:00am
(~11 anos atrás)
Marcos Regis respondeu:
cara, a sua pergunta supõe que é apenas uma unica contagem por pagina.
Seu codigo ja diz que cada usuario tera uma contagem e entao o codigo tem que ser diferente.
Quando fizer a pergunta, explique o problema inteiro, o que ja conseguiu fazer e qual o resultado final esperado.

0
12/12/2012 8:28am
(~11 anos atrás)
luiz fernando respondeu:
meu problema é que eu não consigo trazer esse numero pois ele seria recebido pelo cadastrar_db.php no
$controle = $_POST[controle];
ele não é meu id e sim um controle interno que tem que ser nesse padrão
numero-dia-mês, e esse numero será alterado a cada cadastro.
Você conseguiu me entender?

0
12/12/2012 8:31am
(~11 anos atrás)
luiz fernando respondeu:
é para um sistema de advocacia e esse é o cadastro de diligência que será feito por dia +ou- umas 1000 e acada nova solicitação será alterado esse numero

0
13/12/2012 9:54am
(~11 anos atrás)
Marcos Regis respondeu:
Então, eu já expliquei o funcionamento. Para que voce saiba qual o proximo numero é necessario saber qual foi o anterior, certo? Já dei a solução para esse problema.

Esse codigo abaixo deve ser colocao logo no inicio do script. Antes de qualquer outro codigo

<?php
setlocale(LC_ALL,"pt_BR", "ptb");
$tempfile=sys_get_temp_dir().'/contador.txt'; // Arquivo que será usado para salvar o estado do contador

if(is_file($tempfile)){
$i=intval(file_get_contents($tempfile));
}else{
$i=0;
}
file_put_contents($tempfile,$i+1);


# Daqui pra frente você pode usar o $i a vontade

<td>Cadastrado por: <?php echo $dados['nome'] . '-' . strftime(" -%d-%b- ");?></td>

0
13/12/2012 12:00pm
(~11 anos atrás)
luiz fernando respondeu:
Obrigado vou fazer os testes aqui e ver se lele zera amanhã.
ele zera manualmente tmbm??
Desde já agradeço a atenção

0
14/12/2012 5:47am
(~11 anos atrás)
luiz fernando respondeu:
Fiz alguns testes mas ainda não consegui o que preciso pois ele não zerou no dia seguinte, será que estou fazendo alllgol errado?

0
14/12/2012 9:10am
(~11 anos atrás)
Marcos Regis respondeu:
Hmmmm, tem que zerar todo dia? Então use este código.

<?php
setlocale(LC_ALL,"pt_BR", "ptb"); 
$tempfile=sys_get_temp_dir().'/contador.txt'; // Arquivo que será usado para salvar o estado do contador

if(is_file($tempfile) && filemtime($tempfile)> mktime(0,0,0)){
$i=intval(file_get_contents($tempfile));
}else{
$i=0;
}
file_put_contents($tempfile,$i+1);


# Daqui pra frente você pode usar o $i a vontade 

<td>Cadastrado por: <?php echo $dados['nome'] . '-' . strftime(" -%d-%b- ");?></td>

0
14/12/2012 11:06am
(~11 anos atrás)
luiz fernando respondeu:
add skype ai fazendo um favor informatica@juridicodinamico.com.br
Informática - Jurídico Dinâmico
Vlw

0
16/12/2012 10:40am
(~11 anos atrás)
Marcos Regis respondeu:
Amigo, não dou suporte online, por isso melhor enviar e-mail. (marcos@marcosregis.com)

0
11/03/2013 2:12pm
(~11 anos atrás)
luiz fernando respondeu:
<?php
$q = mysql_query("SELECT MAX(numero) FROM diligencia WHERE dia='".date("d")."'"); //procura o maior valor do campo no ano atual
$r = mysql_fetch_array($q); //joga num array...
$max = $r[0]+1; //adiciona 1 para o proximo valor
?>
dentro do form
<input type="hidden" name="controle" value="<?php echo strftime("$max-%d-%b");?>">

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)