1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Comparação de Datas [javascript + php]

Discussão em 'Web Development' iniciada por ReVenG3r, 10 de Março de 2008. (Respostas: 10; Visualizações: 4452)

  1. Boas...cá estou eu de novo!!!

    O meu problema é o seguinte:

    Tenho uma tabela em php denominada "evento" que contem os campos (dia, mes, ano, etc)!

    Quando insiro um evento, ele insere-me na BD os campos dia mes ano e de seguida faz-me uma procura aparecendo +/- o que se segue:

    [​IMG]

    Onde a data é-me procurada aqui:



    [​IMG]
    [/SIZE]

    O que aparece aí como "[SIZE=-1]Evento já ultrapassado" refere-se a estas linhas de código e são mera experiência:

    Alguma ideia sobre como comparar a data do dia de hoje com a data que é inserida por dia, mês, ano, na base de dados aquando da criação de um novo evento??? :/

    Abraços e obrigado :)
    [/SIZE]
     
    Última edição: 10 de Março de 2008
  2. anjo2

    anjo2 Power Member

    O javascript é client-side, o php é server-side, por isso se houver comparações, tem de ser pelo cliente e não pelo servidor.

    Precisas mesmo de ir buscar a data do cliente? Para quê?
     
  3. slack_guy

    slack_guy Power Member

    Seria qualquer coisa assim:
    Código:
    <script type='text/javascript'>
    
       var data_server = '20080309'; // valor escrito em PHP
    
       if ( CompData(data_server) < 0 ) {
           document.write('Evento já ultrapassado');
       }
    
       function CompData(data) {
    
           var data_temp = new Date();
           var dia = data_temp.getDate();
           var mes = data_temp.getMonth() + 1;
           var ano = data_temp.getFullYear();
           var data_local = ano + PadDigits(mes) + PadDigits(dia);
    
           if ( data < data_local ) return -1; // data anterior
           if ( data == data_local ) return 0; // data igual
           if ( data > data_local ) return 1;  // data posterior
    
       }
    
       function PadDigits(n) {
    
           n = n.toString();
           var pd = '';
           if (2 > n.length) { 
               for (i=0; i < (2 - n.length); i++) { 
                   pd += '0'; 
               } 
           } 
           return pd + n.toString();
       } 
    
    </script>
    
     
  4. Concordo com o anjo2. Acho que seria mais acertado fazer isso tudo em PHP, uma vez que a data do cliente pode não estar sequer sincronizada com a do servidor.
     
  5. slack_guy

    slack_guy Power Member

    Precisamente por essa razão é que deveria trabalhar - neste caso em concreto - no lado do cliente.
     
  6. anjo2

    anjo2 Power Member

    Errado, então o cliente tem o relógio mal, o site iria dizer que ainda não tinha acontecido?

    Um evento às 15h GMT, não é o mesmo que 15h GMT+1, se o relogio do servidor estiver em GMT, ou mesmo que não esteja, dá para mudar.
     
  7. slack_guy

    slack_guy Power Member

    Isso tanto é verdadeiro para o lado do cliente como para o lado do servidor. Se o servidor tiver o relógio atrasado/adiantado o disparate é exactamente o mesmo (e olha que já vi servidores com relógios atrasados).

    Além disso, o problema é maior do que aparenta. O que acontece é que o ReVenG3r não colocou as cartas todas em cima da mesa, e portanto é (para mim) complicado sugerir-lhe o que quer que seja a não ser responder exactamente à questão dele: como comparar a data do servidor com a data do cliente.

    Se me perguntassem se eu alguma vez faria isso... não, porque o problema que ele quer resolver - dependendo da aplicação -, não se resolve desta forma. Mas não foi essa a questão. :-)
     
  8. anjo2

    anjo2 Power Member

    Tu no lado do servidor podes acertar as horas na variável que tiveres. Este não deve andar sempre a mudar, já do lado do cliente é uma incógnita.
     
  9. O objectivo é ele não me permitir ver o conteudo de determinado evento quando a sua data é passada!!!

    Claro que esse evento estará com uma data registada na minha base de dados...ou não a conseguiria ir buscar :P

    A minha grande duvida é como fazer para comparar ESSA data (inserida na BD como a "data em que ocorre um evento", onde contem os campos dia, mes, ano) com a data que vou buscar do lado do cliente!!!

    Claro que existirão complicações caso a data do lado do cliente esteja errada ou raio que a valha...mas o que eu queria saber é se haverá metodo para fazer isso pois foi isso que me foi pedido para fazer!

    Se não der por esse metodo...que metodo devo entao utilizar?

    Abraços e desculpem a demora :/
     
  10. slack_guy

    slack_guy Power Member

    deves estar a brincar.... já te deixei o código escrito.. é só copiar e colar.... do que é que estás à espera?
     
  11. Tsunamy_boy

    Tsunamy_boy Banido

    se criares duas datas e as subtraires penso k funka!
    caso contrario pegas no codigo javascript acima e fazes um <? echo $data_sistema ?> e um <? echo $data_nova_data ?> nos sitios certos, (num colas a data do servidor e no outro colas a data que pretendes, k o javascript faz o calculo)....
    agora se queres saber os comandos para a data de sistema em PHP é procurar meu amigo....
    manda-me uma msg s me lembrar trago uma cena k t da as horas de diferença entre duas datas, caso queiras os dias ou os meses é so mecher em valores numericos depois...
    abraço
     
    Última edição: 12 de Março de 2008

Partilhar esta Página