Visualizzazione risultati 1 fino 15 di 15

Discussione: Confronto fra date

  1. #1
    araim non è connesso Utente attivo
    Data registrazione
    26-06-2004
    Messaggi
    275

    Predefinito Confronto fra date

    Ciao a tutti, stò cercando di fare un confronto fra date per un bann dal sito.
    Voi direte sarà semplice da fare, stesso avevo pensato anche io, ma così
    non sembra... ho provato diverse soluzioni, ma non va, non funziona:

    la prima fra tutte:

    Codice PHP:
    if ($date>=$query[ban_fine]) { fine ban - pulisco il db } else { sei ancora bannato }
    ho anche preso la data con list e explode cercando di far inserire in data di bann una data tipo 01-02-2000-12-30 e confrontato numero per numero con il corrispettivo... ma niente, mi potete aiutare??

  2. #2
    Guest

    Predefinito

    E' la forma delle date che è sbagliato, o meglio, non è adatto allo scopo.
    Il confronto numerico tra date si fa con il timestamp o cone le date in formato americano: aaaa-mm-gg hh-mm-ss


    ciao!

  3. #3
    araim non è connesso Utente attivo
    Data registrazione
    26-06-2004
    Messaggi
    275

    Predefinito

    Codice PHP:
    date('d/m/Y H:i');
    questo è il formato data che vado a leggere,
    quello in db è nello stesso formato ...

    perchè non dovrebbe confrontarlo??

  4. #4
    Guest

    Predefinito

    Perchè il confronto che devi fare è per forza di cose numerico, e quelle invece sono stringhe, e nè mysql nè php riescono a confrontarle.


    Ciao!

  5. #5
    araim non è connesso Utente attivo
    Data registrazione
    26-06-2004
    Messaggi
    275

    Predefinito

    Codice PHP:
    $giorno=date('d');
    $mese=date('m');
    $anno=date('Y');
    $ora=date('H');
    $minuti=date('i');
    list(
    $g,$m,$a,$o,$mi) = explode('-',$esilio[ban_fine]);
    non funziona nemmeno se faccio così ... eppure in questo caso sono numeri all'interno delle variabili... suggerimenti in proposito?

  6. #6
    Guest

    Predefinito

    ma lì non fai nessun confronto....


    Ciao!

  7. #7
    araim non è connesso Utente attivo
    Data registrazione
    26-06-2004
    Messaggi
    275

    Predefinito

    in quello script di cui sopra, che riporto di seguito, manca la if di controllo, ogni campo viene confrontato con ">=" o "<=" a seconda di quale dei due metto prima, se la data di ban o quella del giorno. Però pur aggiungendo questo genere di controllo, lo script non va...

    Codice PHP:
    $giorno=date('d');
    $mese=date('m');
    $anno=date('Y');
    $ora=date('H');
    $minuti=date('i');
    list(
    $g,$m,$a,$o,$mi) = explode('-',$esilio[ban_fine]);

    if(
    $giorno>=$g && $mese>=$m && $anno>=$a && $ora>=$o && $minuti>=$mi) { login ok, pulisco il db dal ban } else { sei bannato fino al ... }

  8. #8
    Guest

    Predefinito

    L'explode è sbagliato se il formato della data memorizzata è d/m/Y H:i

    EDIT: ti consiglio di modificare tutte le date nel DB come timestamp, attraverso la funzione mktime di php o qualcos'altro di equivalente di sql.


    ciao!

  9. #9
    araim non è connesso Utente attivo
    Data registrazione
    26-06-2004
    Messaggi
    275

    Predefinito

    l'explode è giusto, ho fatto in modo che nel db risulti la data scritta con un separatore unico, cioè il " - " ... per cui l'explode funziona...

  10. #10
    Guest

    Predefinito

    Prova a stampare tutte le variabili.

    PS: hai letto l'edit sopra?


    Ciao!

  11. #11
    araim non è connesso Utente attivo
    Data registrazione
    26-06-2004
    Messaggi
    275

    Predefinito

    si ho letto del timestamp, stò cercando di capire come applicarlo alla mia soluzione...
    ho stampato le variabili e le confronto, sono corrette... sono identiche, o nel caso maggiori dell'ora attuale.

  12. #12
    Guest

    Predefinito

    posta qui il risultato delle stampe.


    ciao!

  13. #13
    araim non è connesso Utente attivo
    Data registrazione
    26-06-2004
    Messaggi
    275

    Predefinito

    data dal db: 03,10,2008,12,10 | data di oggi: 03,10,2008,13,20

    la if dovrebbe essere: se DATA DI OGGI >= DATA DEL DB allora LOGIN else BANN

  14. #14
    Guest

    Predefinito

    Ma tu il confronto lo fai con quelle stringhe lì?

    Comunque sia, io ti consiglio di fare la conversione come detto prima, ti eviti tutti questi casini, presenti e futuri.


    ciao!

  15. #15
    Guest

    Predefinito

    Citazione Originalmente inviato da debug Visualizza messaggio
    Ma tu il confronto lo fai con quelle stringhe lì?

    Comunque sia, io ti consiglio di fare la conversione come detto prima, ti eviti tutti questi casini, presenti e futuri.


    ciao!
    Quoto appieno aggiungendo che puoi usare la funzione mktime(); (come detto da debug) e per quanto riguarda quando inserisciil record nel db puoi usare la funzione time(); che genera il timestamp corrispondente al secondo in cui si accede alla pagina.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •