[PHP][RISOLTO] Effettuare la somma dei tempi di lavorazione

elpirata

Utente Attivo
18 Mar 2009
263
7
18
Un saluto a tutti,
avrei la necessità di inserire alla fine della mia tabella php un riepilogo che sommi le ore estratte da una query:



In sostanza nella tabella php ricevo in ingresso i minuti, esempio se l'utente deve inserire come tempi di lavorazione 1 ora e 15min inserirà nel db 75

Poi per la conversione da minuti ad ore questo snippet di codice

PHP:
<?php
$tempo = $tlav;  // tempo in minuti
$ore = floor($tempo / 60);
$minuto = $tempo % 60;
//echo "$ore:$minuto";
?>
e per visualizzarlo nella <td> questo:

HTML:
<td class='<?= $tlavcss='tlavcss'; ?>'><?php echo ($tlav == 0 ? "Tempo di lavorazione non inserito" : $ore. "".$orar. " " .$congiunzione. " ".$minuto. "" .$minuti); ?></td>
ora, vorrei inserire fuori dalla <table> un <div> che al suo interno mostri all'utente il totale delle ore vendute per la data richiesta, ad esempio l'utente chiede di mostrare tutti gli interventi da data 20/12/2017 a data 20/12/2017 e il sistema oltre a riportargli i dati come da immagine allegata, nel box sommi il totale ore.

Grazie :oops:
 

Allegati

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
se non ho capito male tu fai una query sulla tabelle dalla data X alla data Y e estrai i tempi espressi in minuti, giusto?
uora ti shematizzo il while di estrazione
PHP:
//.....
$totale =0;
echo "<table>";
while($riga=mysqli_fetch_assoc($ris)){
    //gli altri dati
    $tempo=$riga['tempo'];
    //visualizzi i dati
    echo "<tr><td>$uno</td><td>$temp0</td>ecc.. </tr>";
    $totale+=$tempo;
}
echo "</table>";
$tempo_totale = floor($totale / 60)."h ".($totale % 60)."m ";
echo "<div class='pinco_pallo'>tempo_totale</div>";
//....
guarda che è uno schema che devi mettere a posto con i nomi campi che hai tu
 
  • Like
Reactions: elpirata

macus_adi

Utente Attivo
5 Dic 2017
1.301
86
48
IT/SW
Quoto @borgo italia , ma avrei optato per l'inserimento un'alternativa un pò più intuitiva, ad esempio data e ora per inizio lavori e data e ora per fine lavori, quindi l'operatore non deve mettere i minuti di lavoro ma inerirà esattamente due input datetime.
Nel db salvi l'informazione come ANNO/MESE/GIORNO ORA:MINUTI:SECONDI, quandi effettui l'estrazione dal DB non resta altro che esplicitare nella query " TIMEDIFF(TIME(campo_fine_lavoro), TIME(campo_inizio_lavoro)) as my_sec".
Quando hai recuperato i dati in questo modo sei "sicuro (per modo di dire)" che nessuno abbia sbagliato l'inserimento dei minuti di lavoro.
 

elpirata

Utente Attivo
18 Mar 2009
263
7
18
Ciao @macus_adi ,
mi trovi in sintonia con il tuo pensiero per quel che riguarda una corretta logica operativa che dovrebbe avere un gestionale. Ti dico però che per quelle che sono le esigenze del mio gestionale è necessario se non obbligatorio inserire le ore espresse in minuti, oltretutto cosi facendo ho evitato la creazione di altri due campi nel db e con un solo campo ed il suggerimento fornito da @borgo italia ho ottenuto perfettamente il risultato atteso.

Grazie a entrambi ed al forum per il continuo supporto, per me fondamentale ;)