Jump to content
acao

[Resolvido] Comparar campo num formulario e função date

Recommended Posts

acao

boas

1. É possivel comparar dois campos text antes de clicar no botao submit, em php ou html ?

2. num formulario tenho um campo data-hora e quero carrega-lo com a data-hora de efectuar o registo.

se usar a função date ---> retorna-me a data do registo com uma hora a mais

se usar gmdate --> retorna-me a data do registo com uma hora a menos

porque a função date não retorna a hora correcta?

resolvi assim:

    $timestamp = mktime(date("H")-1);
    $novoRegisto->Dataregisto = date("Y-m-d H:i:s",$timestamp);

isto está correcto ou tenho que gravar a hora «GMT»

agradecia ajuda

cumps

acao

Share this post


Link to post
Share on other sites
bioshock

if($_POST['campo1'] == $_POST['campo2'])
{
}

Quanto à segunda questão, não percebi. Queres a data e hora actual?

date("Y-m-d H:i:s")

Edited by bioshock

Share this post


Link to post
Share on other sites
acao

if($_POST['campo1'] == $_POST['campo2'])
{
}

obrigado pela resposta.

Eu já tinha pensado nisso, mas acontece que eu quero comparar os valores antes de fazer o clik do botão ou seja (antes de enviar os dados para emitir uma msg se for necessario.).

ou em alternativa

depois de clikar no botão submit (enviar) quando os dois campos forem diferentes não limpar os campos do formulario.

ps: é num formulario de envio de dados.

Quanto à segunda questão, não percebi. Queres a data e hora actual?

date("Y-m-d H:i:s")

sim a minha ideia era gravar a datahora actual, mas acontece que a função date devolve-me a hora espanhola ou seja mais uma hora, eu consegui acertar a hora, mas agora não sei se está correcto, porque:

imagine que fiz o registo em portugal colocando assim a hora actual.

depois se verificar a hora em espanha vou ter lá a hora de registo hora portuguesa, (desfesada da hora espanhola).

não concorda que deveria gravar a hora GMT (UTC) e depois ao fazer o select converter para a hora do pais de visualização. (mas não sei se isso é possivel.

não sei se fiz entender.

cumps

acao

Share this post


Link to post
Share on other sites
yoda

Para obter as horas em GMT 0 (Lisboa) em PHP :

# default timezone
date_default_timezone_set('Europe/Lisbon');

# default locale
setlocale(LC_ALL, 'pt_PT.utf-8', 'ptg', 'pt_PT', 'portuguese', 'pt_PT@euro');

Quanto à validação dos campos, podes fazer com Javascript, basta apanhares o evento submit do formulário e comparares os valores antes de permitir que o envio seja feito. Caso decidas usar jQuery (biblioteca Javascript) para te facilitar, podes fazer algo assim :

$('form[name="nome_do_formulario"]').on('submit', function() {
if ($('input[name="valor_1"]', this).val() != $('input[name="valor_2"]', this).val())
{
 alert('Os valores não coincidem, tente outra vez.');
 return false;
}
});

Share this post


Link to post
Share on other sites
acao

boas

obrigados aos dois pelas respostas

@bioshock, estive a ver os links mas ainda acho muito confuso usar o json, mas registei o link que me enviou (obrigado).

Para obter as horas em GMT 0 (Lisboa) em PHP :

# default timezone
date_default_timezone_set('Europe/Lisbon');

# default locale
setlocale(LC_ALL, 'pt_PT.utf-8', 'ptg', 'pt_PT', 'portuguese', 'pt_PT@euro');

@yoda, funcionou em pleno, corrigiu a hora local e assim até já me retorna a diferença horaria correcta.

mais uma questão:

1. devo utilizar a função gmdate para gravar na db a datahora e depois no select utilizar a datagravada + a diferença horaria.

ex:

/*$timestamp = mktime(date("H")+1);
    $novoRegisto->DataCadastro = date("Y-m-d H:i:s",$timestamp);

o (+1 do mktime) seria retornado utilizando a função date_default_timezone_get().

ou

será melhor gravar com a função date e utilizar normalmente.?

$('form[name="nome_do_formulario"]').on('submit', function() {
if ($('input[name="valor_1"]', this).val() != $('input[name="valor_2"]', this).val())
{
 alert('Os valores não coincidem, tente outra vez.');
 return false;
}
});

a minha ideia era não utlizar javascript, mas sendo assim terei que usar.

já agora se fizer um form dinamico utilizando uma variavel para ter acesso a um ou outro form. explicando melhor(ter dois forms um tipo envio de dados e outro dinamico com os campos que quero que não sejam descarregados e carrega-los com variaveis + os dois campos a comparar (vazios) + o submit).

funcionará, merece a pena perder tempo em implementar.

obrigado pelas respostas.

cumps

acao

Share this post


Link to post
Share on other sites
yoda

Podes guardar as datas como quiseres, mas por exemplo o MySQL já tem funções para as datas, e situações como guardar a data actual podem ser definidas directamente na query (podes trabalhar com fusos horários sem problemas). Podes também definir um campo para ser actualizado com a data corrente sempre que é inserido um registo.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.