Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    confronto tra periodi di tempo

    Salve a tutti
    devo creare una pagina php che faccia un confronto fra periodi compresi tra due date.
    mi spiego meglio:
    l'utente sceglie data1 e data2 e io devo controllare se quel periodo di tempo si interseca con le due date salvate nel database data_db1 e data_db2.

    Sarà che ho dormito poco ma non riesco a venirne a capo. sapreste indicarmi una funzione php, o ancora meglio una query ?
    grazie ^^

  2. #2
    non e' che sia chiarissima la domanda. Che intendi dire per "intersecare" ???

    Facciamo finta che voglia dire date di inizio e fine "presenti" in un dato range di date.

    codice:
    where 
          '$data_inizio' between data_db1 AND data_db2
          AND
          '$data_fine' between data_db1 AND data_db2

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    per intersecare intendo verificare che almeno un giorno del primo intevallo sia compreso anche nel secondo intervallo

    es:

    se il secondo intervallo è 05/01/2010 -10/01/2010

    se il secondo intervallo è 06/01/2010 - 11/01/2010 , allora si interseca
    se il secondo intervallo è 04/01/2010 - 09/01/2010 , allora si interseca
    se il secondo intervallo è 02/01/2010 - 11/01/2010 , allora si interseca
    e il secondo intervallo è 12/01/2010 - 13/01/2010 , allora no

  4. #4
    Originariamente inviato da arcadio21
    per intersecare intendo verificare che almeno un giorno del primo intevallo sia compreso anche nel secondo intervallo

    es:

    se il secondo intervallo è 05/01/2010 -10/01/2010

    se il secondo intervallo è 06/01/2010 - 11/01/2010 , allora si interseca
    se il secondo intervallo è 04/01/2010 - 09/01/2010 , allora si interseca
    se il secondo intervallo è 02/01/2010 - 11/01/2010 , allora si interseca
    e il secondo intervallo è 12/01/2010 - 13/01/2010 , allora no
    mancherebbe di capire qual'e' il primo intervallo

    ad ogni modo sappi che per fare questo controllo la data deve essere nel formato ANSI yyyy-mm-dd e non in un formato stringa come hai presentato.

    Presumendo che il primo intervallo sia il quello tra 05/01/2010 -10/01/2010 si direbbe che semplificando sia sufficiente che la prima data dell'intervallo sia compresa in quello del secondo range.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    copiancollato, e mi son scordato di modifcare :P

    se il secondo intervallo è 05/01/2010 -10/01/2010

    1)se il primo intervallo è 06/01/2010 - 11/01/2010 , allora si interseca
    2)se il primo intervallo è 04/01/2010 - 09/01/2010 , allora si interseca
    3)se il primo intervallo è 02/01/2010 - 11/01/2010 , allora si interseca
    4)se il primo intervallo è 12/01/2010 - 13/01/2010 , allora no

    si, il formato delle date è yyyy-mm-dd nel codice

    si direbbe che semplificando sia sufficiente che la prima data dell'intervallo sia compresa in quello del secondo range.
    no, perchè l'ipotesi 2 non è verificata, ne la 3

  6. #6
    Tu hai scambiato il primo intervallo con il secondo nell'ultimo tuo post. Ti avevo messo come premessa il contrario di quanto e' poi risultato

    Inverti quanto ho detto prima.

    si direbbe che semplificando sia sufficiente che la prima data del secondo intervallo sia compresa in quello del primo range.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    neanche, perchè così sarebbero verificate la due e la 3 ma non la 1.

  8. #8
    Originariamente inviato da arcadio21
    neanche, perchè così sarebbero verificate la due e la 3 ma non la 1.
    usa la fantasia. Compara anche la seconda data con un OR. Ma a capire cosa vuoi fare....

    per ora sono rimasto che ti serve l'attraversamento del periodo o prima oppure dopo una specifica data, ma non con data contenuta nel periodo di confronto oppure data totalmente fuori.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    l'idea e quella di creare un form in cui un utente inserisce due date per indicare un periodo di tempo che gli interessa, e nella pagina successifa far vedere delle offerte attive in quel periodo.

    quindi mettiamo che ci sono queste offerte che vanno dal

    1)01/01/2010-31/01/2010
    2)01/01/2010-05/01/2010
    3)10/01/2010-13/01/2010
    4)12/01/2010-14/01/2010
    5)12/01/2010-22/01/2010
    6)10/02/2010-11/02/2010

    se l'utente immette come periodo che gli interessa

    11/01/2010 al 15/01/2010

    devo far comparire la 1, la 3 la 4 e la 5, perchè per almeno un giorno si sovrappongo al periodo inserito.

    come vedi, nella 1 entrambe le date sono date fuori dal range ma che devono dare un risultato valido

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.