Array
(
)

Data retroativa

Nicolas
   - 30 jun 2015

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

Marisiana
   - 30 jun 2015

Um exemplo simples de comparação de datas no PHP:
#Código

// 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}";
}

Marisiana
   - 30 jun 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.

Fernando C
   - 30 jun 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:

#Código

$cxbuscadia=$_POST['cxbuscadia'];

if $cxbuscadia < date('Y-m-d')
{
echo "esta busca não é permitida";
}

else
{
bla bla bla
}

Marisiana
   - 02 jul 2015

Nicolas, você conseguiu resolver?

Nicolas
   - 04 jul 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

Marisiana
   - 04 jul 2015

Que bom que deu certo...!
Obrigada pelo feedback!