• User Newbie

    Calcolo tempo impiegato da tabella in php e mysql

    Salve,
    ho un problema da risolvere, se qualcuno può aiutarmi per favore.

    Devo calcolare il tempo effettivo trascorso (tenendo conto delle pause) per iniziare e terminare alcune attività che ho inserito in una tabella in mysql.

    Ho bisogno di scrivere uno script php, che collegato alla tabella, mi dia come risultato finale una cosa del genere: '10 giorni, 3 ore e 15 minuti'.

    La mia tabella è strutturata in questo modo:

    [TABLE="class: grid, width: 500, align: center"]

    [TD]ID[/TD]
    [TD]STATO[/TD]
    [TD]RIFERIMENTO[/TD]
    [TD]Data / Ora[/TD]
    [/TR]

    [TD]1[/TD]
    [TD]Inizio[/TD]
    [TD]1010[/TD]
    [TD]15/09/2017 07:30[/TD]
    [/TR]

    [TD]2[/TD]
    [TD]Pausa[/TD]
    [TD]1010[/TD]
    [TD]15/09/2017 15:00[/TD]
    [/TR]

    [TD]3[/TD]
    [TD]Ripreso[/TD]
    [TD]1010[/TD]
    [TD]16/09/2017 08:00[/TD]
    [/TR]

    [TD]4[/TD]
    [TD]Terminato[/TD]
    [TD]1010[/TD]
    [TD]17/09/2017 10:00[/TD]
    [/TR]

    [TD][/TD]
    [/TR]
    [/TABLE]

    [TABLE="class: grid, width: 500, align: center"]

    [/TR]

    [/TR]

    [/TR]
    [/TABLE]
    [TABLE="class: grid, width: 500, align: center"]

    [/TR]

    [/TR]

    [/TR]
    [/TABLE]

    • per Stato intendo se sto eseguendo o meno la mia attività;
    • il Riferimento è un numero univoco che assegno alla mia attività;
    • la Data / Ora è l'orario in cui la mia attività cambia stato.

    Credo dovrei calcolare la differenza di orario che c'è tra lo stato 'Inizio' e 'Pausa', poi tra 'Ripreso' e 'Terminato', ma mai tra 'Pausa' e 'Ripreso' ovviamente; poi fare la somma delle differenze.

    Avete qualche suggerimento su come procedere?

    Grazie, saluti


  • User Attivo

    Ciao,
    non so se la tua è un'esigenza reale o se fa parte di un compito/esame ma, nel primo caso, forse GrindStone, un software gratuito per la gestione dei task, può aiutarti.


  • User Newbie

    Ciao,
    La mia è un'esigenza reale, nel senso che è una parte che dovrei integrare in un software scritto in php.

    Grazie per aver risposto e per avermi consigliato il programma, ma non è quelo di cui ho bisogno. 😉


  • User Attivo

    Scusami, avevo male interpretato l'esigenza.
    Secondo me ci sono due modi di procedere:

    1. il calcolo dei tempi avviene al momento dell'inserimento, cioè quando inserisci un evento di chiusura immediatamente viene calcolato il tempo trascorso dal precedente evento di apertura e memorizzato nel db
    2. il calcolo avviene a posteriori. In questo caso devi creare una sorta di "sequencer" che, messi in ordine gli eventi, ne fa la scansione facendo tutti i calcoli del caso.
      Quindi, quando incontra un evento di apertura, va a cercare il successivo evento di chiusura e calcola i tempi.

    È chiaro che devi prevedere anche la possibilità di errori, cioè due eventi di apertura consecutivi oppure due eventi di chiusura consecutivi oppure l'assenza totale di uno dei due eventi.

    Spero di essere stato d'aiuto