Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922

    ricorrenze eventi senza inserimenti multipli

    Il mio problema è il seguente: devo realizzare una specie di agenda con eventi singoli e altri che ricorrono giornalmente, settimanalmente, mensilmente, ecc.
    Il metodo che ho trovato io consiste, nel caso di ricorrenze, nell'inserire in una tabella tanti record quante sono le ricorrenze con i rispettivi unix timestamp.
    Ovviamente nel caso un compito debba essere fatto tutti i giorni otterrei un database teoricamente infinito.
    E' possibile usare un metodo alternativo?

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Potresti avere una tabella nella quale avresti un codice che indicherebbe il tipo di evento.

    Ad esempio

    A00 - per gli eventi giornalieri
    S01 - S07 per gli eventi di ogni lunedi ad ogni domenica
    A01 - per gli eventi del primo giorno del mese
    A23 - per gli eventi del 23esimo giorno del mese
    AUG - per gli eventi dell'ultimo giorno del mese (28, 30 o 31)
    etc....

    E a partire dalla data ricavi il numero del giorno nel mese e il numero del giorno della settimana e cosi puoi fare un legame con la tabella degli eventi.

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    In pratica io vorrei, una volta popolato il mio db, poter effettuare delle query per sapere gli eventi quotidiani, quelli nell'arco della settimana, ecc.

    Non è possibile tramite la funzione mysql date_add, integrandola con php ciclare per il numero di ricorrenze per visualizzarle fino a quando la data odierna non ha superato l'ultima ricorrenza?

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    up

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Scusate se vi stresso ancora ma proprio non riesco a venirne a capo.
    Magari mi sono spiegato male mio.
    Facciamo conto che io abbia una tabella del genere:

    evento dataPrimaRicorrenza tipologiaRicorrenza numero ricorrenze
    1 30/05/2005 giornaliera 5
    2 02/06/2005 settimanale 10


    Cio significa che l'evento 1 si verifica il 30,31 maggio,1,2 e
    3 giugno.
    L'evento 2 si verifica il 2,il 9, il 16 giugno ecc.

    Come faccio a definire ad esempio gli eventi odierni e quelli che ricadono nell'arco di una settimana.
    Mi è stata suggerita la funzione date_add ma non riesco a capire come utilizzarla all'interno di php.
    Devo fare uno switch per verificare prima la tipologia di ricorrenza e poi applicare l'addddate o cosa?
    Per favore, datemi una mano, non so dove andare a parare.

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    date_add si usa con mysql.

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Sì lo so.
    Ma dentro Php si possono comunque usare le query di mysql.
    Grazie per il suggerimento che mi hai dato precedentemente.
    Il fatto è che sto facendo una sorta di stage e il capo mi ha detto che utilizzando date_add il problema è semplicissimo da risolvere ma non è andato oltre.
    Vuole che lo risolva in quel modo perchè quello di inserire tanti record quante sono le ricorrenze non lo aggrada (non ha tutti i torti).
    Come dice lui se ad esempio ogni giorno la mia agenda deve ricordarmi di guardare la mail non posso mettere un numero di ricorrenze infinito e quindi di record infiniti.

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Nessuno in grado di aiutarmi?

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Non so se ti sarà utile ma puoi guardare questo.


    codice:
    WHERE
       (ricorrenza = 'giornaliera' 
        AND data BETWEEN data_prima_occ AND DATE_ADD(data_prima_occ,INTERVAL num_ricor DAY)) 
    OR
       (ricorrenza = 'settimanale' 
        AND data BETWEEN data_prima_occ AND DATE_ADD(data_prima_occ,INTERVAL num_ricor * 7 DAY) 
        AND DAYOFWEEK(data) = DAYOFWEEK(data_prima_occ))

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.