Visualizzazione dei risultati da 1 a 5 su 5

Discussione: calcolo del tempo

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    147

    calcolo del tempo

    Ho una tabella in mysql dove vengono salvate le date strutturate in questo modo:
    id--idutente---start---stop---time

    riesco senza nessun problema a salvare la data nei campi start e stop, però dovrei salvare nel campo time quanto tempo è trascorso tra start e stop.
    Come confronto le due date? Devo trasformarle in secondi e poi fare il confronto?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Prendi i tempi direttamente in formato timestamp, così le operazioni saranno estremamente semplici.
    Anche nel db salvali in formato timestamp e non in formato date.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    147
    Ok la tabella salva la data "start" e "stop" in formato timestamp poi con la formula per calcolare la differenza nn mi salva nulla nel campo "tempo" anch'esso in formato timestamp
    Nel db trovo sempre tutto a zero (anno, mese giorno, ora, minuti secondi... tutto a zero)
    Non capisco se è un problema di calcolo o di salvataggio nel db.

    Codice PHP:
    //calcolo tempo
    $start=mysql_query("SELECT start FROM class WHERE idscheda=$idscheda AND idutente=$idutente");
    $stop=mysql_query("SELECT stop FROM class WHERE idscheda=$idscheda AND idutente=$idutente");
       
    $diff=$stop $start;
    if (
    $diff 86400 <= 0){ 
    $days $diff 86400;
    }

    if(
    $diff 86400 0){
    $rest = ($diff 86400);
    $days = ($diff $rest) / 86400;

    if(
    $rest 3600 ){
    $rest1 = ($rest 3600);
    $hours = ($rest $rest1) / 3600;

    if( 
    $rest1 60 ){
    $rest2 = ($rest1 60);
    $minutes = ($rest1 $rest2) / 60;
    $seconds $rest2;
    }else{
    $minutes $rest1 60;
    }
    }else{
    $hours $rest 3600;
    }
    }
    $difference $seconds + ($days 86400) + ($hours 3600) + ($minutes 60);


    $tempo=mysql_query("UPDATE class SET tempo='$difference' WHERE idscheda=$idscheda AND idutente=$idutente"); 
    Non capisco se sia sufficiente mettere
    Codice PHP:
    $tempo=mysql_query("UPDATE class SET tempo='$diff' "); 
    comunque neppure in questo caso nn mi salva niente...
    Ultima modifica di lume70; 27-11-2013 a 19:25

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    $start=mysql_query("SELECT start FROM class WHERE idscheda=$idscheda AND idutente=$idutente");
    $stop=mysql_query("SELECT stop FROM class WHERE idscheda=$idscheda AND idutente=$idutente");

    $diff=$stop - $start;

    In $start e $stop non ci sono i valori che pensi tu, sono i recordset restituiti dalle query, quindi ti manca il mysql_fetch_assoc() per estrarre i dati.
    Ad ogni modo, di query ne basta una sola.
    Codice PHP:
    $result mysql_query("SELECT start,stop FROM class WHERE idscheda=$idscheda AND idutente=$idutente");

    if ( 
    mysql_num_rows($result) > 0)
    {
        
    $dati mysql_fetch_assoc($result);

        
    $diff $dati['stop'] - $dati['start'];
        ....
    }
    else
    {
        echo 
    'Non ho trovato i dati cercati';


  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    147
    sono proprio asino.... della query sapevo di farne una sola, ma nn so come mi sia uscita la scelta di farne due e senza poi creare l'array... che cogl**** che sono.....

    Solo che ho un problema nel risultato della differenza.
    $diff mi rimane sempre uguale a zero.
    Ho verificato se i dati venissero presi bene:
    Codice PHP:
    $result=mysql_query("SELECT start, stop FROM class WHERE idscheda=$idscheda AND idutente=$idutente");
       if ( 
    mysql_num_rows($result) > 0)
    {
        
    $dati mysql_fetch_assoc($result);
        echo 
    "orario start".$dati['start'];
        echo 
    "orario stop".$dati['stop'];
        
    $diff $dati['stop'] - $dati['start'];
       
    }
    echo 
    "differenza".$diff
    ed è tutto corretto solo che $diff è sempre 0
    orario start2013-11-28 18:53:45orario stop2013-11-28 18:53:46differenza0

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.