Data retroativa
Olá, tenho a seguinte dúvida:
"Como proibir que um usuário selecione uma data retroativa em um input do tipo date?"
bom, ja procurei bastante e não consegui nada ainda
o que realmente preciso é alguma forma de comparar a data digitada ou simplesmente bloquear os dias anteriores ao de hoje
mas permitir datas futuras, e tem que ser do tipo date, "não pode ser text" ? não
se alguém souber ou achar um material, sinta-se a vontade
"Como proibir que um usuário selecione uma data retroativa em um input do tipo date?"
bom, ja procurei bastante e não consegui nada ainda
o que realmente preciso é alguma forma de comparar a data digitada ou simplesmente bloquear os dias anteriores ao de hoje
mas permitir datas futuras, e tem que ser do tipo date, "não pode ser text" ? não
se alguém souber ou achar um material, sinta-se a vontade
Nicolas
Curtidas 0
Respostas
Marisiana Battistella
30/06/2015
Um exemplo simples de comparação de datas no PHP:
// compara os dois timestaps if ($data_inteiro_01 < $data_inteiro_02) { echo "{$data_01} é menor que {$data_02}"; } else { echo "{$data_01} é maior que {$data_02}"; }
GOSTEI 0
Marisiana Battistella
30/06/2015
Não sei se é isso, de fato, que você precisa, mas essa é uma das formas de realizar comparativos entre duas datas.
Você pode utilizar esse teste para fazer a validação dos campos antes de salvar os dados, ou no momento em que é selecionada a data que deve ser futura.
Você pode utilizar esse teste para fazer a validação dos campos antes de salvar os dados, ou no momento em que é selecionada a data que deve ser futura.
GOSTEI 0
Fernando C
30/06/2015
Outra possibilidade:
supondo que o campo onde o usuario digitou a data se chame cxbuscadia;
tente um if, comparando com o dia de hoje - função date();
tipo:
supondo que o campo onde o usuario digitou a data se chame cxbuscadia;
tente um if, comparando com o dia de hoje - função date();
tipo:
$cxbuscadia=$_POST['cxbuscadia']; if $cxbuscadia < date('Y-m-d') { echo "esta busca não é permitida"; } else { bla bla bla }
GOSTEI 0
Marisiana Battistella
30/06/2015
Nicolas, você conseguiu resolver?
GOSTEI 0
Nicolas
30/06/2015
criei uma função da seguinte forma
function dataRetroativa(x,id){
var myDate = new Date();
var dia = myDate.getDate();
if(dia<10){
dia = "0" + dia;
}
y = myDate.getFullYear() + "-" + '0'+(myDate.getMonth() + 1) + "-" + dia;
if(y > x){
alert('NÃO SÃO PERMITIDAS DATAS RETROATIVAS!')
document.getElementById(id).value=y;
}
}
onde quando eu a chamo pelo onchange eu passo o this.value e this.id
e assim eu testo X, que é o value, com Y, que é uma data meio ganbiarra
pois como está ali na função eu tenho que adicionar mais 1 ao mês porque ele devolve um mês anterior
então se a data for retroativa ele devolve o Y que é a data de hoje ao campo que foi passado o ID por parametro
Funcionou pra mim, mas creio eu que não é a forma mais correta de se fazer
mesmo assim testei com várias datas pra ver se não ia sair um mes 13 e algo parecido, mas deu tudo crerto
function dataRetroativa(x,id){
var myDate = new Date();
var dia = myDate.getDate();
if(dia<10){
dia = "0" + dia;
}
y = myDate.getFullYear() + "-" + '0'+(myDate.getMonth() + 1) + "-" + dia;
if(y > x){
alert('NÃO SÃO PERMITIDAS DATAS RETROATIVAS!')
document.getElementById(id).value=y;
}
}
onde quando eu a chamo pelo onchange eu passo o this.value e this.id
e assim eu testo X, que é o value, com Y, que é uma data meio ganbiarra
pois como está ali na função eu tenho que adicionar mais 1 ao mês porque ele devolve um mês anterior
então se a data for retroativa ele devolve o Y que é a data de hoje ao campo que foi passado o ID por parametro
Funcionou pra mim, mas creio eu que não é a forma mais correta de se fazer
mesmo assim testei com várias datas pra ver se não ia sair um mes 13 e algo parecido, mas deu tudo crerto
GOSTEI 0
Marisiana Battistella
30/06/2015
Que bom que deu certo...!
Obrigada pelo feedback!
Obrigada pelo feedback!
GOSTEI 0