Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: data

  1. #1
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489

    data

    ciao Ragazzi,
    non riesco a trovare l'errore questo è il codice
    Codice PHP:
    $risultato_3 mysql_query($sql_3) or die (mysql_error());
    while (
    $row_3 mysql_fetch_array($risultato_3))
    {
    $totale =$row_3['somma'];

    echo 
    $totale//è solo un echo per vedere se il timestamp è giusto. e lo è!

    $output3 date("H:i:s"$totale);                                          

    echo 
    "il totale complessivo di " $nome " e' di " $output3 " ore.";

    mentre il timestamp preso dalla db corrisponde alle ore effettive, con date mi da un risultato tutto diverso e non so perchè. è sbagliato il codice??

  2. #2
    date() vorrebbe un unix timestamp, tu cosa gli passi? cioe' cosa ti stampa $totale?

    e la query? manca....

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

  3. #3
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    ciao Piero,
    ho fatto una serie di elaborazioni dal'ultima volta ... con diversi step ora mi manca solo questa ma non riesco a capire il meccanismo...

    ecco il codice con la query
    Codice PHP:
    $sql_3 "select SUM(differenza) as somma 
    FROM nominativo   
    INNER JOIN orario ON nominativo.id = orario.nominativoid 
    WHERE nominativo = '
    $nome' AND data_in_m between '$data_in' AND '$data_out'";  

    $risultato_3 mysql_query($sql_3) or die (mysql_error());
    while (
    $row_3 mysql_fetch_assoc($risultato_3))             
    {             
    $tot_3 =$row_3['somma'];             
    echo 
    $tot_3// qui ho il totale delle di vari valori del campo chiamato differenza (tra timestamps  della tabella del db)        
    $output3 date("H:i:s"$tot_3); 
    echo 
    "il totale complessivo di " $nome " e' di " $output3 " ore.";             

    in effetti è proprio sulla "differenza" che mi areno. da diverse letture il timestamp è un numero che comprende la data e l'ora. ho presunto che la differenza sia sempre data e ora, se la differenza va oltre le 24 ore, o solo ore e minuti se inferiore alle 24.
    e su questo ne ho avuto conferma anche in alcuni passaggi di codice che funzionano benissimo, non presenti in questo codice.
    ora però prendendo le diverse differenze le vorrei sommare e ottenere la somma in ore e mimuti. ho pensato che date fosse la strada giusta ma non è cosi.
    grazie

  4. #4
    Originariamente inviato da ttcc
    in effetti è proprio sulla "differenza" che mi areno. da diverse letture il timestamp è un numero che comprende la data e l'ora. ho presunto che la differenza sia sempre data e ora, se la differenza va oltre le 24 ore, o solo ore e minuti se inferiore alle 24.
    e su questo ne ho avuto conferma anche in alcuni passaggi di codice che funzionano benissimo, non presenti in questo codice.
    ora però prendendo le diverse differenze le vorrei sommare e ottenere la somma in ore e mimuti. ho pensato che date fosse la strada giusta ma non è cosi.
    grazie
    un numero che comprende la data e l'ora. Dice poco.

    Se e' un unix timestamp conterra' il numero dei secondi e quindi si trattera' di un numero (123456789) messo ovviamente in un campo numerico. Se si trattasse invece di data-ora in chiaro, allora si tratterebbe di un campo datetime in formato ansi.

    date() vuole un unix timestamp.

    Quindi se sommi i valori presenti nel campo "differenza" si presume siano numeri che rappresentano secondi. Se questo presupposto e' vero il numero andra' diviso per 3600 per ottenere le ore, il resto diviso per 60 per ottenere i minuti ed il resto ulteriore rappresentera' i secondi.

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

  5. #5
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    ti riporto la tabella

    CREATE TABLE IF NOT EXISTS `orario` (
    `id` int(3) NOT NULL auto_increment,
    `istituto` varchar(20) NOT NULL,
    `data_in_m` int(11) NOT NULL,
    `data_out_m` int(11) NOT NULL,
    `data_in_p` int(11) NOT NULL,
    `data_out_p` int(11) NOT NULL,
    `differenza` int(11) NOT NULL,
    `nominativoid` int(3) NOT NULL,
    `data` date NOT NULL,
    PRIMARY KEY (`id`)


    di fatto dovrei prendere diversi valori di differenza (data in "meno" data out, ecc ecc), secondo nominativo e secondo periodo, sommarli (ottenendo cosi un tot) e ottenere poi le ore e i minuti se ci sono. quindi date() dovrebbe funzionare... gia prima di postare ho diviso per 3600 e ottenevo le ore giuste...
    invece con date () ottengo valori diversi e parziali.
    perchè? boh..
    adesso vado a letto leggiamo domani??


  6. #6
    estrai con la select "data_out - data_in" AS pippo

    poi prendi "pippo" e lo passi a strtotime()...

    quindi facciamo finta che tu hai portato $row["pippo"] in $differenza

    Codice PHP:
    $differenza $row['pippo']; 

    if(
    $differenza >= 3600)
         {
          
    $ciccio $differenza 3600;
          
    $differenza strftime("%H:%M:%S"$ciccio);
          } else {
                    
    $differenza "00:".strftime("%M:%S"$differenza);
                    }

    echo 
    $differenza

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

  7. #7
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    ciao
    ho letto
    questo pomeriggio proverò il tuo suggerimento.... (sono al lavoro)
    però leggendo ho intuito quanto mi dici...
    tieni presente che ho il timestamp (credo di esserne sicuro). con questo numero ottengo il numero
    Codice PHP:
    echo $tot_3

    ora se il numero è, ad esempio, 99000 qual'è il codice per avere ora e minuti (e secondi)?
    non è giusto utilizzare come ho fatto io con date("H:i")??


  8. #8
    Originariamente inviato da ttcc

    Codice PHP:
    echo $tot_3
    ora se il numero è, ad esempio, 99000 qual'è il codice per avere ora e minuti (e secondi)?
    non è giusto utilizzare come ho fatto io con date("H:i")??

    Codice PHP:
    $diff $tot_3;

    $ore floor($diff / (60*60));
    $minuti = ($diff 60) % 60;
    $p "$ore:$minuti:".($diff 60);
    echo 
    $p

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

  9. #9
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    funziona!! adesso farò un pò di prove...

    però vorrei capire...
    il numero è un timestamp perche date () non funziona?


  10. #10
    Originariamente inviato da ttcc
    funziona!! adesso farò un pò di prove...

    però vorrei capire...
    il numero è un timestamp perche date () non funziona?

    perche' date() rende una stringa formata a piacimento da valori di data e non dal numero di ore-min-sec.

    per esempio se il numero fosse il 99000 indicato da te date() ti renderebbe:

    1970-01-02 04:30:00

    cioe' 99000 e' il numero dei secondi passati alle ore 4.30 del 2 gennaio 1970 a partire dalla
    Unix Epoch (January 1 1970 00:00:00 GMT).

    Insomma tratta 99000 come data unix timestamp e non come il risultato di una sottrazione di valori espressi in secondi di cui tu vuoi conoscere la durata in ore-min-sec.

    Ovviamente se stai al di sotto delle 24 ore i numerelli ora-min-sec li segnera' corretti, ma se il tuo numerello superasse le 24 ore ecco che avresti il riporto ad 1 giorno, 0 ore, etc.

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

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.